From 49bd539a70f64121391e6ba30a21de85b9dbaefa Mon Sep 17 00:00:00 2001 From: awssdkgo Date: Thu, 13 Jun 2019 19:34:50 +0000 Subject: [PATCH] Release v1.20.0 --- CHANGELOG.md | 24 + CHANGELOG_PENDING.md | 8 - aws/version.go | 2 +- models/apis/appmesh/2019-01-25/api-2.json | 63 +- models/apis/appmesh/2019-01-25/docs-2.json | 108 ++-- models/apis/ec2/2016-11-15/api-2.json | 7 + models/apis/elasticache/2015-02-02/api-2.json | 1 + .../apis/elasticache/2015-02-02/docs-2.json | 3 +- models/apis/guardduty/2017-11-28/api-2.json | 168 ++++++ models/apis/guardduty/2017-11-28/docs-2.json | 75 +++ .../guardduty/2017-11-28/paginators-1.json | 21 +- service/appmesh/api.go | 167 +++++- service/appmesh/doc.go | 8 +- service/ec2/api.go | 21 + service/elasticache/api.go | 11 +- service/guardduty/api.go | 542 ++++++++++++++++++ service/guardduty/guarddutyiface/interface.go | 12 + 17 files changed, 1171 insertions(+), 70 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06d726be067..fc1e4b7e116 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,27 @@ +Release v1.20.0 (2019-06-13) +=== + +### Service Client Updates +* `service/appmesh`: Updates service API and documentation +* `service/ec2`: Updates service API + * G4 instances are Amazon EC2 instances based on NVIDIA T4 GPUs and are designed to provide cost-effective machine learning inference for applications, like image classification, object detection, recommender systems, automated speech recognition, and language translation. G4 instances are also a cost-effective platform for building and running graphics-intensive applications, such as remote graphics workstations, video transcoding, photo-realistic design, and game streaming in the cloud. To get started with G4 instances visit https://aws.amazon.com/ec2/instance-types/g4. +* `service/elasticache`: Updates service API and documentation + * This release is to add support for reader endpoint for cluster-mode disabled Amazon ElastiCache for Redis clusters. +* `service/guardduty`: Updates service API, documentation, and paginators + * Support for tagging functionality in Create and Get operations for Detector, IP Set, Threat Intel Set, and Finding Filter resources and 3 new tagging APIs: ListTagsForResource, TagResource, and UntagResource. + +### SDK Features + +* `aws/session`: Add support for chaining assume IAM role from shared config ([#2579](https://github.com/aws/aws-sdk-go/pull/2579)) + * Adds support chaining assume role credentials from the shared config/credentials files. This change allows you to create an assume role chain of multiple levels of assumed IAM roles. The config profile the deepest in the chain must use static credentials, or `credential_source`. If the deepest profile doesn't have either of these the session will fail to load. + * Fixes the SDK's shared config credential source not assuming a role with environment and ECS credentials. EC2 credentials were already supported. + * Fix [#2528](https://github.com/aws/aws-sdk-go/issue/2528) + * Fix [#2385](https://github.com/aws/aws-sdk-go/issue/2385) + +### SDK Enhancements +* `service/s3/s3manager/s3manageriface`: Add missing methods ([#2612](https://github.com/aws/aws-sdk-go/pull/2612)) + * Adds the missing interface and methods from the `s3manager` Uploader, Downloader, and Batch Delete utilities. + Release v1.19.49 (2019-06-12) === diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 82d5eb5dec7..8a1927a39ca 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -1,13 +1,5 @@ ### SDK Features -* `aws/session`: Add support for chaining assume IAM role from shared config ([#2579](https://github.com/aws/aws-sdk-go/pull/2579)) - * Adds support chaining assume role credentials from the shared config/credentials files. This change allows you to create an assume role chain of multiple levels of assumed IAM roles. The config profile the deepest in the chain must use static credentials, or `credential_source`. If the deepest profile doesn't have either of these the session will fail to load. - * Fixes the SDK's shared config credential source not assuming a role with environment and ECS credentials. EC2 credentials were already supported. - * Fix [#2528](https://github.com/aws/aws-sdk-go/issue/2528) - * Fix [#2385](https://github.com/aws/aws-sdk-go/issue/2385) - ### SDK Enhancements -* `service/s3/s3manager/s3manageriface`: Add missing methods ([#2612](https://github.com/aws/aws-sdk-go/pull/2612)) - * Adds the missing interface and methods from the `s3manager` Uploader, Downloader, and Batch Delete utilities. ### SDK Bugs diff --git a/aws/version.go b/aws/version.go index 9527bcfabaa..076619a3651 100644 --- a/aws/version.go +++ b/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.19.49" +const SDKVersion = "1.20.0" diff --git a/models/apis/appmesh/2019-01-25/api-2.json b/models/apis/appmesh/2019-01-25/api-2.json index e986e3ccd44..dfe70e95bb3 100644 --- a/models/apis/appmesh/2019-01-25/api-2.json +++ b/models/apis/appmesh/2019-01-25/api-2.json @@ -1677,6 +1677,12 @@ "min": 1, "max": 255 }, + "AwsCloudMapInstanceAttributes": { + "type": "list", + "member": { + "shape": "AwsCloudMapInstanceAttribute" + } + }, "VirtualNodeRef": { "type": "structure", "required": [ @@ -1729,6 +1735,12 @@ }, "payload": "virtualNode" }, + "AwsCloudMapName": { + "type": "string", + "min": 1, + "max": 1024, + "pattern": "((?=^.{1,127}$)^([a-zA-Z0-9_][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9_]|[a-zA-Z0-9])(.([a-zA-Z0-9_][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9_]|[a-zA-Z0-9]))*$)|(^.$)" + }, "LimitExceededException": { "type": "structure", "members": { @@ -1859,6 +1871,21 @@ "type": "structure", "members": { } }, + "AwsCloudMapInstanceAttribute": { + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": { + "shape": "AwsCloudMapInstanceAttributeKey" + }, + "value": { + "shape": "AwsCloudMapInstanceAttributeValue" + } + } + }, "VirtualServiceSpec": { "type": "structure", "members": { @@ -2150,11 +2177,14 @@ "min": 1, "max": 255 }, + "AwsCloudMapInstanceAttributeKey": { + "type": "string", + "min": 1, + "max": 255, + "pattern": "^[a-zA-Z0-9!-~]+$" + }, "VirtualRouterSpec": { "type": "structure", - "required": [ - "listeners" - ], "members": { "listeners": { "shape": "VirtualRouterListeners" @@ -2360,6 +2390,12 @@ } } }, + "AwsCloudMapInstanceAttributeValue": { + "type": "string", + "min": 1, + "max": 1024, + "pattern": "^([a-zA-Z0-9!-~][ ta-zA-Z0-9!-~]*){0,1}[a-zA-Z0-9!-~]{0,1}$" + }, "WeightedTarget": { "type": "structure", "required": [ @@ -2719,6 +2755,24 @@ "String": { "type": "string" }, + "AwsCloudMapServiceDiscovery": { + "type": "structure", + "required": [ + "namespaceName", + "serviceName" + ], + "members": { + "attributes": { + "shape": "AwsCloudMapInstanceAttributes" + }, + "namespaceName": { + "shape": "AwsCloudMapName" + }, + "serviceName": { + "shape": "AwsCloudMapName" + } + } + }, "UpdateVirtualServiceOutput": { "type": "structure", "required": [ @@ -2931,6 +2985,9 @@ "ServiceDiscovery": { "type": "structure", "members": { + "awsCloudMap": { + "shape": "AwsCloudMapServiceDiscovery" + }, "dns": { "shape": "DnsServiceDiscovery" } diff --git a/models/apis/appmesh/2019-01-25/docs-2.json b/models/apis/appmesh/2019-01-25/docs-2.json index 0582ff61baa..99f08634d44 100644 --- a/models/apis/appmesh/2019-01-25/docs-2.json +++ b/models/apis/appmesh/2019-01-25/docs-2.json @@ -1,13 +1,13 @@ { "version": "2.0", - "service": "

AWS App Mesh is a service mesh based on the Envoy proxy that makes it easy to monitor and\n control microservices. App Mesh standardizes how your microservices communicate, giving you\n end-to-end visibility and helping to ensure high availability for your applications.

\n

App Mesh gives you consistent visibility and network traffic controls for every\n microservice in an application. You can use App Mesh with AWS Fargate, Amazon ECS, Amazon EKS, and\n Kubernetes on AWS.

\n \n

App Mesh supports microservice applications that use service discovery naming for their\n components. To use App Mesh, you must have an application running on Amazon EC2 instances,\n hosted in either Amazon ECS, Amazon EKS, or Kubernetes on AWS. For more information about\n service discovery on Amazon ECS, see Service\n Discovery in the Amazon Elastic Container Service Developer Guide. Kubernetes\n kube-dns and coredns are supported. For more information,\n see DNS\n for Services and Pods in the Kubernetes documentation.

\n
", + "service": "

AWS App Mesh is a service mesh based on the Envoy proxy that makes it easy to monitor and\n control microservices. App Mesh standardizes how your microservices communicate, giving you\n end-to-end visibility and helping to ensure high availability for your applications.

\n

App Mesh gives you consistent visibility and network traffic controls for every\n microservice in an application. You can use App Mesh with AWS Fargate, Amazon ECS, Amazon EKS,\n Kubernetes on AWS, and Amazon EC2.

\n \n

App Mesh supports microservice applications that use service discovery naming for their\n components. For more information about service discovery on Amazon ECS, see Service Discovery in the\n Amazon Elastic Container Service Developer Guide. Kubernetes kube-dns and\n coredns are supported. For more information, see DNS\n for Services and Pods in the Kubernetes documentation.

\n
", "operations": { - "CreateMesh": "

Creates a service mesh. A service mesh is a logical boundary for network traffic\n between the services that reside within it.

\n

After you create your service mesh, you can create virtual services, virtual nodes,\n virtual routers, and routes to distribute traffic between the applications in your\n mesh.

", + "CreateMesh": "

Creates a service mesh. A service mesh is a logical boundary for network traffic between\n the services that reside within it.

\n

After you create your service mesh, you can create virtual services, virtual nodes,\n virtual routers, and routes to distribute traffic between the applications in your\n mesh.

", "CreateRoute": "

Creates a route that is associated with a virtual router.

\n

You can use the prefix parameter in your route specification for path-based\n routing of requests. For example, if your virtual service name is\n my-service.local and you want the route to match requests to\n my-service.local/metrics, your prefix should be\n /metrics.

\n

If your route matches a request, you can distribute traffic to one or more target\n virtual nodes with relative weighting.

", - "CreateVirtualNode": "

Creates a virtual node within a service mesh.

\n

A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS\n service or a Kubernetes deployment. When you create a virtual node, you must specify the\n DNS service discovery hostname for your task group.

\n

Any inbound traffic that your virtual node expects should be specified as a\n listener. Any outbound traffic that your virtual node expects to reach\n should be specified as a backend.

\n

The response metadata for your new virtual node contains the arn that is\n associated with the virtual node. Set this value (either the full ARN or the truncated\n resource name: for example, mesh/default/virtualNode/simpleapp) as the\n APPMESH_VIRTUAL_NODE_NAME environment variable for your task group's Envoy\n proxy container in your task definition or pod spec. This is then mapped to the\n node.id and node.cluster Envoy parameters.

\n \n

If you require your Envoy stats or tracing to use a different name, you can override\n the node.cluster value that is set by\n APPMESH_VIRTUAL_NODE_NAME with the\n APPMESH_VIRTUAL_NODE_CLUSTER environment variable.

\n
", + "CreateVirtualNode": "

Creates a virtual node within a service mesh.

\n

A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS\n service or a Kubernetes deployment. When you create a virtual node, you can specify the\n service discovery information for your task group.

\n

Any inbound traffic that your virtual node expects should be specified as a\n listener. Any outbound traffic that your virtual node expects to reach\n should be specified as a backend.

\n

The response metadata for your new virtual node contains the arn that is\n associated with the virtual node. Set this value (either the full ARN or the truncated\n resource name: for example, mesh/default/virtualNode/simpleapp) as the\n APPMESH_VIRTUAL_NODE_NAME environment variable for your task group's Envoy\n proxy container in your task definition or pod spec. This is then mapped to the\n node.id and node.cluster Envoy parameters.

\n \n

If you require your Envoy stats or tracing to use a different name, you can override\n the node.cluster value that is set by\n APPMESH_VIRTUAL_NODE_NAME with the\n APPMESH_VIRTUAL_NODE_CLUSTER environment variable.

\n
", "CreateVirtualRouter": "

Creates a virtual router within a service mesh.

\n

Any inbound traffic that your virtual router expects should be specified as a\n listener.

\n

Virtual routers handle traffic for one or more virtual services within your mesh. After\n you create your virtual router, create and associate routes for your virtual router that\n direct incoming requests to different virtual nodes.

", - "CreateVirtualService": "

Creates a virtual service within a service mesh.

\n

A virtual service is an abstraction of a real service that is provided by a\n virtual node directly or indirectly by means of a virtual router. Dependent services call\n your virtual service by its virtualServiceName, and those requests are routed\n to the virtual node or virtual router that is specified as the provider for the virtual\n service.

", - "DeleteMesh": "

Deletes an existing service mesh.

\n

You must delete all resources (virtual services, routes, virtual routers, and virtual nodes)\n in the service mesh before you can delete the mesh itself.

", + "CreateVirtualService": "

Creates a virtual service within a service mesh.

\n

A virtual service is an abstraction of a real service that is provided by a virtual node\n directly or indirectly by means of a virtual router. Dependent services call your virtual\n service by its virtualServiceName, and those requests are routed to the\n virtual node or virtual router that is specified as the provider for the virtual\n service.

", + "DeleteMesh": "

Deletes an existing service mesh.

\n

You must delete all resources (virtual services, routes, virtual routers, and virtual\n nodes) in the service mesh before you can delete the mesh itself.

", "DeleteRoute": "

Deletes an existing route.

", "DeleteVirtualNode": "

Deletes an existing virtual node.

\n

You must delete any virtual services that list a virtual node as a service provider\n before you can delete the virtual node itself.

", "DeleteVirtualRouter": "

Deletes an existing virtual router.

\n

You must delete any routes associated with the virtual router before you can delete the\n router itself.

", @@ -23,7 +23,7 @@ "ListVirtualNodes": "

Returns a list of existing virtual nodes.

", "ListVirtualRouters": "

Returns a list of existing virtual routers in a service mesh.

", "ListVirtualServices": "

Returns a list of existing virtual services in a service mesh.

", - "TagResource": "

Associates the specified tags to a resource with the specified\n resourceArn. If existing tags on a resource aren't specified in the\n request parameters, they aren't changed. When a resource is deleted, the tags\n associated with that resource are also deleted.

", + "TagResource": "

Associates the specified tags to a resource with the specified resourceArn.\n If existing tags on a resource aren't specified in the request parameters, they aren't\n changed. When a resource is deleted, the tags associated with that resource are also\n deleted.

", "UntagResource": "

Deletes specified tags from a resource.

", "UpdateMesh": "

Updates an existing service mesh.

", "UpdateRoute": "

Updates an existing route for a specified service mesh and virtual router.

", @@ -42,6 +42,39 @@ "base": null, "refs": { } }, + "AwsCloudMapInstanceAttribute": { + "base": "

An object representing the AWS Cloud Map attribute information for your virtual node.

", + "refs": { + "AwsCloudMapInstanceAttribute$key": "

The name of an AWS Cloud Map service instance attribute key. Any AWS Cloud Map service instance\n that contains the specified key and value is returned.

", + "AwsCloudMapInstanceAttribute$value": "

The value of an AWS Cloud Map service instance attribute key. Any AWS Cloud Map service\n instance that contains the specified key and value is returned.

" + } + }, + "AwsCloudMapInstanceAttributeKey": { + "base": null, + "refs": { } + }, + "AwsCloudMapInstanceAttributeValue": { + "base": null, + "refs": { } + }, + "AwsCloudMapInstanceAttributes": { + "base": null, + "refs": { + "AwsCloudMapInstanceAttributes$member": null + } + }, + "AwsCloudMapName": { + "base": null, + "refs": { } + }, + "AwsCloudMapServiceDiscovery": { + "base": "

An object representing the AWS Cloud Map service discovery information for your virtual\n node.

", + "refs": { + "AwsCloudMapServiceDiscovery$attributes": "

A string map that contains attributes with values that you can use to filter instances\n by any custom attribute that you specified when you registered the instance. Only instances\n that match all of the specified key/value pairs will be returned.

", + "AwsCloudMapServiceDiscovery$namespaceName": "

The name of the AWS Cloud Map namespace to use.

", + "AwsCloudMapServiceDiscovery$serviceName": "

The name of the AWS Cloud Map service to use.

" + } + }, "Backend": { "base": "

An object representing the backends that a virtual node is expected to send outbound\n traffic to.

", "refs": { @@ -68,7 +101,7 @@ "CreateMeshInput$clientToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.

", "CreateMeshInput$meshName": "

The name to use for the service mesh.

", "CreateMeshInput$spec": "

The service mesh specification to apply.

", - "CreateMeshInput$tags": "

Optional metadata that you can apply to the service mesh to assist with categorization and organization.\n Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

" + "CreateMeshInput$tags": "

Optional metadata that you can apply to the service mesh to assist with categorization\n and organization. Each tag consists of a key and an optional value, both of which you\n define. Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

" } }, "CreateMeshOutput": { @@ -84,7 +117,7 @@ "CreateRouteInput$meshName": "

The name of the service mesh to create the route in.

", "CreateRouteInput$routeName": "

The name to use for the route.

", "CreateRouteInput$spec": "

The route specification to apply.

", - "CreateRouteInput$tags": "

Optional metadata that you can apply to the route to assist with categorization and organization.\n Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", + "CreateRouteInput$tags": "

Optional metadata that you can apply to the route to assist with categorization and\n organization. Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", "CreateRouteInput$virtualRouterName": "

The name of the virtual router in which to create the route.

" } }, @@ -100,7 +133,7 @@ "CreateVirtualNodeInput$clientToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.

", "CreateVirtualNodeInput$meshName": "

The name of the service mesh to create the virtual node in.

", "CreateVirtualNodeInput$spec": "

The virtual node specification to apply.

", - "CreateVirtualNodeInput$tags": "

Optional metadata that you can apply to the virtual node to assist with categorization and organization.\n Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", + "CreateVirtualNodeInput$tags": "

Optional metadata that you can apply to the virtual node to assist with categorization\n and organization. Each tag consists of a key and an optional value, both of which you\n define. Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", "CreateVirtualNodeInput$virtualNodeName": "

The name to use for the virtual node.

" } }, @@ -116,7 +149,7 @@ "CreateVirtualRouterInput$clientToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.

", "CreateVirtualRouterInput$meshName": "

The name of the service mesh to create the virtual router in.

", "CreateVirtualRouterInput$spec": "

The virtual router specification to apply.

", - "CreateVirtualRouterInput$tags": "

Optional metadata that you can apply to the virtual router to assist with categorization and organization.\n Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", + "CreateVirtualRouterInput$tags": "

Optional metadata that you can apply to the virtual router to assist with categorization\n and organization. Each tag consists of a key and an optional value, both of which you\n define. Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", "CreateVirtualRouterInput$virtualRouterName": "

The name to use for the virtual router.

" } }, @@ -132,7 +165,7 @@ "CreateVirtualServiceInput$clientToken": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.

", "CreateVirtualServiceInput$meshName": "

The name of the service mesh to create the virtual service in.

", "CreateVirtualServiceInput$spec": "

The virtual service specification to apply.

", - "CreateVirtualServiceInput$tags": "

Optional metadata that you can apply to the virtual service to assist with categorization and organization.\n Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", + "CreateVirtualServiceInput$tags": "

Optional metadata that you can apply to the virtual service to assist with\n categorization and organization. Each tag consists of a key and an optional value, both of\n which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", "CreateVirtualServiceInput$virtualServiceName": "

The name to use for the virtual service.

" } }, @@ -281,7 +314,7 @@ "EgressFilter": { "base": "

An object representing the egress filter rules for a service mesh.

", "refs": { - "EgressFilter$type": "

The egress filter type. By default, the type is DROP_ALL, which allows\n egress only from virtual nodes to other defined resources in the service mesh (and any traffic\n to *.amazonaws.com for AWS API calls). You can set the egress filter type to\n ALLOW_ALL to allow egress to any endpoint inside or outside of the service\n mesh.

" + "EgressFilter$type": "

The egress filter type. By default, the type is DROP_ALL, which allows\n egress only from virtual nodes to other defined resources in the service mesh (and any\n traffic to *.amazonaws.com for AWS API calls). You can set the egress filter\n type to ALLOW_ALL to allow egress to any endpoint inside or outside of the\n service mesh.

" } }, "EgressFilterType": { @@ -291,7 +324,7 @@ "FileAccessLog": { "base": "

An object representing an access log file.

", "refs": { - "FileAccessLog$path": "

The file path to write access logs to. You can use /dev/stdout to send\n access logs to standard out and configure your Envoy container to use a log driver, such as\n awslogs, to export the access logs to a log storage service such as Amazon CloudWatch\n Logs. You can also specify a path in the Envoy container's file system to write the files\n to disk.

\n \n

The Envoy process must have write permissions to the path that you specify here.\n Otherwise, Envoy fails to bootstrap properly.

\n
" + "FileAccessLog$path": "

The file path to write access logs to. You can use /dev/stdout to send\n access logs to standard out and configure your Envoy container to use a log driver, such as\n awslogs, to export the access logs to a log storage service such as Amazon\n CloudWatch Logs. You can also specify a path in the Envoy container's file system to write\n the files to disk.

\n \n

The Envoy process must have write permissions to the path that you specify here.\n Otherwise, Envoy fails to bootstrap properly.

\n
" } }, "FilePath": { @@ -350,18 +383,18 @@ } }, "InternalServerErrorException": { - "base": "

The request processing has failed because of an unknown error, exception, or failure.

", + "base": "

The request processing has failed because of an unknown error, exception, or\n failure.

", "refs": { } }, "LimitExceededException": { - "base": "

You have exceeded a service limit for your account. For more information, see Service Limits in the AWS App Mesh User Guide.

", + "base": "

You have exceeded a service limit for your account. For more information, see Service\n Limits in the AWS App Mesh User Guide.

", "refs": { } }, "ListMeshesInput": { "base": "", "refs": { - "ListMeshesInput$limit": "

The maximum number of results returned by ListMeshes in paginated output.\n When you use this parameter, ListMeshes returns only limit\n results in a single page along with a nextToken response element. You can see the\n remaining results of the initial request by sending another\n ListMeshes request with the returned nextToken value. This\n value can be between 1 and 100. If you don't use this parameter,\n ListMeshes returns up to 100 results and a\n nextToken value if applicable.

", - "ListMeshesInput$nextToken": "

The nextToken value returned from a previous paginated\n ListMeshes request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

\n \n

This token should be treated as an opaque identifier that is used only to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" + "ListMeshesInput$limit": "

The maximum number of results returned by ListMeshes in paginated output.\n When you use this parameter, ListMeshes returns only limit\n results in a single page along with a nextToken response element. You can see\n the remaining results of the initial request by sending another ListMeshes\n request with the returned nextToken value. This value can be between\n 1 and 100. If you don't use this parameter,\n ListMeshes returns up to 100 results and a\n nextToken value if applicable.

", + "ListMeshesInput$nextToken": "

The nextToken value returned from a previous paginated\n ListMeshes request where limit was used and the results\n exceeded the value of that parameter. Pagination continues from the end of the previous\n results that returned the nextToken value.

\n \n

This token should be treated as an opaque identifier that is used only to\n retrieve the next items in a list and not for other programmatic purposes.

\n
" } }, "ListMeshesLimit": { @@ -372,15 +405,15 @@ "base": "", "refs": { "ListMeshesOutput$meshes": "

The list of existing service meshes.

", - "ListMeshesOutput$nextToken": "

The nextToken value to include in a future ListMeshes\n request. When the results of a ListMeshes request exceed\n limit, you can use this value to retrieve the next page of\n results. This value is null when there are no more results to\n return.

" + "ListMeshesOutput$nextToken": "

The nextToken value to include in a future ListMeshes request.\n When the results of a ListMeshes request exceed limit, you can\n use this value to retrieve the next page of results. This value is null when\n there are no more results to return.

" } }, "ListRoutesInput": { "base": "", "refs": { - "ListRoutesInput$limit": "

The maximum number of results returned by ListRoutes in paginated output.\n When you use this parameter, ListRoutes returns only limit\n results in a single page along with a nextToken response element. You can see the\n remaining results of the initial request by sending another\n ListRoutes request with the returned nextToken value. This\n value can be between 1 and 100. If you don't use this parameter,\n ListRoutes returns up to 100 results and a\n nextToken value if applicable.

", + "ListRoutesInput$limit": "

The maximum number of results returned by ListRoutes in paginated output.\n When you use this parameter, ListRoutes returns only limit\n results in a single page along with a nextToken response element. You can see\n the remaining results of the initial request by sending another ListRoutes\n request with the returned nextToken value. This value can be between\n 1 and 100. If you don't use this parameter,\n ListRoutes returns up to 100 results and a\n nextToken value if applicable.

", "ListRoutesInput$meshName": "

The name of the service mesh to list routes in.

", - "ListRoutesInput$nextToken": "

The nextToken value returned from a previous paginated\n ListRoutes request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

", + "ListRoutesInput$nextToken": "

The nextToken value returned from a previous paginated\n ListRoutes request where limit was used and the results\n exceeded the value of that parameter. Pagination continues from the end of the previous\n results that returned the nextToken value.

", "ListRoutesInput$virtualRouterName": "

The name of the virtual router to list routes in.

" } }, @@ -391,31 +424,31 @@ "ListRoutesOutput": { "base": "", "refs": { - "ListRoutesOutput$nextToken": "

The nextToken value to include in a future ListRoutes\n request. When the results of a ListRoutes request exceed\n limit, you can use this value to retrieve the next page of\n results. This value is null when there are no more results to\n return.

", + "ListRoutesOutput$nextToken": "

The nextToken value to include in a future ListRoutes request.\n When the results of a ListRoutes request exceed limit, you can\n use this value to retrieve the next page of results. This value is null when\n there are no more results to return.

", "ListRoutesOutput$routes": "

The list of existing routes for the specified service mesh and virtual router.

" } }, "ListTagsForResourceInput": { "base": "", "refs": { - "ListTagsForResourceInput$limit": "

The maximum number of tag results returned by ListTagsForResource in\n paginated output. When this parameter is used, ListTagsForResource returns only\n limit results in a single page along with a nextToken\n response element. You can see the remaining results of the initial request by sending\n another ListTagsForResource request with the returned nextToken\n value. This value can be between 1 and 100. If you don't use this\n parameter, ListTagsForResource returns up to\n 100 results and a nextToken value if applicable.

", - "ListTagsForResourceInput$nextToken": "

The nextToken value returned from a previous paginated\n ListTagsForResource request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

", + "ListTagsForResourceInput$limit": "

The maximum number of tag results returned by ListTagsForResource in\n paginated output. When this parameter is used, ListTagsForResource returns\n only limit results in a single page along with a nextToken\n response element. You can see the remaining results of the initial request by sending\n another ListTagsForResource request with the returned nextToken\n value. This value can be between 1 and 100. If you don't use\n this parameter, ListTagsForResource returns up to 100\n results and a nextToken value if applicable.

", + "ListTagsForResourceInput$nextToken": "

The nextToken value returned from a previous paginated\n ListTagsForResource request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

", "ListTagsForResourceInput$resourceArn": "

The Amazon Resource Name (ARN) that identifies the resource to list the tags for.

" } }, "ListTagsForResourceOutput": { "base": "", "refs": { - "ListTagsForResourceOutput$nextToken": "

The nextToken value to include in a future ListTagsForResource\n request. When the results of a ListTagsForResource request exceed\n limit, you can use this value to retrieve the next page of\n results. This value is null when there are no more results to\n return.

", + "ListTagsForResourceOutput$nextToken": "

The nextToken value to include in a future ListTagsForResource\n request. When the results of a ListTagsForResource request exceed\n limit, you can use this value to retrieve the next page of results. This\n value is null when there are no more results to return.

", "ListTagsForResourceOutput$tags": "

The tags for the resource.

" } }, "ListVirtualNodesInput": { "base": "", "refs": { - "ListVirtualNodesInput$limit": "

The maximum number of results returned by ListVirtualNodes in paginated\n output. When you use this parameter, ListVirtualNodes returns only\n limit results in a single page along with a nextToken response\n element. You can see the remaining results of the initial request by sending another\n ListVirtualNodes request with the returned nextToken value.\n This value can be between 1 and 100. If you don't use this parameter,\n ListVirtualNodes returns up to 100 results and a\n nextToken value if applicable.

", + "ListVirtualNodesInput$limit": "

The maximum number of results returned by ListVirtualNodes in paginated\n output. When you use this parameter, ListVirtualNodes returns only\n limit results in a single page along with a nextToken response\n element. You can see the remaining results of the initial request by sending another\n ListVirtualNodes request with the returned nextToken value.\n This value can be between 1 and 100. If you don't use this\n parameter, ListVirtualNodes returns up to 100 results and a\n nextToken value if applicable.

", "ListVirtualNodesInput$meshName": "

The name of the service mesh to list virtual nodes in.

", - "ListVirtualNodesInput$nextToken": "

The nextToken value returned from a previous paginated\n ListVirtualNodes request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

" + "ListVirtualNodesInput$nextToken": "

The nextToken value returned from a previous paginated\n ListVirtualNodes request where limit was used and the results\n exceeded the value of that parameter. Pagination continues from the end of the previous\n results that returned the nextToken value.

" } }, "ListVirtualNodesLimit": { @@ -425,16 +458,16 @@ "ListVirtualNodesOutput": { "base": "", "refs": { - "ListVirtualNodesOutput$nextToken": "

The nextToken value to include in a future ListVirtualNodes\n request. When the results of a ListVirtualNodes request exceed\n limit, you can use this value to retrieve the next page of\n results. This value is null when there are no more results to\n return.

", + "ListVirtualNodesOutput$nextToken": "

The nextToken value to include in a future ListVirtualNodes\n request. When the results of a ListVirtualNodes request exceed\n limit, you can use this value to retrieve the next page of results. This\n value is null when there are no more results to return.

", "ListVirtualNodesOutput$virtualNodes": "

The list of existing virtual nodes for the specified service mesh.

" } }, "ListVirtualRoutersInput": { "base": "", "refs": { - "ListVirtualRoutersInput$limit": "

The maximum number of results returned by ListVirtualRouters in paginated\n output. When you use this parameter, ListVirtualRouters returns only\n limit results in a single page along with a nextToken response\n element. You can see the remaining results of the initial request by sending another\n ListVirtualRouters request with the returned nextToken value.\n This value can be between 1 and 100. If you don't use this parameter, \n ListVirtualRouters returns up to 100 results and\n a nextToken value if applicable.

", + "ListVirtualRoutersInput$limit": "

The maximum number of results returned by ListVirtualRouters in paginated\n output. When you use this parameter, ListVirtualRouters returns only\n limit results in a single page along with a nextToken response\n element. You can see the remaining results of the initial request by sending another\n ListVirtualRouters request with the returned nextToken value.\n This value can be between 1 and 100. If you don't use this\n parameter, ListVirtualRouters returns up to 100 results and\n a nextToken value if applicable.

", "ListVirtualRoutersInput$meshName": "

The name of the service mesh to list virtual routers in.

", - "ListVirtualRoutersInput$nextToken": "

The nextToken value returned from a previous paginated\n ListVirtualRouters request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

" + "ListVirtualRoutersInput$nextToken": "

The nextToken value returned from a previous paginated\n ListVirtualRouters request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

" } }, "ListVirtualRoutersLimit": { @@ -444,14 +477,14 @@ "ListVirtualRoutersOutput": { "base": "", "refs": { - "ListVirtualRoutersOutput$nextToken": "

The nextToken value to include in a future ListVirtualRouters\n request. When the results of a ListVirtualRouters request exceed\n limit, you can use this value to retrieve the next page of\n results. This value is null when there are no more results to\n return.

", + "ListVirtualRoutersOutput$nextToken": "

The nextToken value to include in a future ListVirtualRouters\n request. When the results of a ListVirtualRouters request exceed\n limit, you can use this value to retrieve the next page of results. This\n value is null when there are no more results to return.

", "ListVirtualRoutersOutput$virtualRouters": "

The list of existing virtual routers for the specified service mesh.

" } }, "ListVirtualServicesInput": { "base": "", "refs": { - "ListVirtualServicesInput$limit": "

The maximum number of results returned by ListVirtualServices in paginated\n output. When you use this parameter, ListVirtualServices returns only\n limit results in a single page along with a nextToken response\n element. You can see the remaining results of the initial request by sending another\n ListVirtualServices request with the returned nextToken value.\n This value can be between 1 and 100. If you don't use this parameter,\n ListVirtualServices returns up to 100 results and\n a nextToken value if applicable.

", + "ListVirtualServicesInput$limit": "

The maximum number of results returned by ListVirtualServices in paginated\n output. When you use this parameter, ListVirtualServices returns only\n limit results in a single page along with a nextToken response\n element. You can see the remaining results of the initial request by sending another\n ListVirtualServices request with the returned nextToken value.\n This value can be between 1 and 100. If you don't use this\n parameter, ListVirtualServices returns up to 100 results and\n a nextToken value if applicable.

", "ListVirtualServicesInput$meshName": "

The name of the service mesh to list virtual services in.

", "ListVirtualServicesInput$nextToken": "

The nextToken value returned from a previous paginated\n ListVirtualServices request where limit was used and the\n results exceeded the value of that parameter. Pagination continues from the end of the\n previous results that returned the nextToken value.

" } @@ -552,7 +585,7 @@ "refs": { } }, "ResourceInUseException": { - "base": "

You can't delete the specified resource because it's in use or required by another resource.

", + "base": "

You can't delete the specified resource because it's in use or required by another\n resource.

", "refs": { } }, "ResourceMetadata": { @@ -615,6 +648,7 @@ "ServiceDiscovery": { "base": "

An object representing the service discovery information for a virtual node.

", "refs": { + "ServiceDiscovery$awsCloudMap": "

Specifies any AWS Cloud Map information for the virtual node.

", "ServiceDiscovery$dns": "

Specifies the DNS information for the virtual node.

" } }, @@ -647,10 +681,10 @@ } }, "TagRef": { - "base": "

Optional metadata that you apply to a resource to assist with categorization and organization.\n Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", + "base": "

Optional metadata that you apply to a resource to assist with categorization and\n organization. Each tag consists of a key and an optional value, both of which you define.\n Tag keys can have a maximum character length of 128 characters, and tag values can have\n a maximum length of 256 characters.

", "refs": { "TagRef$key": "

One part of a key-value pair that make up a tag. A key is a general label\n that acts like a category for more specific tag values.

", - "TagRef$value": "

The optional part of a key-value pair that make up a tag. A value acts as\n a descriptor within a tag category (key).

" + "TagRef$value": "

The optional part of a key-value pair that make up a tag. A value acts as a\n descriptor within a tag category (key).

" } }, "TagResourceInput": { @@ -689,7 +723,7 @@ "refs": { } }, "TooManyRequestsException": { - "base": "

The maximum request rate permitted by the App Mesh APIs has been exceeded for your\n account. For best results, use an increasing or variable sleep interval between requests.

", + "base": "

The maximum request rate permitted by the App Mesh APIs has been exceeded for your\n account. For best results, use an increasing or variable sleep interval between\n requests.

", "refs": { } }, "TooManyTagsException": { @@ -814,7 +848,7 @@ "base": "

An object representing the specification of a virtual node.

", "refs": { "VirtualNodeSpec$backends": "

The backends that the virtual node is expected to send outbound traffic to.

", - "VirtualNodeSpec$listeners": "

The listeners that the virtual node is expected to receive inbound traffic from. Currently only one listener is supported per virtual node.

", + "VirtualNodeSpec$listeners": "

The listeners that the virtual node is expected to receive inbound traffic from.\n Currently only one listener is supported per virtual node.

", "VirtualNodeSpec$logging": "

The inbound and outbound access logging information for the virtual node.

", "VirtualNodeSpec$serviceDiscovery": "

The service discovery information for the virtual node. If your virtual node does not\n expect ingress traffic, you can omit this parameter.

" } @@ -872,7 +906,7 @@ "VirtualRouterSpec": { "base": "

An object representing the specification of a virtual router.

", "refs": { - "VirtualRouterSpec$listeners": "

The listeners that the virtual router is expected to receive inbound traffic from. Currently only one listener is supported per virtual router.

" + "VirtualRouterSpec$listeners": "

The listeners that the virtual router is expected to receive inbound traffic from.\n Currently only one listener is supported per virtual router.

" } }, "VirtualRouterStatus": { diff --git a/models/apis/ec2/2016-11-15/api-2.json b/models/apis/ec2/2016-11-15/api-2.json index 4b2ee76cab1..6803b78b68a 100755 --- a/models/apis/ec2/2016-11-15/api-2.json +++ b/models/apis/ec2/2016-11-15/api-2.json @@ -14659,6 +14659,13 @@ "g3.8xlarge", "g3.16xlarge", "g3s.xlarge", + "g4dn.xlarge", + "g4dn.2xlarge", + "g4dn.4xlarge", + "g4dn.8xlarge", + "g4dn.12xlarge", + "g4dn.16xlarge", + "g4dn.metal", "cg1.4xlarge", "p2.xlarge", "p2.8xlarge", diff --git a/models/apis/elasticache/2015-02-02/api-2.json b/models/apis/elasticache/2015-02-02/api-2.json index d3114034572..8e406b6a4a1 100644 --- a/models/apis/elasticache/2015-02-02/api-2.json +++ b/models/apis/elasticache/2015-02-02/api-2.json @@ -2181,6 +2181,7 @@ "NodeGroupId":{"shape":"String"}, "Status":{"shape":"String"}, "PrimaryEndpoint":{"shape":"Endpoint"}, + "ReaderEndpoint":{"shape":"Endpoint"}, "Slots":{"shape":"String"}, "NodeGroupMembers":{"shape":"NodeGroupMemberList"} } diff --git a/models/apis/elasticache/2015-02-02/docs-2.json b/models/apis/elasticache/2015-02-02/docs-2.json index 1fc4065bcbf..0aca9af32dd 100644 --- a/models/apis/elasticache/2015-02-02/docs-2.json +++ b/models/apis/elasticache/2015-02-02/docs-2.json @@ -4,7 +4,7 @@ "operations": { "AddTagsToResource": "

Adds up to 50 cost allocation tags to the named resource. A cost allocation tag is a key-value pair where the key and value are case-sensitive. You can use cost allocation tags to categorize and track your AWS costs.

When you apply tags to your ElastiCache resources, AWS generates a cost allocation report as a comma-separated value (CSV) file with your usage and costs aggregated by your tags. You can apply tags that represent business categories (such as cost centers, application names, or owners) to organize your costs across multiple services. For more information, see Using Cost Allocation Tags in Amazon ElastiCache in the ElastiCache User Guide.

", "AuthorizeCacheSecurityGroupIngress": "

Allows network ingress to a cache security group. Applications using ElastiCache must be running on Amazon EC2, and Amazon EC2 security groups are used as the authorization mechanism.

You cannot authorize ingress from an Amazon EC2 security group in one region to an ElastiCache cluster in another region.

", - "BatchApplyUpdateAction": "

Apply the service update. For more information on service updates and applying them, see Applying Service Updates.

", + "BatchApplyUpdateAction": "

Apply the service update. For more information on service updates and applying them, see Applying Service Updates.

", "BatchStopUpdateAction": "

Stop the service update. For more information on service updates and stopping them, see Stopping Service Updates.

", "CopySnapshot": "

Makes a copy of an existing snapshot.

This operation is valid for Redis only.

Users or groups that have permissions to use the CopySnapshot operation can create their own Amazon S3 buckets and copy snapshots to it. To control access to your snapshots, use an IAM policy to control who has the ability to use the CopySnapshot operation. For more information about using IAM to control the use of ElastiCache operations, see Exporting Snapshots and Authentication & Access Control.

You could receive the following error messages.

Error Messages

", "CreateCacheCluster": "

Creates a cluster. All nodes in the cluster run the same protocol-compliant cache engine software, either Memcached or Redis.

This operation is not supported for Redis (cluster mode enabled) clusters.

", @@ -684,6 +684,7 @@ "CacheCluster$ConfigurationEndpoint": "

Represents a Memcached cluster endpoint which, if Automatic Discovery is enabled on the cluster, can be used by an application to connect to any node in the cluster. The configuration endpoint will always have .cfg in it.

Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211

", "CacheNode$Endpoint": "

The hostname for connecting to this cache node.

", "NodeGroup$PrimaryEndpoint": "

The endpoint of the primary node in this node group (shard).

", + "NodeGroup$ReaderEndpoint": "

The endpoint of the replica nodes in this node group (shard).

", "NodeGroupMember$ReadEndpoint": "

The information required for client programs to connect to a node for read operations. The read endpoint is only applicable on Redis (cluster mode disabled) clusters.

", "ReplicationGroup$ConfigurationEndpoint": "

The configuration endpoint for this replication group. Use the configuration endpoint to connect to this replication group.

" } diff --git a/models/apis/guardduty/2017-11-28/api-2.json b/models/apis/guardduty/2017-11-28/api-2.json index 6075d33f114..95ab85fe8ce 100644 --- a/models/apis/guardduty/2017-11-28/api-2.json +++ b/models/apis/guardduty/2017-11-28/api-2.json @@ -474,6 +474,20 @@ {"shape":"InternalServerErrorException"} ] }, + "ListTagsForResource":{ + "name":"ListTagsForResource", + "http":{ + "method":"GET", + "requestUri":"/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"ListTagsForResourceRequest"}, + "output":{"shape":"ListTagsForResourceResponse"}, + "errors":[ + {"shape":"BadRequestException"}, + {"shape":"InternalServerErrorException"} + ] + }, "ListThreatIntelSets":{ "name":"ListThreatIntelSets", "http":{ @@ -516,6 +530,20 @@ {"shape":"InternalServerErrorException"} ] }, + "TagResource":{ + "name":"TagResource", + "http":{ + "method":"POST", + "requestUri":"/tags/{resourceArn}", + "responseCode":204 + }, + "input":{"shape":"TagResourceRequest"}, + "output":{"shape":"TagResourceResponse"}, + "errors":[ + {"shape":"BadRequestException"}, + {"shape":"InternalServerErrorException"} + ] + }, "UnarchiveFindings":{ "name":"UnarchiveFindings", "http":{ @@ -530,6 +558,20 @@ {"shape":"InternalServerErrorException"} ] }, + "UntagResource":{ + "name":"UntagResource", + "http":{ + "method":"DELETE", + "requestUri":"/tags/{resourceArn}", + "responseCode":204 + }, + "input":{"shape":"UntagResourceRequest"}, + "output":{"shape":"UntagResourceResponse"}, + "errors":[ + {"shape":"BadRequestException"}, + {"shape":"InternalServerErrorException"} + ] + }, "UpdateDetector":{ "name":"UpdateDetector", "http":{ @@ -881,6 +923,10 @@ "FindingPublishingFrequency":{ "shape":"FindingPublishingFrequency", "locationName":"findingPublishingFrequency" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, @@ -930,6 +976,10 @@ "shape":"ClientToken", "idempotencyToken":true, "locationName":"clientToken" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, @@ -978,6 +1028,10 @@ "shape":"ClientToken", "idempotencyToken":true, "locationName":"clientToken" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, @@ -1074,6 +1128,10 @@ "shape":"ClientToken", "idempotencyToken":true, "locationName":"clientToken" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, @@ -1572,6 +1630,10 @@ "UpdatedAt":{ "shape":"String", "locationName":"updatedAt" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, @@ -1621,6 +1683,10 @@ "FindingCriteria":{ "shape":"FindingCriteria", "locationName":"findingCriteria" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, @@ -1731,6 +1797,10 @@ "Status":{ "shape":"IpSetStatus", "locationName":"status" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, @@ -1847,9 +1917,17 @@ "Status":{ "shape":"ThreatIntelSetStatus", "locationName":"status" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" } } }, + "GuardDutyArn":{ + "type":"string", + "pattern":"^arn:[A-Za-z_.-]{1,20}:guardduty:[A-Za-z0-9_/.-]{0,63}:\\d+:detector/[A-Za-z0-9_/.-]{32,264}$" + }, "IamInstanceProfile":{ "type":"structure", "members":{ @@ -2239,6 +2317,26 @@ } } }, + "ListTagsForResourceRequest":{ + "type":"structure", + "required":["ResourceArn"], + "members":{ + "ResourceArn":{ + "shape":"GuardDutyArn", + "location":"uri", + "locationName":"resourceArn" + } + } + }, + "ListTagsForResourceResponse":{ + "type":"structure", + "members":{ + "Tags":{ + "shape":"TagMap", + "locationName":"tags" + } + } + }, "ListThreatIntelSetsRequest":{ "type":"structure", "required":["DetectorId"], @@ -2744,6 +2842,52 @@ } } }, + "TagKey":{ + "type":"string", + "max":128, + "min":1, + "pattern":"^(?!aws:)[a-zA-Z+-=._:/]+$" + }, + "TagKeyList":{ + "type":"list", + "member":{"shape":"TagKey"}, + "max":200, + "min":1 + }, + "TagMap":{ + "type":"map", + "key":{"shape":"TagKey"}, + "value":{"shape":"TagValue"}, + "max":200, + "min":1 + }, + "TagResourceRequest":{ + "type":"structure", + "required":[ + "ResourceArn", + "Tags" + ], + "members":{ + "ResourceArn":{ + "shape":"GuardDutyArn", + "location":"uri", + "locationName":"resourceArn" + }, + "Tags":{ + "shape":"TagMap", + "locationName":"tags" + } + } + }, + "TagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "TagValue":{ + "type":"string", + "max":256 + }, "Tags":{ "type":"list", "member":{"shape":"Tag"} @@ -2827,6 +2971,30 @@ "max":50, "min":0 }, + "UntagResourceRequest":{ + "type":"structure", + "required":[ + "ResourceArn", + "TagKeys" + ], + "members":{ + "ResourceArn":{ + "shape":"GuardDutyArn", + "location":"uri", + "locationName":"resourceArn" + }, + "TagKeys":{ + "shape":"TagKeyList", + "location":"querystring", + "locationName":"tagKeys" + } + } + }, + "UntagResourceResponse":{ + "type":"structure", + "members":{ + } + }, "UpdateDetectorRequest":{ "type":"structure", "required":["DetectorId"], diff --git a/models/apis/guardduty/2017-11-28/docs-2.json b/models/apis/guardduty/2017-11-28/docs-2.json index aad52cfe160..7b0fbb49261 100644 --- a/models/apis/guardduty/2017-11-28/docs-2.json +++ b/models/apis/guardduty/2017-11-28/docs-2.json @@ -35,10 +35,13 @@ "ListIPSets": "

Lists the IPSets of the GuardDuty service specified by the detector ID.

", "ListInvitations": "

Lists all GuardDuty membership invitations that were sent to the current AWS account.

", "ListMembers": "

Lists details about all member accounts for the current GuardDuty master account.

", + "ListTagsForResource": "

Lists tags for a resource. Tagging is currently supported for detectors, finding filters, IP sets, and Threat Intel sets, with a limit of 50 tags per resource. When invoked, this operation returns all assigned tags for a given resource..

", "ListThreatIntelSets": "

Lists the ThreatIntelSets of the GuardDuty service specified by the detector ID.

", "StartMonitoringMembers": "

Re-enables GuardDuty to monitor findings of the member accounts specified by the account IDs. A master GuardDuty account can run this command after disabling GuardDuty from monitoring these members' findings by running StopMonitoringMembers.

", "StopMonitoringMembers": "

Disables GuardDuty from monitoring findings of the member accounts specified by the account IDs. After running this command, a master GuardDuty account can run StartMonitoringMembers to re-enable GuardDuty to monitor these members’ findings.

", + "TagResource": "

Adds tags to a resource.

", "UnarchiveFindings": "

Unarchives Amazon GuardDuty findings specified by the list of finding IDs.

", + "UntagResource": "

Removes tags from a resource.

", "UpdateDetector": "

Updates an Amazon GuardDuty detector specified by the detectorId.

", "UpdateFilter": "

Updates the filter specified by the filter name.

", "UpdateFindingsFeedback": "

Marks specified Amazon GuardDuty findings as useful or not useful.

", @@ -645,6 +648,14 @@ "refs": { } }, + "GuardDutyArn": { + "base": null, + "refs": { + "ListTagsForResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) for the given GuardDuty resource

", + "TagResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) for the given GuardDuty resource

", + "UntagResourceRequest$ResourceArn": "

The Amazon Resource Name (ARN) for the given GuardDuty resource

" + } + }, "IamInstanceProfile": { "base": null, "refs": { @@ -783,6 +794,16 @@ "refs": { } }, + "ListTagsForResourceRequest": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceResponse": { + "base": null, + "refs": { + } + }, "ListThreatIntelSetsRequest": { "base": null, "refs": { @@ -1143,6 +1164,50 @@ "Tags$member": null } }, + "TagKey": { + "base": null, + "refs": { + "TagKeyList$member": null, + "TagMap$key": null + } + }, + "TagKeyList": { + "base": null, + "refs": { + "UntagResourceRequest$TagKeys": "

The tag keys to remove from a resource.

" + } + }, + "TagMap": { + "base": null, + "refs": { + "CreateDetectorRequest$Tags": "

The tags to be added to a new detector resource.

", + "CreateFilterRequest$Tags": "

The tags to be added to a new filter resource.

", + "CreateIPSetRequest$Tags": "

The tags to be added to a new IP set resource.

", + "CreateThreatIntelSetRequest$Tags": "

The tags to be added to a new Threat List resource.

", + "GetDetectorResponse$Tags": "

The tags of the detector resource.

", + "GetFilterResponse$Tags": "

The tags of the filter resource.

", + "GetIPSetResponse$Tags": "

The tags of the IP set resource.

", + "GetThreatIntelSetResponse$Tags": "

The tags of the Threat List resource.

", + "ListTagsForResourceResponse$Tags": null, + "TagResourceRequest$Tags": "

The tags to be added to a resource.

" + } + }, + "TagResourceRequest": { + "base": null, + "refs": { + } + }, + "TagResourceResponse": { + "base": null, + "refs": { + } + }, + "TagValue": { + "base": null, + "refs": { + "TagMap$value": null + } + }, "Tags": { "base": null, "refs": { @@ -1198,6 +1263,16 @@ "StopMonitoringMembersResponse$UnprocessedAccounts": "

A list of objects containing the unprocessed account and a result string explaining why it was unprocessed.

" } }, + "UntagResourceRequest": { + "base": null, + "refs": { + } + }, + "UntagResourceResponse": { + "base": null, + "refs": { + } + }, "UpdateDetectorRequest": { "base": null, "refs": { diff --git a/models/apis/guardduty/2017-11-28/paginators-1.json b/models/apis/guardduty/2017-11-28/paginators-1.json index 3922f401e36..1e70a2ccc09 100644 --- a/models/apis/guardduty/2017-11-28/paginators-1.json +++ b/models/apis/guardduty/2017-11-28/paginators-1.json @@ -3,37 +3,44 @@ "ListDetectors": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "DetectorIds" }, "ListFilters": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "FilterNames" }, "ListFindings": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "FindingIds" }, "ListIPSets": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "IpSetIds" }, "ListInvitations": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "Invitations" }, "ListMembers": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "Members" }, "ListThreatIntelSets": { "input_token": "NextToken", "output_token": "NextToken", - "limit_key": "MaxResults" + "limit_key": "MaxResults", + "result_key": "ThreatIntelSetIds" } } } diff --git a/service/appmesh/api.go b/service/appmesh/api.go index 2bdee9cdebd..0ae8f190505 100644 --- a/service/appmesh/api.go +++ b/service/appmesh/api.go @@ -288,7 +288,7 @@ func (c *AppMesh) CreateVirtualNodeRequest(input *CreateVirtualNodeInput) (req * // // A virtual node acts as a logical pointer to a particular task group, such // as an Amazon ECS service or a Kubernetes deployment. When you create a virtual -// node, you must specify the DNS service discovery hostname for your task group. +// node, you can specify the service discovery information for your task group. // // Any inbound traffic that your virtual node expects should be specified as // a listener. Any outbound traffic that your virtual node expects to reach @@ -3255,6 +3255,150 @@ func (s *AccessLog) SetFile(v *FileAccessLog) *AccessLog { return s } +// An object representing the AWS Cloud Map attribute information for your virtual +// node. +type AwsCloudMapInstanceAttribute struct { + _ struct{} `type:"structure"` + + // The name of an AWS Cloud Map service instance attribute key. Any AWS Cloud + // Map service instance that contains the specified key and value is returned. + // + // Key is a required field + Key *string `locationName:"key" min:"1" type:"string" required:"true"` + + // The value of an AWS Cloud Map service instance attribute key. Any AWS Cloud + // Map service instance that contains the specified key and value is returned. + // + // Value is a required field + Value *string `locationName:"value" min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s AwsCloudMapInstanceAttribute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AwsCloudMapInstanceAttribute) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AwsCloudMapInstanceAttribute) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AwsCloudMapInstanceAttribute"} + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.Value == nil { + invalidParams.Add(request.NewErrParamRequired("Value")) + } + if s.Value != nil && len(*s.Value) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Value", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKey sets the Key field's value. +func (s *AwsCloudMapInstanceAttribute) SetKey(v string) *AwsCloudMapInstanceAttribute { + s.Key = &v + return s +} + +// SetValue sets the Value field's value. +func (s *AwsCloudMapInstanceAttribute) SetValue(v string) *AwsCloudMapInstanceAttribute { + s.Value = &v + return s +} + +// An object representing the AWS Cloud Map service discovery information for +// your virtual node. +type AwsCloudMapServiceDiscovery struct { + _ struct{} `type:"structure"` + + // A string map that contains attributes with values that you can use to filter + // instances by any custom attribute that you specified when you registered + // the instance. Only instances that match all of the specified key/value pairs + // will be returned. + Attributes []*AwsCloudMapInstanceAttribute `locationName:"attributes" type:"list"` + + // The name of the AWS Cloud Map namespace to use. + // + // NamespaceName is a required field + NamespaceName *string `locationName:"namespaceName" min:"1" type:"string" required:"true"` + + // The name of the AWS Cloud Map service to use. + // + // ServiceName is a required field + ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s AwsCloudMapServiceDiscovery) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AwsCloudMapServiceDiscovery) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AwsCloudMapServiceDiscovery) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AwsCloudMapServiceDiscovery"} + if s.NamespaceName == nil { + invalidParams.Add(request.NewErrParamRequired("NamespaceName")) + } + if s.NamespaceName != nil && len(*s.NamespaceName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NamespaceName", 1)) + } + if s.ServiceName == nil { + invalidParams.Add(request.NewErrParamRequired("ServiceName")) + } + if s.ServiceName != nil && len(*s.ServiceName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1)) + } + if s.Attributes != nil { + for i, v := range s.Attributes { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attributes", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAttributes sets the Attributes field's value. +func (s *AwsCloudMapServiceDiscovery) SetAttributes(v []*AwsCloudMapInstanceAttribute) *AwsCloudMapServiceDiscovery { + s.Attributes = v + return s +} + +// SetNamespaceName sets the NamespaceName field's value. +func (s *AwsCloudMapServiceDiscovery) SetNamespaceName(v string) *AwsCloudMapServiceDiscovery { + s.NamespaceName = &v + return s +} + +// SetServiceName sets the ServiceName field's value. +func (s *AwsCloudMapServiceDiscovery) SetServiceName(v string) *AwsCloudMapServiceDiscovery { + s.ServiceName = &v + return s +} + // An object representing the backends that a virtual node is expected to send // outbound traffic to. type Backend struct { @@ -6470,6 +6614,9 @@ func (s *RouteStatus) SetStatus(v string) *RouteStatus { type ServiceDiscovery struct { _ struct{} `type:"structure"` + // Specifies any AWS Cloud Map information for the virtual node. + AwsCloudMap *AwsCloudMapServiceDiscovery `locationName:"awsCloudMap" type:"structure"` + // Specifies the DNS information for the virtual node. Dns *DnsServiceDiscovery `locationName:"dns" type:"structure"` } @@ -6487,6 +6634,11 @@ func (s ServiceDiscovery) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *ServiceDiscovery) Validate() error { invalidParams := request.ErrInvalidParams{Context: "ServiceDiscovery"} + if s.AwsCloudMap != nil { + if err := s.AwsCloudMap.Validate(); err != nil { + invalidParams.AddNested("AwsCloudMap", err.(request.ErrInvalidParams)) + } + } if s.Dns != nil { if err := s.Dns.Validate(); err != nil { invalidParams.AddNested("Dns", err.(request.ErrInvalidParams)) @@ -6499,6 +6651,12 @@ func (s *ServiceDiscovery) Validate() error { return nil } +// SetAwsCloudMap sets the AwsCloudMap field's value. +func (s *ServiceDiscovery) SetAwsCloudMap(v *AwsCloudMapServiceDiscovery) *ServiceDiscovery { + s.AwsCloudMap = v + return s +} + // SetDns sets the Dns field's value. func (s *ServiceDiscovery) SetDns(v *DnsServiceDiscovery) *ServiceDiscovery { s.Dns = v @@ -7851,9 +8009,7 @@ type VirtualRouterSpec struct { // The listeners that the virtual router is expected to receive inbound traffic // from. Currently only one listener is supported per virtual router. - // - // Listeners is a required field - Listeners []*VirtualRouterListener `locationName:"listeners" min:"1" type:"list" required:"true"` + Listeners []*VirtualRouterListener `locationName:"listeners" min:"1" type:"list"` } // String returns the string representation @@ -7869,9 +8025,6 @@ func (s VirtualRouterSpec) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *VirtualRouterSpec) Validate() error { invalidParams := request.ErrInvalidParams{Context: "VirtualRouterSpec"} - if s.Listeners == nil { - invalidParams.Add(request.NewErrParamRequired("Listeners")) - } if s.Listeners != nil && len(s.Listeners) < 1 { invalidParams.Add(request.NewErrParamMinLen("Listeners", 1)) } diff --git a/service/appmesh/doc.go b/service/appmesh/doc.go index c855b698568..09a02953834 100644 --- a/service/appmesh/doc.go +++ b/service/appmesh/doc.go @@ -10,13 +10,11 @@ // // App Mesh gives you consistent visibility and network traffic controls for // every microservice in an application. You can use App Mesh with AWS Fargate, -// Amazon ECS, Amazon EKS, and Kubernetes on AWS. +// Amazon ECS, Amazon EKS, Kubernetes on AWS, and Amazon EC2. // // App Mesh supports microservice applications that use service discovery naming -// for their components. To use App Mesh, you must have an application running -// on Amazon EC2 instances, hosted in either Amazon ECS, Amazon EKS, or Kubernetes -// on AWS. For more information about service discovery on Amazon ECS, see Service -// Discovery (http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html) +// for their components. For more information about service discovery on Amazon +// ECS, see Service Discovery (http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html) // in the Amazon Elastic Container Service Developer Guide. Kubernetes kube-dns // and coredns are supported. For more information, see DNS for Services and // Pods (https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/) diff --git a/service/ec2/api.go b/service/ec2/api.go index 7fd900cd8a2..7ccb6913765 100644 --- a/service/ec2/api.go +++ b/service/ec2/api.go @@ -90602,6 +90602,27 @@ const ( // InstanceTypeG3sXlarge is a InstanceType enum value InstanceTypeG3sXlarge = "g3s.xlarge" + // InstanceTypeG4dnXlarge is a InstanceType enum value + InstanceTypeG4dnXlarge = "g4dn.xlarge" + + // InstanceTypeG4dn2xlarge is a InstanceType enum value + InstanceTypeG4dn2xlarge = "g4dn.2xlarge" + + // InstanceTypeG4dn4xlarge is a InstanceType enum value + InstanceTypeG4dn4xlarge = "g4dn.4xlarge" + + // InstanceTypeG4dn8xlarge is a InstanceType enum value + InstanceTypeG4dn8xlarge = "g4dn.8xlarge" + + // InstanceTypeG4dn12xlarge is a InstanceType enum value + InstanceTypeG4dn12xlarge = "g4dn.12xlarge" + + // InstanceTypeG4dn16xlarge is a InstanceType enum value + InstanceTypeG4dn16xlarge = "g4dn.16xlarge" + + // InstanceTypeG4dnMetal is a InstanceType enum value + InstanceTypeG4dnMetal = "g4dn.metal" + // InstanceTypeCg14xlarge is a InstanceType enum value InstanceTypeCg14xlarge = "cg1.4xlarge" diff --git a/service/elasticache/api.go b/service/elasticache/api.go index 75f9531a560..c135e764e28 100644 --- a/service/elasticache/api.go +++ b/service/elasticache/api.go @@ -256,7 +256,7 @@ func (c *ElastiCache) BatchApplyUpdateActionRequest(input *BatchApplyUpdateActio // BatchApplyUpdateAction API operation for Amazon ElastiCache. // // Apply the service update. For more information on service updates and applying -// them, see Applying Service Updates (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/Amazon/red-ug/applying-updates.html). +// them, see Applying Service Updates (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/applying-updates.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -11691,6 +11691,9 @@ type NodeGroup struct { // The endpoint of the primary node in this node group (shard). PrimaryEndpoint *Endpoint `type:"structure"` + // The endpoint of the replica nodes in this node group (shard). + ReaderEndpoint *Endpoint `type:"structure"` + // The keyspace for this node group (shard). Slots *string `type:"string"` @@ -11726,6 +11729,12 @@ func (s *NodeGroup) SetPrimaryEndpoint(v *Endpoint) *NodeGroup { return s } +// SetReaderEndpoint sets the ReaderEndpoint field's value. +func (s *NodeGroup) SetReaderEndpoint(v *Endpoint) *NodeGroup { + s.ReaderEndpoint = v + return s +} + // SetSlots sets the Slots field's value. func (s *NodeGroup) SetSlots(v string) *NodeGroup { s.Slots = &v diff --git a/service/guardduty/api.go b/service/guardduty/api.go index edae04e8964..5f373927956 100644 --- a/service/guardduty/api.go +++ b/service/guardduty/api.go @@ -3082,6 +3082,91 @@ func (c *GuardDuty) ListMembersPagesWithContext(ctx aws.Context, input *ListMemb return p.Err() } +const opListTagsForResource = "ListTagsForResource" + +// ListTagsForResourceRequest generates a "aws/request.Request" representing the +// client's request for the ListTagsForResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListTagsForResource for more information on using the ListTagsForResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListTagsForResourceRequest method. +// req, resp := client.ListTagsForResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListTagsForResource +func (c *GuardDuty) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) { + op := &request.Operation{ + Name: opListTagsForResource, + HTTPMethod: "GET", + HTTPPath: "/tags/{resourceArn}", + } + + if input == nil { + input = &ListTagsForResourceInput{} + } + + output = &ListTagsForResourceOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListTagsForResource API operation for Amazon GuardDuty. +// +// Lists tags for a resource. Tagging is currently supported for detectors, +// finding filters, IP sets, and Threat Intel sets, with a limit of 50 tags +// per resource. When invoked, this operation returns all assigned tags for +// a given resource.. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon GuardDuty's +// API operation ListTagsForResource for usage and error information. +// +// Returned Error Codes: +// * ErrCodeBadRequestException "BadRequestException" +// Bad request exception object. +// +// * ErrCodeInternalServerErrorException "InternalServerErrorException" +// Internal server error exception object. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/ListTagsForResource +func (c *GuardDuty) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) { + req, out := c.ListTagsForResourceRequest(input) + return out, req.Send() +} + +// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of +// the ability to pass a context and additional request options. +// +// See ListTagsForResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *GuardDuty) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) { + req, out := c.ListTagsForResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListThreatIntelSets = "ListThreatIntelSets" // ListThreatIntelSetsRequest generates a "aws/request.Request" representing the @@ -3390,6 +3475,89 @@ func (c *GuardDuty) StopMonitoringMembersWithContext(ctx aws.Context, input *Sto return out, req.Send() } +const opTagResource = "TagResource" + +// TagResourceRequest generates a "aws/request.Request" representing the +// client's request for the TagResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagResource for more information on using the TagResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagResourceRequest method. +// req, resp := client.TagResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/TagResource +func (c *GuardDuty) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) { + op := &request.Operation{ + Name: opTagResource, + HTTPMethod: "POST", + HTTPPath: "/tags/{resourceArn}", + } + + if input == nil { + input = &TagResourceInput{} + } + + output = &TagResourceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagResource API operation for Amazon GuardDuty. +// +// Adds tags to a resource. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon GuardDuty's +// API operation TagResource for usage and error information. +// +// Returned Error Codes: +// * ErrCodeBadRequestException "BadRequestException" +// Bad request exception object. +// +// * ErrCodeInternalServerErrorException "InternalServerErrorException" +// Internal server error exception object. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/TagResource +func (c *GuardDuty) TagResource(input *TagResourceInput) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + return out, req.Send() +} + +// TagResourceWithContext is the same as TagResource with the addition of +// the ability to pass a context and additional request options. +// +// See TagResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *GuardDuty) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUnarchiveFindings = "UnarchiveFindings" // UnarchiveFindingsRequest generates a "aws/request.Request" representing the @@ -3473,6 +3641,89 @@ func (c *GuardDuty) UnarchiveFindingsWithContext(ctx aws.Context, input *Unarchi return out, req.Send() } +const opUntagResource = "UntagResource" + +// UntagResourceRequest generates a "aws/request.Request" representing the +// client's request for the UntagResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagResource for more information on using the UntagResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagResourceRequest method. +// req, resp := client.UntagResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UntagResource +func (c *GuardDuty) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) { + op := &request.Operation{ + Name: opUntagResource, + HTTPMethod: "DELETE", + HTTPPath: "/tags/{resourceArn}", + } + + if input == nil { + input = &UntagResourceInput{} + } + + output = &UntagResourceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagResource API operation for Amazon GuardDuty. +// +// Removes tags from a resource. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon GuardDuty's +// API operation UntagResource for usage and error information. +// +// Returned Error Codes: +// * ErrCodeBadRequestException "BadRequestException" +// Bad request exception object. +// +// * ErrCodeInternalServerErrorException "InternalServerErrorException" +// Internal server error exception object. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/guardduty-2017-11-28/UntagResource +func (c *GuardDuty) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) { + req, out := c.UntagResourceRequest(input) + return out, req.Send() +} + +// UntagResourceWithContext is the same as UntagResource with the addition of +// the ability to pass a context and additional request options. +// +// See UntagResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *GuardDuty) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) { + req, out := c.UntagResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUpdateDetector = "UpdateDetector" // UpdateDetectorRequest generates a "aws/request.Request" representing the @@ -4476,6 +4727,9 @@ type CreateDetectorInput struct { // A enum value that specifies how frequently customer got Finding updates published. FindingPublishingFrequency *string `locationName:"findingPublishingFrequency" type:"string" enum:"FindingPublishingFrequency"` + + // The tags to be added to a new detector resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } // String returns the string representation @@ -4494,6 +4748,9 @@ func (s *CreateDetectorInput) Validate() error { if s.Enable == nil { invalidParams.Add(request.NewErrParamRequired("Enable")) } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } if invalidParams.Len() > 0 { return invalidParams @@ -4519,6 +4776,12 @@ func (s *CreateDetectorInput) SetFindingPublishingFrequency(v string) *CreateDet return s } +// SetTags sets the Tags field's value. +func (s *CreateDetectorInput) SetTags(v map[string]*string) *CreateDetectorInput { + s.Tags = v + return s +} + type CreateDetectorOutput struct { _ struct{} `type:"structure"` @@ -4574,6 +4837,9 @@ type CreateFilterInput struct { // Specifies the position of the filter in the list of current filters. Also // specifies the order in which this filter is applied to the findings. Rank *int64 `locationName:"rank" min:"1" type:"integer"` + + // The tags to be added to a new filter resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } // String returns the string representation @@ -4610,6 +4876,9 @@ func (s *CreateFilterInput) Validate() error { if s.Rank != nil && *s.Rank < 1 { invalidParams.Add(request.NewErrParamMinValue("Rank", 1)) } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } if invalidParams.Len() > 0 { return invalidParams @@ -4659,6 +4928,12 @@ func (s *CreateFilterInput) SetRank(v int64) *CreateFilterInput { return s } +// SetTags sets the Tags field's value. +func (s *CreateFilterInput) SetTags(v map[string]*string) *CreateFilterInput { + s.Tags = v + return s +} + type CreateFilterOutput struct { _ struct{} `type:"structure"` @@ -4718,6 +4993,9 @@ type CreateIPSetInput struct { // // Name is a required field Name *string `locationName:"name" min:"1" type:"string" required:"true"` + + // The tags to be added to a new IP set resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } // String returns the string representation @@ -4760,6 +5038,9 @@ func (s *CreateIPSetInput) Validate() error { if s.Name != nil && len(*s.Name) < 1 { invalidParams.Add(request.NewErrParamMinLen("Name", 1)) } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } if invalidParams.Len() > 0 { return invalidParams @@ -4803,6 +5084,12 @@ func (s *CreateIPSetInput) SetName(v string) *CreateIPSetInput { return s } +// SetTags sets the Tags field's value. +func (s *CreateIPSetInput) SetTags(v map[string]*string) *CreateIPSetInput { + s.Tags = v + return s +} + type CreateIPSetOutput struct { _ struct{} `type:"structure"` @@ -5021,6 +5308,9 @@ type CreateThreatIntelSetInput struct { // // Name is a required field Name *string `locationName:"name" min:"1" type:"string" required:"true"` + + // The tags to be added to a new Threat List resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } // String returns the string representation @@ -5063,6 +5353,9 @@ func (s *CreateThreatIntelSetInput) Validate() error { if s.Name != nil && len(*s.Name) < 1 { invalidParams.Add(request.NewErrParamMinLen("Name", 1)) } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } if invalidParams.Len() > 0 { return invalidParams @@ -5106,6 +5399,12 @@ func (s *CreateThreatIntelSetInput) SetName(v string) *CreateThreatIntelSetInput return s } +// SetTags sets the Tags field's value. +func (s *CreateThreatIntelSetInput) SetTags(v map[string]*string) *CreateThreatIntelSetInput { + s.Tags = v + return s +} + type CreateThreatIntelSetOutput struct { _ struct{} `type:"structure"` @@ -6121,6 +6420,9 @@ type GetDetectorOutput struct { // Status is a required field Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"DetectorStatus"` + // The tags of the detector resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + // Detector last update timestamp. UpdatedAt *string `locationName:"updatedAt" type:"string"` } @@ -6159,6 +6461,12 @@ func (s *GetDetectorOutput) SetStatus(v string) *GetDetectorOutput { return s } +// SetTags sets the Tags field's value. +func (s *GetDetectorOutput) SetTags(v map[string]*string) *GetDetectorOutput { + s.Tags = v + return s +} + // SetUpdatedAt sets the UpdatedAt field's value. func (s *GetDetectorOutput) SetUpdatedAt(v string) *GetDetectorOutput { s.UpdatedAt = &v @@ -6248,6 +6556,9 @@ type GetFilterOutput struct { // Specifies the position of the filter in the list of current filters. Also // specifies the order in which this filter is applied to the findings. Rank *int64 `locationName:"rank" min:"1" type:"integer"` + + // The tags of the filter resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } // String returns the string representation @@ -6290,6 +6601,12 @@ func (s *GetFilterOutput) SetRank(v int64) *GetFilterOutput { return s } +// SetTags sets the Tags field's value. +func (s *GetFilterOutput) SetTags(v map[string]*string) *GetFilterOutput { + s.Tags = v + return s +} + type GetFindingsInput struct { _ struct{} `type:"structure"` @@ -6552,6 +6869,9 @@ type GetIPSetOutput struct { // // Status is a required field Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"IpSetStatus"` + + // The tags of the IP set resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } // String returns the string representation @@ -6588,6 +6908,12 @@ func (s *GetIPSetOutput) SetStatus(v string) *GetIPSetOutput { return s } +// SetTags sets the Tags field's value. +func (s *GetIPSetOutput) SetTags(v map[string]*string) *GetIPSetOutput { + s.Tags = v + return s +} + type GetInvitationsCountInput struct { _ struct{} `type:"structure"` } @@ -6868,6 +7194,9 @@ type GetThreatIntelSetOutput struct { // // Status is a required field Status *string `locationName:"status" min:"1" type:"string" required:"true" enum:"ThreatIntelSetStatus"` + + // The tags of the Threat List resource. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } // String returns the string representation @@ -6904,6 +7233,12 @@ func (s *GetThreatIntelSetOutput) SetStatus(v string) *GetThreatIntelSetOutput { return s } +// SetTags sets the Tags field's value. +func (s *GetThreatIntelSetOutput) SetTags(v map[string]*string) *GetThreatIntelSetOutput { + s.Tags = v + return s +} + type IamInstanceProfile struct { _ struct{} `type:"structure"` @@ -7811,6 +8146,69 @@ func (s *ListMembersOutput) SetNextToken(v string) *ListMembersOutput { return s } +type ListTagsForResourceInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) for the given GuardDuty resource + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListTagsForResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListTagsForResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListTagsForResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput { + s.ResourceArn = &v + return s +} + +type ListTagsForResourceOutput struct { + _ struct{} `type:"structure"` + + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s ListTagsForResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListTagsForResourceOutput) GoString() string { + return s.String() +} + +// SetTags sets the Tags field's value. +func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput { + s.Tags = v + return s +} + type ListThreatIntelSetsInput struct { _ struct{} `type:"structure"` @@ -8931,6 +9329,78 @@ func (s *Tag) SetValue(v string) *Tag { return s } +type TagResourceInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) for the given GuardDuty resource + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` + + // The tags to be added to a resource. + // + // Tags is a required field + Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"` +} + +// String returns the string representation +func (s TagResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput { + s.ResourceArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput { + s.Tags = v + return s +} + +type TagResourceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagResourceOutput) GoString() string { + return s.String() +} + type UnarchiveFindingsInput struct { _ struct{} `type:"structure"` @@ -9037,6 +9507,78 @@ func (s *UnprocessedAccount) SetResult(v string) *UnprocessedAccount { return s } +type UntagResourceInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) for the given GuardDuty resource + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` + + // The tag keys to remove from a resource. + // + // TagKeys is a required field + TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + if s.TagKeys != nil && len(s.TagKeys) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput { + s.ResourceArn = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput { + s.TagKeys = v + return s +} + +type UntagResourceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagResourceOutput) GoString() string { + return s.String() +} + type UpdateDetectorInput struct { _ struct{} `type:"structure"` diff --git a/service/guardduty/guarddutyiface/interface.go b/service/guardduty/guarddutyiface/interface.go index 0cac9805d9a..002e1472a75 100644 --- a/service/guardduty/guarddutyiface/interface.go +++ b/service/guardduty/guarddutyiface/interface.go @@ -210,6 +210,10 @@ type GuardDutyAPI interface { ListMembersPages(*guardduty.ListMembersInput, func(*guardduty.ListMembersOutput, bool) bool) error ListMembersPagesWithContext(aws.Context, *guardduty.ListMembersInput, func(*guardduty.ListMembersOutput, bool) bool, ...request.Option) error + ListTagsForResource(*guardduty.ListTagsForResourceInput) (*guardduty.ListTagsForResourceOutput, error) + ListTagsForResourceWithContext(aws.Context, *guardduty.ListTagsForResourceInput, ...request.Option) (*guardduty.ListTagsForResourceOutput, error) + ListTagsForResourceRequest(*guardduty.ListTagsForResourceInput) (*request.Request, *guardduty.ListTagsForResourceOutput) + ListThreatIntelSets(*guardduty.ListThreatIntelSetsInput) (*guardduty.ListThreatIntelSetsOutput, error) ListThreatIntelSetsWithContext(aws.Context, *guardduty.ListThreatIntelSetsInput, ...request.Option) (*guardduty.ListThreatIntelSetsOutput, error) ListThreatIntelSetsRequest(*guardduty.ListThreatIntelSetsInput) (*request.Request, *guardduty.ListThreatIntelSetsOutput) @@ -225,10 +229,18 @@ type GuardDutyAPI interface { StopMonitoringMembersWithContext(aws.Context, *guardduty.StopMonitoringMembersInput, ...request.Option) (*guardduty.StopMonitoringMembersOutput, error) StopMonitoringMembersRequest(*guardduty.StopMonitoringMembersInput) (*request.Request, *guardduty.StopMonitoringMembersOutput) + TagResource(*guardduty.TagResourceInput) (*guardduty.TagResourceOutput, error) + TagResourceWithContext(aws.Context, *guardduty.TagResourceInput, ...request.Option) (*guardduty.TagResourceOutput, error) + TagResourceRequest(*guardduty.TagResourceInput) (*request.Request, *guardduty.TagResourceOutput) + UnarchiveFindings(*guardduty.UnarchiveFindingsInput) (*guardduty.UnarchiveFindingsOutput, error) UnarchiveFindingsWithContext(aws.Context, *guardduty.UnarchiveFindingsInput, ...request.Option) (*guardduty.UnarchiveFindingsOutput, error) UnarchiveFindingsRequest(*guardduty.UnarchiveFindingsInput) (*request.Request, *guardduty.UnarchiveFindingsOutput) + UntagResource(*guardduty.UntagResourceInput) (*guardduty.UntagResourceOutput, error) + UntagResourceWithContext(aws.Context, *guardduty.UntagResourceInput, ...request.Option) (*guardduty.UntagResourceOutput, error) + UntagResourceRequest(*guardduty.UntagResourceInput) (*request.Request, *guardduty.UntagResourceOutput) + UpdateDetector(*guardduty.UpdateDetectorInput) (*guardduty.UpdateDetectorOutput, error) UpdateDetectorWithContext(aws.Context, *guardduty.UpdateDetectorInput, ...request.Option) (*guardduty.UpdateDetectorOutput, error) UpdateDetectorRequest(*guardduty.UpdateDetectorInput) (*request.Request, *guardduty.UpdateDetectorOutput)