From a6c902e94dd25dc7d30d1d43c3805b4478c00c38 Mon Sep 17 00:00:00 2001 From: aws-sdk-go-automation <43143561+aws-sdk-go-automation@users.noreply.github.com> Date: Thu, 17 Dec 2020 11:12:26 -0800 Subject: [PATCH] Release v1.36.11 (2020-12-17) (#3702) Release v1.36.11 (2020-12-17) === ### Service Client Updates * `service/config`: Updates service API and documentation * `service/dlm`: Updates service API and documentation * `service/ec2`: Updates service API * C6gn instances are powered by AWS Graviton2 processors and offer 100 Gbps networking bandwidth. These instances deliver up to 40% better price-performance benefit versus comparable x86-based instances * `service/imagebuilder`: Updates service API, documentation, and paginators * `service/kms`: Updates service API, documentation, and examples * Added CreationDate and LastUpdatedDate timestamps to ListAliases API response * `service/route53`: Updates service API and documentation * This release adds support for DNSSEC signing in Amazon Route 53. * `service/route53resolver`: Updates service API, documentation, and paginators * `service/servicecatalog`: Updates service API, documentation, and paginators * Support TagOptions sharing with Service Catalog portfolio sharing. * `service/sqs`: Updates service API and documentation * Amazon SQS adds queue attributes to enable high throughput FIFO. --- CHANGELOG.md | 19 + aws/endpoints/defaults.go | 42 +- aws/version.go | 2 +- models/apis/config/2014-11-12/api-2.json | 45 + models/apis/config/2014-11-12/docs-2.json | 65 +- models/apis/dlm/2018-01-12/api-2.json | 134 +- models/apis/dlm/2018-01-12/docs-2.json | 130 +- models/apis/ec2/2016-11-15/api-2.json | 8 + .../apis/imagebuilder/2019-12-02/api-2.json | 373 ++- .../apis/imagebuilder/2019-12-02/docs-2.json | 232 +- .../imagebuilder/2019-12-02/paginators-1.json | 33 +- models/apis/kms/2014-11-01/api-2.json | 4 +- models/apis/kms/2014-11-01/docs-2.json | 130 +- models/apis/kms/2014-11-01/examples-1.json | 11 +- models/apis/route53/2013-04-01/api-2.json | 447 +++- models/apis/route53/2013-04-01/docs-2.json | 324 ++- .../route53resolver/2018-04-01/api-2.json | 134 + .../route53resolver/2018-04-01/docs-2.json | 84 +- .../2018-04-01/paginators-1.json | 6 + .../apis/servicecatalog/2015-12-10/api-2.json | 103 +- .../servicecatalog/2015-12-10/docs-2.json | 103 +- .../2015-12-10/paginators-1.json | 5 + models/apis/sqs/2012-11-05/api-2.json | 4 +- models/apis/sqs/2012-11-05/docs-2.json | 26 +- models/endpoints/endpoints.json | 29 + service/configservice/api.go | 313 ++- .../configserviceiface/interface.go | 4 + service/dlm/api.go | 507 +++- service/ec2/api.go | 32 + service/imagebuilder/api.go | 2303 +++++++++++++++-- service/imagebuilder/doc.go | 2 +- .../imagebuilderiface/interface.go | 27 + service/kms/api.go | 1049 ++++++-- service/kms/examples_test.go | 1 + service/route53/api.go | 1837 ++++++++++++- service/route53/errors.go | 84 +- service/route53/route53iface/interface.go | 32 +- service/route53resolver/api.go | 753 +++++- .../route53resolveriface/interface.go | 15 + service/servicecatalog/api.go | 680 ++++- .../servicecatalogiface/interface.go | 11 + service/sqs/api.go | 195 +- 42 files changed, 9547 insertions(+), 791 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30e2651f1d..8483b3d497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +Release v1.36.11 (2020-12-17) +=== + +### Service Client Updates +* `service/config`: Updates service API and documentation +* `service/dlm`: Updates service API and documentation +* `service/ec2`: Updates service API + * C6gn instances are powered by AWS Graviton2 processors and offer 100 Gbps networking bandwidth. These instances deliver up to 40% better price-performance benefit versus comparable x86-based instances +* `service/imagebuilder`: Updates service API, documentation, and paginators +* `service/kms`: Updates service API, documentation, and examples + * Added CreationDate and LastUpdatedDate timestamps to ListAliases API response +* `service/route53`: Updates service API and documentation + * This release adds support for DNSSEC signing in Amazon Route 53. +* `service/route53resolver`: Updates service API, documentation, and paginators +* `service/servicecatalog`: Updates service API, documentation, and paginators + * Support TagOptions sharing with Service Catalog portfolio sharing. +* `service/sqs`: Updates service API and documentation + * Amazon SQS adds queue attributes to enable high throughput FIFO. + Release v1.36.10 (2020-12-16) === diff --git a/aws/endpoints/defaults.go b/aws/endpoints/defaults.go index 5e81d67d0c..d191a20a54 100644 --- a/aws/endpoints/defaults.go +++ b/aws/endpoints/defaults.go @@ -827,12 +827,36 @@ var awsPartition = partition{ "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "eu-west-3": endpoint{}, - "me-south-1": endpoint{}, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "fips-us-east-1": endpoint{ + Hostname: "athena-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-us-east-2": endpoint{ + Hostname: "athena-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-us-west-1": endpoint{ + Hostname: "athena-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-us-west-2": endpoint{ + Hostname: "athena-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "autoscaling": service{ @@ -9770,6 +9794,12 @@ var awsisoPartition = partition{ }, }, }, + "secretsmanager": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, "snowball": service{ Endpoints: endpoints{ diff --git a/aws/version.go b/aws/version.go index 70486b6854..5e4429065c 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.36.10" +const SDKVersion = "1.36.11" diff --git a/models/apis/config/2014-11-12/api-2.json b/models/apis/config/2014-11-12/api-2.json index bba70eda71..8697fc2133 100644 --- a/models/apis/config/2014-11-12/api-2.json +++ b/models/apis/config/2014-11-12/api-2.json @@ -898,6 +898,19 @@ {"shape":"NoSuchConfigRuleException"} ] }, + "PutExternalEvaluation":{ + "name":"PutExternalEvaluation", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"PutExternalEvaluationRequest"}, + "output":{"shape":"PutExternalEvaluationResponse"}, + "errors":[ + {"shape":"NoSuchConfigRuleException"}, + {"shape":"InvalidParameterValueException"} + ] + }, "PutOrganizationConfigRule":{ "name":"PutOrganizationConfigRule", "http":{ @@ -2483,6 +2496,22 @@ "max":4096, "min":1 }, + "ExternalEvaluation":{ + "type":"structure", + "required":[ + "ComplianceResourceType", + "ComplianceResourceId", + "ComplianceType", + "OrderingTimestamp" + ], + "members":{ + "ComplianceResourceType":{"shape":"StringWithCharLimit256"}, + "ComplianceResourceId":{"shape":"BaseResourceId"}, + "ComplianceType":{"shape":"ComplianceType"}, + "Annotation":{"shape":"StringWithCharLimit256"}, + "OrderingTimestamp":{"shape":"OrderingTimestamp"} + } + }, "FailedDeleteRemediationExceptionsBatch":{ "type":"structure", "members":{ @@ -3532,6 +3561,22 @@ "FailedEvaluations":{"shape":"Evaluations"} } }, + "PutExternalEvaluationRequest":{ + "type":"structure", + "required":[ + "ConfigRuleName", + "ExternalEvaluation" + ], + "members":{ + "ConfigRuleName":{"shape":"ConfigRuleName"}, + "ExternalEvaluation":{"shape":"ExternalEvaluation"} + } + }, + "PutExternalEvaluationResponse":{ + "type":"structure", + "members":{ + } + }, "PutOrganizationConfigRuleRequest":{ "type":"structure", "required":["OrganizationConfigRuleName"], diff --git a/models/apis/config/2014-11-12/docs-2.json b/models/apis/config/2014-11-12/docs-2.json index ee8639ff66..ca3ab59ece 100644 --- a/models/apis/config/2014-11-12/docs-2.json +++ b/models/apis/config/2014-11-12/docs-2.json @@ -34,10 +34,10 @@ "DescribeConformancePacks": "

Returns a list of one or more conformance packs.

", "DescribeDeliveryChannelStatus": "

Returns the current status of the specified delivery channel. If a delivery channel is not specified, this action returns the current status of all delivery channels associated with the account.

Currently, you can specify only one delivery channel per region in your account.

", "DescribeDeliveryChannels": "

Returns details about the specified delivery channel. If a delivery channel is not specified, this action returns the details of all delivery channels associated with the account.

Currently, you can specify only one delivery channel per region in your account.

", - "DescribeOrganizationConfigRuleStatuses": "

Provides organization config rule deployment status for an organization.

Only a master account and a delegated administrator account can call this API. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.

The status is not considered successful until organization config rule is successfully deployed in all the member accounts with an exception of excluded accounts.

When you specify the limit and the next token, you receive a paginated response. Limit and next token are not applicable if you specify organization config rule names. It is only applicable, when you request all the organization config rules.

", - "DescribeOrganizationConfigRules": "

Returns a list of organization config rules.

Only a master account and a delegated administrator account can call this API. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.


When you specify the limit and the next token, you receive a paginated response. Limit and next token are not applicable if you specify organization config rule names. It is only applicable, when you request all the organization config rules.

", - "DescribeOrganizationConformancePackStatuses": "

Provides organization conformance pack deployment status for an organization.

Only a master account and a delegated administrator account can call this API. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.

The status is not considered successful until organization conformance pack is successfully deployed in all the member accounts with an exception of excluded accounts.

When you specify the limit and the next token, you receive a paginated response. Limit and next token are not applicable if you specify organization conformance pack names. They are only applicable, when you request all the organization conformance packs.

", - "DescribeOrganizationConformancePacks": "

Returns a list of organization conformance packs.

Only a master account and a delegated administrator account can call this API. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.

When you specify the limit and the next token, you receive a paginated response.

Limit and next token are not applicable if you specify organization conformance packs names. They are only applicable, when you request all the organization conformance packs.

", + "DescribeOrganizationConfigRuleStatuses": "

Provides organization config rule deployment status for an organization.

The status is not considered successful until organization config rule is successfully deployed in all the member accounts with an exception of excluded accounts.

When you specify the limit and the next token, you receive a paginated response. Limit and next token are not applicable if you specify organization config rule names. It is only applicable, when you request all the organization config rules.

", + "DescribeOrganizationConfigRules": "

Returns a list of organization config rules.

When you specify the limit and the next token, you receive a paginated response. Limit and next token are not applicable if you specify organization config rule names. It is only applicable, when you request all the organization config rules.

", + "DescribeOrganizationConformancePackStatuses": "

Provides organization conformance pack deployment status for an organization.

The status is not considered successful until organization conformance pack is successfully deployed in all the member accounts with an exception of excluded accounts.

When you specify the limit and the next token, you receive a paginated response. Limit and next token are not applicable if you specify organization conformance pack names. They are only applicable, when you request all the organization conformance packs.

", + "DescribeOrganizationConformancePacks": "

Returns a list of organization conformance packs.

When you specify the limit and the next token, you receive a paginated response.

Limit and next token are not applicable if you specify organization conformance packs names. They are only applicable, when you request all the organization conformance packs.

", "DescribePendingAggregationRequests": "

Returns a list of all pending aggregation requests.

", "DescribeRemediationConfigurations": "

Returns the details of one or more remediation configurations.

", "DescribeRemediationExceptions": "

Returns the details of one or more remediation exceptions. A detailed view of a remediation exception for a set of resources that includes an explanation of an exception and the time when the exception will be deleted. When you specify the limit and the next token, you receive a paginated response.

AWS Config generates a remediation exception when a problem occurs executing a remediation action to a specific resource. Remediation exceptions blocks auto-remediation until the exception is cleared.

When you specify the limit and the next token, you receive a paginated response.

Limit and next token are not applicable if you request resources in batch. It is only applicable, when you request all resources.

", @@ -54,8 +54,8 @@ "GetConformancePackComplianceDetails": "

Returns compliance details of a conformance pack for all AWS resources that are monitered by conformance pack.

", "GetConformancePackComplianceSummary": "

Returns compliance details for the conformance pack based on the cumulative compliance results of all the rules in that conformance pack.

", "GetDiscoveredResourceCounts": "

Returns the resource types, the number of each resource type, and the total number of resources that AWS Config is recording in this region for your AWS account.

Example

  1. AWS Config is recording three resource types in the US East (Ohio) Region for your account: 25 EC2 instances, 20 IAM users, and 15 S3 buckets.

  2. You make a call to the GetDiscoveredResourceCounts action and specify that you want all resource types.

  3. AWS Config returns the following:

The response is paginated. By default, AWS Config lists 100 ResourceCount objects on each page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter.

If you make a call to the GetDiscoveredResourceCounts action, you might not immediately receive resource counts in the following situations:

It might take a few minutes for AWS Config to record and count your resources. Wait a few minutes and then retry the GetDiscoveredResourceCounts action.

", - "GetOrganizationConfigRuleDetailedStatus": "

Returns detailed status for each member account within an organization for a given organization config rule.

Only a master account and a delegated administrator account can call this API. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.

", - "GetOrganizationConformancePackDetailedStatus": "

Returns detailed status for each member account within an organization for a given organization conformance pack.

Only a master account and a delegated administrator account can call this API. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.

", + "GetOrganizationConfigRuleDetailedStatus": "

Returns detailed status for each member account within an organization for a given organization config rule.

", + "GetOrganizationConformancePackDetailedStatus": "

Returns detailed status for each member account within an organization for a given organization conformance pack.

", "GetResourceConfigHistory": "

Returns a list of configuration items for the specified resource. The list contains details about each state of the resource during the specified time interval. If you specified a retention period to retain your ConfigurationItems between a minimum of 30 days and a maximum of 7 years (2557 days), AWS Config returns the ConfigurationItems for the specified retention period.

The response is paginated. By default, AWS Config returns a limit of 10 configuration items per page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter.

Each call to the API is limited to span a duration of seven days. It is likely that the number of records returned is smaller than the specified limit. In such cases, you can make another call, using the nextToken.

", "ListAggregateDiscoveredResources": "

Accepts a resource type and returns a list of resource identifiers that are aggregated for a specific resource type across accounts and regions. A resource identifier includes the resource type, ID, (if available) the custom resource name, source account, and source region. You can narrow the results to include only resources that have specific resource IDs, or a resource name, or source account ID, or source region.

For example, if the input consists of accountID 12345678910 and the region is us-east-1 for resource type AWS::EC2::Instance then the API returns all the EC2 instance identifiers of accountID 12345678910 and region us-east-1.

", "ListDiscoveredResources": "

Accepts a resource type and returns a list of resource identifiers for the resources of that type. A resource identifier includes the resource type, ID, and (if available) the custom resource name. The results consist of resources that AWS Config has discovered, including those that AWS Config is not currently recording. You can narrow the results to include only resources that have specific resource IDs or a resource name.

You can specify either resource IDs or a resource name, but not both, in the same request.

The response is paginated. By default, AWS Config lists 100 resource identifiers on each page. You can customize this number with the limit parameter. The response includes a nextToken string. To get the next page of results, run the request again and specify the string for the nextToken parameter.

", @@ -67,10 +67,11 @@ "PutConformancePack": "

Creates or updates a conformance pack. A conformance pack is a collection of AWS Config rules that can be easily deployed in an account and a region and across AWS Organization.

This API creates a service linked role AWSServiceRoleForConfigConforms in your account. The service linked role is created only when the role does not exist in your account.

You must specify either the TemplateS3Uri or the TemplateBody parameter, but not both. If you provide both AWS Config uses the TemplateS3Uri parameter and ignores the TemplateBody parameter.

", "PutDeliveryChannel": "

Creates a delivery channel object to deliver configuration information to an Amazon S3 bucket and Amazon SNS topic.

Before you can create a delivery channel, you must create a configuration recorder.

You can use this action to change the Amazon S3 bucket or an Amazon SNS topic of the existing delivery channel. To change the Amazon S3 bucket or an Amazon SNS topic, call this action and specify the changed values for the S3 bucket and the SNS topic. If you specify a different value for either the S3 bucket or the SNS topic, this action will keep the existing value for the parameter that is not changed.

You can have only one delivery channel per region in your account.

", "PutEvaluations": "

Used by an AWS Lambda function to deliver evaluation results to AWS Config. This action is required in every AWS Lambda function that is invoked by an AWS Config rule.

", + "PutExternalEvaluation": null, "PutOrganizationConfigRule": "

Adds or updates organization config rule for your entire organization evaluating whether your AWS resources comply with your desired configurations.

Only a master account and a delegated administrator can create or update an organization config rule. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.

This API enables organization service access through the EnableAWSServiceAccess action and creates a service linked role AWSServiceRoleForConfigMultiAccountSetup in the master or delegated administrator account of your organization. The service linked role is created only when the role does not exist in the caller account. AWS Config verifies the existence of role with GetRole action.

To use this API with delegated administrator, register a delegated administrator by calling AWS Organization register-delegated-administrator for config-multiaccountsetup.amazonaws.com.

You can use this action to create both custom AWS Config rules and AWS managed Config rules. If you are adding a new custom AWS Config rule, you must first create AWS Lambda function in the master account or a delegated administrator that the rule invokes to evaluate your resources. When you use the PutOrganizationConfigRule action to add the rule to AWS Config, you must specify the Amazon Resource Name (ARN) that AWS Lambda assigns to the function. If you are adding an AWS managed Config rule, specify the rule's identifier for the RuleIdentifier key.

The maximum number of organization config rules that AWS Config supports is 150 and 3 delegated administrator per organization.

Prerequisite: Ensure you call EnableAllFeatures API to enable all features in an organization.

Specify either OrganizationCustomRuleMetadata or OrganizationManagedRuleMetadata.

", "PutOrganizationConformancePack": "

Deploys conformance packs across member accounts in an AWS Organization.

Only a master account and a delegated administrator can call this API. When calling this API with a delegated administrator, you must ensure AWS Organizations ListDelegatedAdministrator permissions are added.

This API enables organization service access for config-multiaccountsetup.amazonaws.com through the EnableAWSServiceAccess action and creates a service linked role AWSServiceRoleForConfigMultiAccountSetup in the master or delegated administrator account of your organization. The service linked role is created only when the role does not exist in the caller account. To use this API with delegated administrator, register a delegated administrator by calling AWS Organization register-delegate-admin for config-multiaccountsetup.amazonaws.com.

Prerequisite: Ensure you call EnableAllFeatures API to enable all features in an organization.

You must specify either the TemplateS3Uri or the TemplateBody parameter, but not both. If you provide both AWS Config uses the TemplateS3Uri parameter and ignores the TemplateBody parameter.

AWS Config sets the state of a conformance pack to CREATE_IN_PROGRESS and UPDATE_IN_PROGRESS until the conformance pack is created or updated. You cannot update a conformance pack while it is in this state.

You can create 6 conformance packs with 25 AWS Config rules in each pack and 3 delegated administrator per organization.

", - "PutRemediationConfigurations": "

Adds or updates the remediation configuration with a specific AWS Config rule with the selected target or action. The API creates the RemediationConfiguration object for the AWS Config rule. The AWS Config rule must already exist for you to add a remediation configuration. The target (SSM document) must exist and have permissions to use the target.

If you make backward incompatible changes to the SSM document, you must call this again to ensure the remediations can run.

", - "PutRemediationExceptions": "

A remediation exception is when a specific resource is no longer considered for auto-remediation. This API adds a new exception or updates an exisiting exception for a specific resource with a specific AWS Config rule.

AWS Config generates a remediation exception when a problem occurs executing a remediation action to a specific resource. Remediation exceptions blocks auto-remediation until the exception is cleared.

", + "PutRemediationConfigurations": "

Adds or updates the remediation configuration with a specific AWS Config rule with the selected target or action. The API creates the RemediationConfiguration object for the AWS Config rule. The AWS Config rule must already exist for you to add a remediation configuration. The target (SSM document) must exist and have permissions to use the target.

If you make backward incompatible changes to the SSM document, you must call this again to ensure the remediations can run.

This API does not support adding remediation configurations for service-linked AWS Config Rules such as Organization Config rules, the rules deployed by conformance packs, and rules deployed by AWS Security Hub.

", + "PutRemediationExceptions": "

A remediation exception is when a specific resource is no longer considered for auto-remediation. This API adds a new exception or updates an existing exception for a specific resource with a specific AWS Config rule.

AWS Config generates a remediation exception when a problem occurs executing a remediation action to a specific resource. Remediation exceptions blocks auto-remediation until the exception is cleared.

", "PutResourceConfig": "

Records the configuration state for the resource provided in the request. The configuration state of a resource is represented in AWS Config as Configuration Items. Once this API records the configuration item, you can retrieve the list of configuration items for the custom resource type using existing AWS Config APIs.

The custom resource type must be registered with AWS CloudFormation. This API accepts the configuration item registered with AWS CloudFormation.

When you call this API, AWS Config only stores configuration state of the resource provided in the request. This API does not change or remediate the configuration of the resource.

Write-only schema properites are not recorded as part of the published configuration item.

", "PutRetentionConfiguration": "

Creates and updates the retention configuration with details about retention period (number of days) that AWS Config stores your historical information. The API creates the RetentionConfiguration object and names the object as default. When you have a RetentionConfiguration object named default, calling the API modifies the default object.

Currently, AWS Config supports only one retention configuration per region in your account.

", "SelectAggregateResourceConfig": "

Accepts a structured query language (SQL) SELECT command and an aggregator to query configuration state of AWS resources across multiple accounts and regions, performs the corresponding search, and returns resource configurations matching the properties.

For more information about query components, see the Query Components section in the AWS Config Developer Guide.

", @@ -87,7 +88,7 @@ "base": null, "refs": { "BaseConfigurationItem$arn": "

The Amazon Resource Name (ARN) of the resource.

", - "ConfigurationItem$arn": "

accoun

" + "ConfigurationItem$arn": "

Amazon Resource Name (ARN) associated with the resource.

" } }, "AccountAggregationSource": { @@ -254,13 +255,13 @@ "AutoRemediationAttemptSeconds": { "base": null, "refs": { - "RemediationConfiguration$RetryAttemptSeconds": "

Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds.

For example, if you specify RetryAttemptsSeconds as 50 seconds and MaximumAutomaticAttempts as 5, AWS Config will run auto-remediations 5 times within 50 seconds before throwing an exception.

" + "RemediationConfiguration$RetryAttemptSeconds": "

Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds.

For example, if you specify RetryAttemptSeconds as 50 seconds and MaximumAutomaticAttempts as 5, AWS Config will run auto-remediations 5 times within 50 seconds before throwing an exception.

" } }, "AutoRemediationAttempts": { "base": null, "refs": { - "RemediationConfiguration$MaximumAutomaticAttempts": "

The maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5.

For example, if you specify MaximumAutomaticAttempts as 5 with RetryAttemptsSeconds as 50 seconds, AWS Config will put a RemediationException on your behalf for the failing resource after the 5th failed attempt within 50 seconds.

" + "RemediationConfiguration$MaximumAutomaticAttempts": "

The maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5.

For example, if you specify MaximumAutomaticAttempts as 5 with RetryAttemptSeconds as 50 seconds, AWS Config will put a RemediationException on your behalf for the failing resource after the 5th failed attempt within 50 seconds.

" } }, "AvailabilityZone": { @@ -311,6 +312,7 @@ "DescribeComplianceByResourceRequest$ResourceId": "

The ID of the AWS resource for which you want compliance information. You can specify only one resource ID. If you specify a resource ID, you must also specify a type for ResourceType.

", "Evaluation$ComplianceResourceId": "

The ID of the AWS resource that was evaluated.

", "EvaluationResultQualifier$ResourceId": "

The ID of the evaluated AWS resource.

", + "ExternalEvaluation$ComplianceResourceId": null, "GetComplianceDetailsByResourceRequest$ResourceId": "

The ID of the AWS resource for which you want compliance information.

", "Scope$ComplianceResourceId": "

The ID of the only AWS resource that you want to trigger an evaluation for the rule. If you specify a resource ID, you must specify one resource type for ComplianceResourceTypes.

" } @@ -438,6 +440,7 @@ "ConfigRuleComplianceFilters$ComplianceType": "

The rule compliance status.

For the ConfigRuleComplianceFilters data type, AWS Config supports only COMPLIANT and NON_COMPLIANT. AWS Config does not support the NOT_APPLICABLE and the INSUFFICIENT_DATA values.

", "Evaluation$ComplianceType": "

Indicates whether the AWS resource complies with the AWS Config rule that it was evaluated against.

For the Evaluation data type, AWS Config supports only the COMPLIANT, NON_COMPLIANT, and NOT_APPLICABLE values. AWS Config does not support the INSUFFICIENT_DATA value for this data type.

Similarly, AWS Config does not accept INSUFFICIENT_DATA as the value for ComplianceType from a PutEvaluations request. For example, an AWS Lambda function for a custom AWS Config rule cannot pass an INSUFFICIENT_DATA value to AWS Config.

", "EvaluationResult$ComplianceType": "

Indicates whether the AWS resource complies with the AWS Config rule that evaluated it.

For the EvaluationResult data type, AWS Config supports only the COMPLIANT, NON_COMPLIANT, and NOT_APPLICABLE values. AWS Config does not support the INSUFFICIENT_DATA value for the EvaluationResult data type.

", + "ExternalEvaluation$ComplianceType": null, "GetAggregateComplianceDetailsByConfigRuleRequest$ComplianceType": "

The resource compliance status.

For the GetAggregateComplianceDetailsByConfigRuleRequest data type, AWS Config supports only the COMPLIANT and NON_COMPLIANT. AWS Config does not support the NOT_APPLICABLE and INSUFFICIENT_DATA values.

" } }, @@ -510,6 +513,7 @@ "DescribeRemediationExecutionStatusRequest$ConfigRuleName": "

A list of AWS Config rule names.

", "EvaluationResultQualifier$ConfigRuleName": "

The name of the AWS Config rule that was used in the evaluation.

", "GetAggregateComplianceDetailsByConfigRuleRequest$ConfigRuleName": "

The name of the AWS Config rule for which you want compliance information.

", + "PutExternalEvaluationRequest$ConfigRuleName": null, "PutRemediationExceptionsRequest$ConfigRuleName": "

The name of the AWS Config rule for which you want to create remediation exception.

", "ReevaluateConfigRuleNames$member": null, "RemediationConfiguration$ConfigRuleName": "

The name of the AWS Config rule.

", @@ -1030,19 +1034,19 @@ "DeliveryS3Bucket": { "base": null, "refs": { - "ConformancePackDetail$DeliveryS3Bucket": "

Conformance pack template that is used to create a pack. The delivery bucket name should start with awsconfigconforms. For example: \"Resource\": \"arn:aws:s3:::your_bucket_name/*\".

", - "OrganizationConformancePack$DeliveryS3Bucket": "

Location of an Amazon S3 bucket where AWS Config can deliver evaluation results and conformance pack template that is used to create a pack.

", - "PutConformancePackRequest$DeliveryS3Bucket": "

AWS Config stores intermediate files while processing conformance pack template.

", - "PutOrganizationConformancePackRequest$DeliveryS3Bucket": "

Location of an Amazon S3 bucket where AWS Config can deliver evaluation results. AWS Config stores intermediate files while processing conformance pack template.

The delivery bucket name should start with awsconfigconforms. For example: \"Resource\": \"arn:aws:s3:::your_bucket_name/*\". For more information, see Permissions for cross account bucket access.

" + "ConformancePackDetail$DeliveryS3Bucket": "

Amazon S3 bucket where AWS Config stores conformance pack templates.

This field is optional.

", + "OrganizationConformancePack$DeliveryS3Bucket": "

Amazon S3 bucket where AWS Config stores conformance pack templates.

This field is optional.

", + "PutConformancePackRequest$DeliveryS3Bucket": "

Amazon S3 bucket where AWS Config stores conformance pack templates.

This field is optional.

", + "PutOrganizationConformancePackRequest$DeliveryS3Bucket": "

Amazon S3 bucket where AWS Config stores conformance pack templates.

This field is optional.

" } }, "DeliveryS3KeyPrefix": { "base": null, "refs": { - "ConformancePackDetail$DeliveryS3KeyPrefix": "

The prefix for the Amazon S3 bucket.

", - "OrganizationConformancePack$DeliveryS3KeyPrefix": "

Any folder structure you want to add to an Amazon S3 bucket.

", - "PutConformancePackRequest$DeliveryS3KeyPrefix": "

The prefix for the Amazon S3 bucket.

", - "PutOrganizationConformancePackRequest$DeliveryS3KeyPrefix": "

The prefix for the Amazon S3 bucket.

" + "ConformancePackDetail$DeliveryS3KeyPrefix": "

The prefix for the Amazon S3 bucket.

This field is optional.

", + "OrganizationConformancePack$DeliveryS3KeyPrefix": "

Any folder structure you want to add to an Amazon S3 bucket.

This field is optional.

", + "PutConformancePackRequest$DeliveryS3KeyPrefix": "

The prefix for the Amazon S3 bucket.

This field is optional.

", + "PutOrganizationConformancePackRequest$DeliveryS3KeyPrefix": "

The prefix for the Amazon S3 bucket.

This field is optional.

" } }, "DeliveryStatus": { @@ -1390,6 +1394,12 @@ "SelectResourceConfigRequest$Expression": "

The SQL query SELECT command.

" } }, + "ExternalEvaluation": { + "base": null, + "refs": { + "PutExternalEvaluationRequest$ExternalEvaluation": null + } + }, "FailedDeleteRemediationExceptionsBatch": { "base": "

List of each of the failed delete remediation exceptions with specific reasons.

", "refs": { @@ -1711,7 +1721,7 @@ "GetComplianceDetailsByConfigRuleRequest$Limit": "

The maximum number of evaluation results returned on each page. The default is 10. You cannot specify a number greater than 100. If you specify 0, AWS Config uses the default.

", "GetDiscoveredResourceCountsRequest$limit": "

The maximum number of ResourceCount objects returned on each page. The default is 100. You cannot specify a number greater than 100. If you specify 0, AWS Config uses the default.

", "GetResourceConfigHistoryRequest$limit": "

The maximum number of configuration items returned on each page. The default is 10. You cannot specify a number greater than 100. If you specify 0, AWS Config uses the default.

", - "ListAggregateDiscoveredResourcesRequest$Limit": "

The maximum number of resource identifiers returned on each page. The default is 100. You cannot specify a number greater than 100. If you specify 0, AWS Config uses the default.

", + "ListAggregateDiscoveredResourcesRequest$Limit": "

The maximum number of resource identifiers returned on each page. You cannot specify a number greater than 100. If you specify 0, AWS Config uses the default.

", "ListDiscoveredResourcesRequest$limit": "

The maximum number of resource identifiers returned on each page. The default is 100. You cannot specify a number greater than 100. If you specify 0, AWS Config uses the default.

", "ListTagsForResourceRequest$Limit": "

The maximum number of tags returned on each page. The limit maximum is 50. You cannot specify a number greater than 50. If you specify 0, AWS Config uses the default.

", "SelectAggregateResourceConfigRequest$Limit": "

The maximum number of query results returned on each page.

", @@ -1964,7 +1974,8 @@ "OrderingTimestamp": { "base": null, "refs": { - "Evaluation$OrderingTimestamp": "

The time of the event in AWS Config that triggered the evaluation. For event-based evaluations, the time indicates when AWS Config created the configuration item that triggered the evaluation. For periodic evaluations, the time indicates when AWS Config triggered the evaluation at the frequency that you specified (for example, every 24 hours).

" + "Evaluation$OrderingTimestamp": "

The time of the event in AWS Config that triggered the evaluation. For event-based evaluations, the time indicates when AWS Config created the configuration item that triggered the evaluation. For periodic evaluations, the time indicates when AWS Config triggered the evaluation at the frequency that you specified (for example, every 24 hours).

", + "ExternalEvaluation$OrderingTimestamp": null } }, "OrganizationAccessDeniedException": { @@ -2246,6 +2257,16 @@ "refs": { } }, + "PutExternalEvaluationRequest": { + "base": null, + "refs": { + } + }, + "PutExternalEvaluationResponse": { + "base": null, + "refs": { + } + }, "PutOrganizationConfigRuleRequest": { "base": null, "refs": { @@ -2934,6 +2955,8 @@ "Evaluation$Annotation": "

Supplementary information about how the evaluation determined the compliance.

", "EvaluationResult$Annotation": "

Supplementary information about how the evaluation determined the compliance.

", "EvaluationResultQualifier$ResourceType": "

The type of AWS resource that was evaluated.

", + "ExternalEvaluation$ComplianceResourceType": null, + "ExternalEvaluation$Annotation": null, "GetAggregateConfigRuleComplianceSummaryResponse$GroupByKey": "

Groups the result based on ACCOUNT_ID or AWS_REGION.

", "GetAggregateDiscoveredResourceCountsResponse$GroupByKey": "

The key passed into the request object. If GroupByKey is not provided, the result will be empty.

", "GetComplianceDetailsByResourceRequest$ResourceType": "

The type of the AWS resource for which you want compliance information.

", diff --git a/models/apis/dlm/2018-01-12/api-2.json b/models/apis/dlm/2018-01-12/api-2.json index ec346a5746..8ddbf405f5 100644 --- a/models/apis/dlm/2018-01-12/api-2.json +++ b/models/apis/dlm/2018-01-12/api-2.json @@ -129,6 +129,29 @@ } }, "shapes":{ + "Action":{ + "type":"structure", + "required":[ + "Name", + "CrossRegionCopy" + ], + "members":{ + "Name":{"shape":"ActionName"}, + "CrossRegionCopy":{"shape":"CrossRegionCopyActionList"} + } + }, + "ActionList":{ + "type":"list", + "member":{"shape":"Action"}, + "max":1, + "min":1 + }, + "ActionName":{ + "type":"string", + "max":120, + "min":0, + "pattern":"[0-9A-Za-z _-]+" + }, "AvailabilityZone":{ "type":"string", "max":16, @@ -141,6 +164,12 @@ "max":10, "min":1 }, + "AwsAccountId":{ + "type":"string", + "max":12, + "min":12, + "pattern":"^[0-9]{12}$" + }, "CmkArn":{ "type":"string", "max":2048, @@ -191,6 +220,24 @@ "min":17, "pattern":"cron\\([^\\n]{11,100}\\)" }, + "CrossRegionCopyAction":{ + "type":"structure", + "required":[ + "Target", + "EncryptionConfiguration" + ], + "members":{ + "Target":{"shape":"Target"}, + "EncryptionConfiguration":{"shape":"EncryptionConfiguration"}, + "RetainRule":{"shape":"CrossRegionCopyRetainRule"} + } + }, + "CrossRegionCopyActionList":{ + "type":"list", + "member":{"shape":"CrossRegionCopyAction"}, + "max":3, + "min":0 + }, "CrossRegionCopyRetainRule":{ "type":"structure", "members":{ @@ -234,9 +281,52 @@ "members":{ } }, + "DescriptionRegex":{ + "type":"string", + "max":1000, + "min":0, + "pattern":"[\\p{all}]*" + }, "Encrypted":{"type":"boolean"}, + "EncryptionConfiguration":{ + "type":"structure", + "required":["Encrypted"], + "members":{ + "Encrypted":{"shape":"Encrypted"}, + "CmkArn":{"shape":"CmkArn"} + } + }, "ErrorCode":{"type":"string"}, "ErrorMessage":{"type":"string"}, + "EventParameters":{ + "type":"structure", + "required":[ + "EventType", + "SnapshotOwner", + "DescriptionRegex" + ], + "members":{ + "EventType":{"shape":"EventTypeValues"}, + "SnapshotOwner":{"shape":"SnapshotOwnerList"}, + "DescriptionRegex":{"shape":"DescriptionRegex"} + } + }, + "EventSource":{ + "type":"structure", + "required":["Type"], + "members":{ + "Type":{"shape":"EventSourceValues"}, + "Parameters":{"shape":"EventParameters"} + } + }, + "EventSourceValues":{ + "type":"string", + "enum":["MANAGED_CWE"] + }, + "EventTypeValues":{ + "type":"string", + "enum":["shareSnapshot"] + }, "ExcludeBootVolume":{"type":"boolean"}, "ExecutionRoleArn":{ "type":"string", @@ -431,7 +521,9 @@ "ResourceTypes":{"shape":"ResourceTypeValuesList"}, "TargetTags":{"shape":"TargetTagList"}, "Schedules":{"shape":"ScheduleList"}, - "Parameters":{"shape":"Parameters"} + "Parameters":{"shape":"Parameters"}, + "EventSource":{"shape":"EventSource"}, + "Actions":{"shape":"ActionList"} } }, "PolicyId":{ @@ -448,7 +540,8 @@ "type":"string", "enum":[ "EBS_SNAPSHOT_MANAGEMENT", - "IMAGE_MANAGEMENT" + "IMAGE_MANAGEMENT", + "EVENT_BASED_POLICY" ] }, "ResourceNotFoundException":{ @@ -502,7 +595,8 @@ "CreateRule":{"shape":"CreateRule"}, "RetainRule":{"shape":"RetainRule"}, "FastRestoreRule":{"shape":"FastRestoreRule"}, - "CrossRegionCopyRules":{"shape":"CrossRegionCopyRules"} + "CrossRegionCopyRules":{"shape":"CrossRegionCopyRules"}, + "ShareRules":{"shape":"ShareRules"} } }, "ScheduleList":{ @@ -515,7 +609,7 @@ "type":"string", "max":120, "min":0, - "pattern":"[\\p{all}]*" + "pattern":"[0-9A-Za-z _-]+" }, "SettablePolicyStateValues":{ "type":"string", @@ -524,6 +618,32 @@ "DISABLED" ] }, + "ShareRule":{ + "type":"structure", + "required":["TargetAccounts"], + "members":{ + "TargetAccounts":{"shape":"ShareTargetAccountList"}, + "UnshareInterval":{"shape":"Interval"}, + "UnshareIntervalUnit":{"shape":"RetentionIntervalUnitValues"} + } + }, + "ShareRules":{ + "type":"list", + "member":{"shape":"ShareRule"}, + "max":1, + "min":0 + }, + "ShareTargetAccountList":{ + "type":"list", + "member":{"shape":"AwsAccountId"}, + "min":1 + }, + "SnapshotOwnerList":{ + "type":"list", + "member":{"shape":"AwsAccountId"}, + "max":50, + "min":0 + }, "StatusMessage":{ "type":"string", "max":500, @@ -609,6 +729,12 @@ "max":45, "min":0 }, + "Target":{ + "type":"string", + "max":16, + "min":0, + "pattern":"^[\\\\w:\\\\-\\\\/\\\\*]+$" + }, "TargetRegion":{ "type":"string", "max":16, diff --git a/models/apis/dlm/2018-01-12/docs-2.json b/models/apis/dlm/2018-01-12/docs-2.json index 06d385b709..38a9d86e89 100644 --- a/models/apis/dlm/2018-01-12/docs-2.json +++ b/models/apis/dlm/2018-01-12/docs-2.json @@ -12,6 +12,24 @@ "UpdateLifecyclePolicy": "

Updates the specified lifecycle policy.

" }, "shapes": { + "Action": { + "base": "

Specifies an action for an event-based policy.

", + "refs": { + "ActionList$member": null + } + }, + "ActionList": { + "base": null, + "refs": { + "PolicyDetails$Actions": "

The actions to be performed when the event-based policy is triggered. You can specify only one action per policy.

This parameter is required for event-based policies only. If you are creating a snapshot or AMI policy, omit this parameter.

" + } + }, + "ActionName": { + "base": null, + "refs": { + "Action$Name": "

A descriptive name for the action.

" + } + }, "AvailabilityZone": { "base": null, "refs": { @@ -24,10 +42,18 @@ "FastRestoreRule$AvailabilityZones": "

The Availability Zones in which to enable fast snapshot restore.

" } }, + "AwsAccountId": { + "base": null, + "refs": { + "ShareTargetAccountList$member": null, + "SnapshotOwnerList$member": null + } + }, "CmkArn": { "base": null, "refs": { - "CrossRegionCopyRule$CmkArn": "

The Amazon Resource Name (ARN) of the AWS KMS customer master key (CMK) to use for EBS encryption. If this parameter is not specified, your AWS managed CMK for EBS is used.

" + "CrossRegionCopyRule$CmkArn": "

The Amazon Resource Name (ARN) of the AWS KMS customer master key (CMK) to use for EBS encryption. If this parameter is not specified, your AWS managed CMK for EBS is used.

", + "EncryptionConfiguration$CmkArn": "

The Amazon Resource Name (ARN) of the AWS KMS customer master key (CMK) to use for EBS encryption. If this parameter is not specified, your AWS managed CMK for EBS is used.

" } }, "CopyTags": { @@ -71,9 +97,22 @@ "CreateRule$CronExpression": "

The schedule, as a Cron expression. The schedule interval must be between 1 hour and 1 year. For more information, see Cron expressions in the Amazon CloudWatch User Guide.

" } }, + "CrossRegionCopyAction": { + "base": "

Specifies a rule for copying shared snapshots across Regions.

", + "refs": { + "CrossRegionCopyActionList$member": null + } + }, + "CrossRegionCopyActionList": { + "base": null, + "refs": { + "Action$CrossRegionCopy": "

The rule for copying shared snapshots across Regions.

" + } + }, "CrossRegionCopyRetainRule": { "base": "

Specifies the retention rule for cross-Region snapshot copies.

", "refs": { + "CrossRegionCopyAction$RetainRule": null, "CrossRegionCopyRule$RetainRule": "

The retention rule.

" } }, @@ -99,10 +138,23 @@ "refs": { } }, + "DescriptionRegex": { + "base": null, + "refs": { + "EventParameters$DescriptionRegex": "

The snapshot description that can trigger the policy. The description pattern is specified using a regular expression. The policy runs only if a snapshot with a description that matches the specified pattern is shared with your account.

For example, specifying ^.*Created for policy: policy-1234567890abcdef0.*$ configures the policy to run only if snapshots created by policy policy-1234567890abcdef0 are shared with your account.

" + } + }, "Encrypted": { "base": null, "refs": { - "CrossRegionCopyRule$Encrypted": "

To encrypt a copy of an unencrypted snapshot if encryption by default is not enabled, enable encryption using this parameter. Copies of encrypted snapshots are encrypted, even if this parameter is false or if encryption by default is not enabled.

" + "CrossRegionCopyRule$Encrypted": "

To encrypt a copy of an unencrypted snapshot if encryption by default is not enabled, enable encryption using this parameter. Copies of encrypted snapshots are encrypted, even if this parameter is false or if encryption by default is not enabled.

", + "EncryptionConfiguration$Encrypted": "

To encrypt a copy of an unencrypted snapshot when encryption by default is not enabled, enable encryption using this parameter. Copies of encrypted snapshots are encrypted, even if this parameter is false or when encryption by default is not enabled.

" + } + }, + "EncryptionConfiguration": { + "base": "

Specifies the encryption settings for shared snapshots that are copied across Regions.

", + "refs": { + "CrossRegionCopyAction$EncryptionConfiguration": "

The encryption settings for the copied snapshot.

" } }, "ErrorCode": { @@ -123,6 +175,30 @@ "ResourceNotFoundException$Message": null } }, + "EventParameters": { + "base": "

Specifies an event that triggers an event-based policy.

", + "refs": { + "EventSource$Parameters": "

Information about the event.

" + } + }, + "EventSource": { + "base": "

Specifies an event that triggers an event-based policy.

", + "refs": { + "PolicyDetails$EventSource": "

The event that triggers the event-based policy.

This parameter is required for event-based policies only. If you are creating a snapshot or AMI policy, omit this parameter.

" + } + }, + "EventSourceValues": { + "base": null, + "refs": { + "EventSource$Type": "

The source of the event. Currently only managed AWS CloudWatch Events rules are supported.

" + } + }, + "EventTypeValues": { + "base": null, + "refs": { + "EventParameters$EventType": "

The type of event. Currently, only snapshot sharing events are supported.

" + } + }, "ExcludeBootVolume": { "base": null, "refs": { @@ -182,7 +258,8 @@ "CreateRule$Interval": "

The interval between snapshots. The supported values are 1, 2, 3, 4, 6, 8, 12, and 24.

", "CrossRegionCopyRetainRule$Interval": "

The amount of time to retain each snapshot. The maximum is 100 years. This is equivalent to 1200 months, 5200 weeks, or 36500 days.

", "FastRestoreRule$Interval": "

The amount of time to enable fast snapshot restore. The maximum is 100 years. This is equivalent to 1200 months, 5200 weeks, or 36500 days.

", - "RetainRule$Interval": "

The amount of time to retain each snapshot. The maximum is 100 years. This is equivalent to 1200 months, 5200 weeks, or 36500 days.

" + "RetainRule$Interval": "

The amount of time to retain each snapshot. The maximum is 100 years. This is equivalent to 1200 months, 5200 weeks, or 36500 days.

", + "ShareRule$UnshareInterval": "

The period after which snapshots that are shared with other AWS accounts are automatically unshared.

" } }, "IntervalUnitValues": { @@ -232,7 +309,7 @@ "NoReboot": { "base": null, "refs": { - "Parameters$NoReboot": "

Applies to AMI lifecycle policies only. Indicates whether targeted instances are rebooted when the lifecycle policy runs. true indicates that targeted instances are not rebooted when the policy runs. false indicates that target instances are rebooted when the policy runs. The default is true (instance are not rebooted).

" + "Parameters$NoReboot": "

Applies to AMI lifecycle policies only. Indicates whether targeted instances are rebooted when the lifecycle policy runs. true indicates that targeted instances are not rebooted when the policy runs. false indicates that target instances are rebooted when the policy runs. The default is true (instances are not rebooted).

" } }, "Parameter": { @@ -251,7 +328,7 @@ "Parameters": { "base": "

Specifies optional parameters to add to a policy. The set of valid parameters depends on the combination of policy type and resource type.

", "refs": { - "PolicyDetails$Parameters": "

A set of optional parameters for the policy.

" + "PolicyDetails$Parameters": "

A set of optional parameters for snapshot and AMI lifecycle policies.

This parameter is required for snapshot and AMI policies only. If you are creating an event-based policy, omit this parameter.

" } }, "PolicyArn": { @@ -303,7 +380,7 @@ "base": null, "refs": { "LifecyclePolicySummary$PolicyType": "

The type of policy. EBS_SNAPSHOT_MANAGEMENT indicates that the policy manages the lifecycle of Amazon EBS snapshots. IMAGE_MANAGEMENT indicates that the policy manages the lifecycle of EBS-backed AMIs.

", - "PolicyDetails$PolicyType": "

The valid target resource types and actions a policy can manage. Specify EBS_SNAPSHOT_MANAGEMENT to create a lifecycle policy that manages the lifecycle of Amazon EBS snapshots. Specify IMAGE_MANAGEMENT to create a lifecycle policy that manages the lifecycle of EBS-backed AMIs. The default is EBS_SNAPSHOT_MANAGEMENT.

" + "PolicyDetails$PolicyType": "

The valid target resource types and actions a policy can manage. Specify EBS_SNAPSHOT_MANAGEMENT to create a lifecycle policy that manages the lifecycle of Amazon EBS snapshots. Specify IMAGE_MANAGEMENT to create a lifecycle policy that manages the lifecycle of EBS-backed AMIs. Specify EVENT_BASED_POLICY to create an event-based policy that performs specific actions when a defined event occurs in your AWS account.

The default is EBS_SNAPSHOT_MANAGEMENT.

" } }, "ResourceNotFoundException": { @@ -321,7 +398,7 @@ "base": null, "refs": { "GetLifecyclePoliciesRequest$ResourceTypes": "

The resource type.

", - "PolicyDetails$ResourceTypes": "

The resource type. Use VOLUME to create snapshots of individual volumes or use INSTANCE to create multi-volume snapshots from the volumes for an instance.

" + "PolicyDetails$ResourceTypes": "

The target resource type for snapshot and AMI lifecycle policies. Use VOLUME to create snapshots of individual volumes or use INSTANCE to create multi-volume snapshots from the volumes for an instance.

This parameter is required for snapshot and AMI policies only. If you are creating an event-based policy, omit this parameter.

" } }, "RetainRule": { @@ -335,11 +412,12 @@ "refs": { "CrossRegionCopyRetainRule$IntervalUnit": "

The unit of time for time-based retention.

", "FastRestoreRule$IntervalUnit": "

The unit of time for enabling fast snapshot restore.

", - "RetainRule$IntervalUnit": "

The unit of time for time-based retention.

" + "RetainRule$IntervalUnit": "

The unit of time for time-based retention.

", + "ShareRule$UnshareIntervalUnit": "

The unit of time for the automatic unsharing interval.

" } }, "Schedule": { - "base": "

Specifies a backup schedule.

", + "base": "

Specifies a backup schedule for a snapshot or AMI lifecycle policy.

", "refs": { "ScheduleList$member": null } @@ -347,7 +425,7 @@ "ScheduleList": { "base": null, "refs": { - "PolicyDetails$Schedules": "

The schedules of policy-defined actions. A policy can have up to four schedules - one mandatory schedule and up to three optional schedules.

" + "PolicyDetails$Schedules": "

The schedules of policy-defined actions for snapshot and AMI lifecycle policies. A policy can have up to four schedules—one mandatory schedule and up to three optional schedules.

This parameter is required for snapshot and AMI policies only. If you are creating an event-based policy, omit this parameter.

" } }, "ScheduleName": { @@ -363,6 +441,30 @@ "UpdateLifecyclePolicyRequest$State": "

The desired activation state of the lifecycle policy after creation.

" } }, + "ShareRule": { + "base": "

Specifies a rule for sharing snapshots across AWS accounts.

", + "refs": { + "ShareRules$member": null + } + }, + "ShareRules": { + "base": null, + "refs": { + "Schedule$ShareRules": "

The rule for sharing snapshots with other AWS accounts.

" + } + }, + "ShareTargetAccountList": { + "base": null, + "refs": { + "ShareRule$TargetAccounts": "

The IDs of the AWS accounts with which to share the snapshots.

" + } + }, + "SnapshotOwnerList": { + "base": null, + "refs": { + "EventParameters$SnapshotOwner": "

The IDs of the AWS accounts that can trigger policy by sharing snapshots with your account. The policy only runs if one of the specified AWS accounts shares a snapshot with your account.

" + } + }, "StatusMessage": { "base": null, "refs": { @@ -444,6 +546,12 @@ "Schedule$TagsToAdd": "

The tags to apply to policy-created resources. These user-defined tags are in addition to the AWS-added lifecycle tags.

" } }, + "Target": { + "base": null, + "refs": { + "CrossRegionCopyAction$Target": "

The target Region.

" + } + }, "TargetRegion": { "base": null, "refs": { @@ -453,7 +561,7 @@ "TargetTagList": { "base": null, "refs": { - "PolicyDetails$TargetTags": "

The single tag that identifies targeted resources for this policy.

" + "PolicyDetails$TargetTags": "

The single tag that identifies targeted resources for this policy.

This parameter is required for snapshot and AMI policies only. If you are creating an event-based policy, omit this parameter.

" } }, "TargetTagsFilterList": { diff --git a/models/apis/ec2/2016-11-15/api-2.json b/models/apis/ec2/2016-11-15/api-2.json index f5b4fa4f3c..d8c9da7e51 100755 --- a/models/apis/ec2/2016-11-15/api-2.json +++ b/models/apis/ec2/2016-11-15/api-2.json @@ -19893,6 +19893,14 @@ "c6gd.8xlarge", "c6gd.12xlarge", "c6gd.16xlarge", + "c6gn.medium", + "c6gn.large", + "c6gn.xlarge", + "c6gn.2xlarge", + "c6gn.4xlarge", + "c6gn.8xlarge", + "c6gn.12xlarge", + "c6gn.16xlarge", "cc1.4xlarge", "cc2.8xlarge", "g2.2xlarge", diff --git a/models/apis/imagebuilder/2019-12-02/api-2.json b/models/apis/imagebuilder/2019-12-02/api-2.json index 147b3e594a..b2c2df7916 100644 --- a/models/apis/imagebuilder/2019-12-02/api-2.json +++ b/models/apis/imagebuilder/2019-12-02/api-2.json @@ -54,6 +54,28 @@ {"shape":"ServiceQuotaExceededException"} ] }, + "CreateContainerRecipe":{ + "name":"CreateContainerRecipe", + "http":{ + "method":"PUT", + "requestUri":"/CreateContainerRecipe" + }, + "input":{"shape":"CreateContainerRecipeRequest"}, + "output":{"shape":"CreateContainerRecipeResponse"}, + "errors":[ + {"shape":"ServiceException"}, + {"shape":"ClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"InvalidRequestException"}, + {"shape":"IdempotentParameterMismatchException"}, + {"shape":"ForbiddenException"}, + {"shape":"CallRateLimitExceededException"}, + {"shape":"InvalidVersionNumberException"}, + {"shape":"ResourceInUseException"}, + {"shape":"ResourceAlreadyExistsException"}, + {"shape":"ServiceQuotaExceededException"} + ] + }, "CreateDistributionConfiguration":{ "name":"CreateDistributionConfiguration", "http":{ @@ -178,6 +200,24 @@ {"shape":"ResourceDependencyException"} ] }, + "DeleteContainerRecipe":{ + "name":"DeleteContainerRecipe", + "http":{ + "method":"DELETE", + "requestUri":"/DeleteContainerRecipe" + }, + "input":{"shape":"DeleteContainerRecipeRequest"}, + "output":{"shape":"DeleteContainerRecipeResponse"}, + "errors":[ + {"shape":"ServiceException"}, + {"shape":"ClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"InvalidRequestException"}, + {"shape":"ForbiddenException"}, + {"shape":"CallRateLimitExceededException"}, + {"shape":"ResourceDependencyException"} + ] + }, "DeleteDistributionConfiguration":{ "name":"DeleteDistributionConfiguration", "http":{ @@ -302,6 +342,40 @@ {"shape":"CallRateLimitExceededException"} ] }, + "GetContainerRecipe":{ + "name":"GetContainerRecipe", + "http":{ + "method":"GET", + "requestUri":"/GetContainerRecipe" + }, + "input":{"shape":"GetContainerRecipeRequest"}, + "output":{"shape":"GetContainerRecipeResponse"}, + "errors":[ + {"shape":"ServiceException"}, + {"shape":"ClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"InvalidRequestException"}, + {"shape":"ForbiddenException"}, + {"shape":"CallRateLimitExceededException"} + ] + }, + "GetContainerRecipePolicy":{ + "name":"GetContainerRecipePolicy", + "http":{ + "method":"GET", + "requestUri":"/GetContainerRecipePolicy" + }, + "input":{"shape":"GetContainerRecipePolicyRequest"}, + "output":{"shape":"GetContainerRecipePolicyResponse"}, + "errors":[ + {"shape":"ServiceException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"InvalidRequestException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"CallRateLimitExceededException"} + ] + }, "GetDistributionConfiguration":{ "name":"GetDistributionConfiguration", "http":{ @@ -478,6 +552,24 @@ {"shape":"CallRateLimitExceededException"} ] }, + "ListContainerRecipes":{ + "name":"ListContainerRecipes", + "http":{ + "method":"POST", + "requestUri":"/ListContainerRecipes" + }, + "input":{"shape":"ListContainerRecipesRequest"}, + "output":{"shape":"ListContainerRecipesResponse"}, + "errors":[ + {"shape":"ServiceException"}, + {"shape":"ClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InvalidPaginationTokenException"}, + {"shape":"ForbiddenException"}, + {"shape":"CallRateLimitExceededException"} + ] + }, "ListDistributionConfigurations":{ "name":"ListDistributionConfigurations", "http":{ @@ -638,6 +730,25 @@ {"shape":"CallRateLimitExceededException"} ] }, + "PutContainerRecipePolicy":{ + "name":"PutContainerRecipePolicy", + "http":{ + "method":"PUT", + "requestUri":"/PutContainerRecipePolicy" + }, + "input":{"shape":"PutContainerRecipePolicyRequest"}, + "output":{"shape":"PutContainerRecipePolicyResponse"}, + "errors":[ + {"shape":"ServiceException"}, + {"shape":"ClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InvalidParameterValueException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"CallRateLimitExceededException"} + ] + }, "PutImagePolicy":{ "name":"PutImagePolicy", "http":{ @@ -827,6 +938,7 @@ "pattern":"^[-_A-Za-z0-9{][-_A-Za-z0-9\\s:{}\\.]+[-_A-Za-z0-9}]$" }, "Arn":{"type":"string"}, + "Boolean":{"type":"boolean"}, "CallRateLimitExceededException":{ "type":"structure", "members":{ @@ -963,6 +1075,76 @@ "type":"list", "member":{"shape":"ComponentVersion"} }, + "Container":{ + "type":"structure", + "members":{ + "region":{"shape":"NonEmptyString"}, + "imageUris":{"shape":"StringList"} + } + }, + "ContainerDistributionConfiguration":{ + "type":"structure", + "required":["targetRepository"], + "members":{ + "description":{"shape":"NonEmptyString"}, + "containerTags":{"shape":"StringList"}, + "targetRepository":{"shape":"TargetContainerRepository"} + } + }, + "ContainerList":{ + "type":"list", + "member":{"shape":"Container"} + }, + "ContainerRecipe":{ + "type":"structure", + "members":{ + "arn":{"shape":"ImageBuilderArn"}, + "containerType":{"shape":"ContainerType"}, + "name":{"shape":"ResourceName"}, + "description":{"shape":"NonEmptyString"}, + "platform":{"shape":"Platform"}, + "owner":{"shape":"NonEmptyString"}, + "version":{"shape":"VersionNumber"}, + "components":{"shape":"ComponentConfigurationList"}, + "dockerfileTemplateData":{"shape":"DockerFileTemplate"}, + "kmsKeyId":{"shape":"NonEmptyString"}, + "encrypted":{"shape":"NullableBoolean"}, + "parentImage":{"shape":"NonEmptyString"}, + "dateCreated":{"shape":"DateTime"}, + "tags":{"shape":"TagMap"}, + "workingDirectory":{"shape":"NonEmptyString"}, + "targetRepository":{"shape":"TargetContainerRepository"} + } + }, + "ContainerRecipeArn":{ + "type":"string", + "pattern":"^arn:aws[^:]*:imagebuilder:[^:]+:(?:\\d{12}|aws):container-recipe/[a-z0-9-_]+/\\d+\\.\\d+\\.\\d+$" + }, + "ContainerRecipeSummary":{ + "type":"structure", + "members":{ + "arn":{"shape":"ImageBuilderArn"}, + "containerType":{"shape":"ContainerType"}, + "name":{"shape":"ResourceName"}, + "platform":{"shape":"Platform"}, + "owner":{"shape":"NonEmptyString"}, + "parentImage":{"shape":"NonEmptyString"}, + "dateCreated":{"shape":"DateTime"}, + "tags":{"shape":"TagMap"} + } + }, + "ContainerRecipeSummaryList":{ + "type":"list", + "member":{"shape":"ContainerRecipeSummary"} + }, + "ContainerRepositoryService":{ + "type":"string", + "enum":["ECR"] + }, + "ContainerType":{ + "type":"string", + "enum":["DOCKER"] + }, "CreateComponentRequest":{ "type":"structure", "required":[ @@ -996,6 +1178,47 @@ "componentBuildVersionArn":{"shape":"ComponentBuildVersionArn"} } }, + "CreateContainerRecipeRequest":{ + "type":"structure", + "required":[ + "containerType", + "name", + "semanticVersion", + "components", + "dockerfileTemplateData", + "parentImage", + "targetRepository", + "clientToken" + ], + "members":{ + "containerType":{"shape":"ContainerType"}, + "name":{"shape":"ResourceName"}, + "description":{"shape":"NonEmptyString"}, + "semanticVersion":{"shape":"VersionNumber"}, + "components":{"shape":"ComponentConfigurationList"}, + "dockerfileTemplateData":{"shape":"InlineDockerFileTemplate"}, + "dockerfileTemplateUri":{"shape":"Uri"}, + "platformOverride":{"shape":"Platform"}, + "imageOsVersionOverride":{"shape":"NonEmptyString"}, + "parentImage":{"shape":"NonEmptyString"}, + "tags":{"shape":"TagMap"}, + "workingDirectory":{"shape":"NonEmptyString"}, + "targetRepository":{"shape":"TargetContainerRepository"}, + "kmsKeyId":{"shape":"NonEmptyString"}, + "clientToken":{ + "shape":"ClientToken", + "idempotencyToken":true + } + } + }, + "CreateContainerRecipeResponse":{ + "type":"structure", + "members":{ + "requestId":{"shape":"NonEmptyString"}, + "clientToken":{"shape":"ClientToken"}, + "containerRecipeArn":{"shape":"ContainerRecipeArn"} + } + }, "CreateDistributionConfigurationRequest":{ "type":"structure", "required":[ @@ -1026,7 +1249,6 @@ "type":"structure", "required":[ "name", - "imageRecipeArn", "infrastructureConfigurationArn", "clientToken" ], @@ -1034,6 +1256,7 @@ "name":{"shape":"ResourceName"}, "description":{"shape":"NonEmptyString"}, "imageRecipeArn":{"shape":"ImageRecipeArn"}, + "containerRecipeArn":{"shape":"ContainerRecipeArn"}, "infrastructureConfigurationArn":{"shape":"InfrastructureConfigurationArn"}, "distributionConfigurationArn":{"shape":"DistributionConfigurationArn"}, "imageTestsConfiguration":{"shape":"ImageTestsConfiguration"}, @@ -1090,12 +1313,12 @@ "CreateImageRequest":{ "type":"structure", "required":[ - "imageRecipeArn", "infrastructureConfigurationArn", "clientToken" ], "members":{ "imageRecipeArn":{"shape":"ImageRecipeArn"}, + "containerRecipeArn":{"shape":"ContainerRecipeArn"}, "distributionConfigurationArn":{"shape":"DistributionConfigurationArn"}, "infrastructureConfigurationArn":{"shape":"InfrastructureConfigurationArn"}, "imageTestsConfiguration":{"shape":"ImageTestsConfiguration"}, @@ -1168,6 +1391,24 @@ "componentBuildVersionArn":{"shape":"ComponentBuildVersionArn"} } }, + "DeleteContainerRecipeRequest":{ + "type":"structure", + "required":["containerRecipeArn"], + "members":{ + "containerRecipeArn":{ + "shape":"ContainerRecipeArn", + "location":"querystring", + "locationName":"containerRecipeArn" + } + } + }, + "DeleteContainerRecipeResponse":{ + "type":"structure", + "members":{ + "requestId":{"shape":"NonEmptyString"}, + "containerRecipeArn":{"shape":"ContainerRecipeArn"} + } + }, "DeleteDistributionConfigurationRequest":{ "type":"structure", "required":["distributionConfigurationArn"], @@ -1264,6 +1505,7 @@ "members":{ "region":{"shape":"NonEmptyString"}, "amiDistributionConfiguration":{"shape":"AmiDistributionConfiguration"}, + "containerDistributionConfiguration":{"shape":"ContainerDistributionConfiguration"}, "licenseConfigurationArns":{"shape":"LicenseConfigurationArnList"} } }, @@ -1293,7 +1535,8 @@ "description":{"shape":"NonEmptyString"}, "dateCreated":{"shape":"DateTime"}, "dateUpdated":{"shape":"DateTime"}, - "tags":{"shape":"TagMap"} + "tags":{"shape":"TagMap"}, + "regions":{"shape":"RegionList"} } }, "DistributionConfigurationSummaryList":{ @@ -1309,6 +1552,7 @@ "max":720, "min":30 }, + "DockerFileTemplate":{"type":"string"}, "EbsInstanceBlockDeviceSpecification":{ "type":"structure", "members":{ @@ -1419,6 +1663,42 @@ "component":{"shape":"Component"} } }, + "GetContainerRecipePolicyRequest":{ + "type":"structure", + "required":["containerRecipeArn"], + "members":{ + "containerRecipeArn":{ + "shape":"ContainerRecipeArn", + "location":"querystring", + "locationName":"containerRecipeArn" + } + } + }, + "GetContainerRecipePolicyResponse":{ + "type":"structure", + "members":{ + "requestId":{"shape":"NonEmptyString"}, + "policy":{"shape":"ResourcePolicyDocument"} + } + }, + "GetContainerRecipeRequest":{ + "type":"structure", + "required":["containerRecipeArn"], + "members":{ + "containerRecipeArn":{ + "shape":"ContainerRecipeArn", + "location":"querystring", + "locationName":"containerRecipeArn" + } + } + }, + "GetContainerRecipeResponse":{ + "type":"structure", + "members":{ + "requestId":{"shape":"NonEmptyString"}, + "containerRecipe":{"shape":"ContainerRecipe"} + } + }, "GetDistributionConfigurationRequest":{ "type":"structure", "required":["distributionConfigurationArn"], @@ -1557,6 +1837,7 @@ "type":"structure", "members":{ "arn":{"shape":"ImageBuilderArn"}, + "type":{"shape":"ImageType"}, "name":{"shape":"ResourceName"}, "version":{"shape":"VersionNumber"}, "platform":{"shape":"Platform"}, @@ -1564,6 +1845,7 @@ "osVersion":{"shape":"OsVersion"}, "state":{"shape":"ImageState"}, "imageRecipe":{"shape":"ImageRecipe"}, + "containerRecipe":{"shape":"ContainerRecipe"}, "sourcePipelineName":{"shape":"ResourceName"}, "sourcePipelineArn":{"shape":"Arn"}, "infrastructureConfiguration":{"shape":"InfrastructureConfiguration"}, @@ -1580,7 +1862,7 @@ }, "ImageBuilderArn":{ "type":"string", - "pattern":"^arn:aws[^:]*:imagebuilder:[^:]+:(?:\\d{12}|aws):(?:image-recipe|infrastructure-configuration|distribution-configuration|component|image|image-pipeline)/[a-z0-9-_]+(?:/(?:(?:x|\\d+)\\.(?:x|\\d+)\\.(?:x|\\d+))(?:/\\d+)?)?$" + "pattern":"^arn:aws[^:]*:imagebuilder:[^:]+:(?:\\d{12}|aws):(?:image-recipe|container-recipe|infrastructure-configuration|distribution-configuration|component|image|image-pipeline)/[a-z0-9-_]+(?:/(?:(?:x|\\d+)\\.(?:x|\\d+)\\.(?:x|\\d+))(?:/\\d+)?)?$" }, "ImagePipeline":{ "type":"structure", @@ -1591,6 +1873,7 @@ "platform":{"shape":"Platform"}, "enhancedImageMetadataEnabled":{"shape":"NullableBoolean"}, "imageRecipeArn":{"shape":"Arn"}, + "containerRecipeArn":{"shape":"Arn"}, "infrastructureConfigurationArn":{"shape":"Arn"}, "distributionConfigurationArn":{"shape":"Arn"}, "imageTestsConfiguration":{"shape":"ImageTestsConfiguration"}, @@ -1615,6 +1898,7 @@ "type":"structure", "members":{ "arn":{"shape":"ImageBuilderArn"}, + "type":{"shape":"ImageType"}, "name":{"shape":"ResourceName"}, "description":{"shape":"NonEmptyString"}, "platform":{"shape":"Platform"}, @@ -1676,6 +1960,7 @@ "members":{ "arn":{"shape":"ImageBuilderArn"}, "name":{"shape":"ResourceName"}, + "type":{"shape":"ImageType"}, "version":{"shape":"VersionNumber"}, "platform":{"shape":"Platform"}, "osVersion":{"shape":"OsVersion"}, @@ -1702,11 +1987,19 @@ "max":1440, "min":60 }, + "ImageType":{ + "type":"string", + "enum":[ + "AMI", + "DOCKER" + ] + }, "ImageVersion":{ "type":"structure", "members":{ "arn":{"shape":"ImageBuilderArn"}, "name":{"shape":"ResourceName"}, + "type":{"shape":"ImageType"}, "version":{"shape":"VersionNumber"}, "platform":{"shape":"Platform"}, "osVersion":{"shape":"OsVersion"}, @@ -1805,7 +2098,14 @@ "InlineComponentData":{ "type":"string", "max":16000, - "min":1 + "min":1, + "pattern":"[^\\x00]+" + }, + "InlineDockerFileTemplate":{ + "type":"string", + "max":16000, + "min":1, + "pattern":"[^\\x00]+" }, "InstanceBlockDeviceMapping":{ "type":"structure", @@ -1915,6 +2215,7 @@ "members":{ "owner":{"shape":"Ownership"}, "filters":{"shape":"FilterList"}, + "byName":{"shape":"Boolean"}, "maxResults":{ "shape":"RestrictedInteger", "box":true @@ -1930,6 +2231,26 @@ "nextToken":{"shape":"PaginationToken"} } }, + "ListContainerRecipesRequest":{ + "type":"structure", + "members":{ + "owner":{"shape":"Ownership"}, + "filters":{"shape":"FilterList"}, + "maxResults":{ + "shape":"RestrictedInteger", + "box":true + }, + "nextToken":{"shape":"NonEmptyString"} + } + }, + "ListContainerRecipesResponse":{ + "type":"structure", + "members":{ + "requestId":{"shape":"NonEmptyString"}, + "containerRecipeSummaryList":{"shape":"ContainerRecipeSummaryList"}, + "nextToken":{"shape":"NonEmptyString"} + } + }, "ListDistributionConfigurationsRequest":{ "type":"structure", "members":{ @@ -2035,11 +2356,13 @@ "members":{ "owner":{"shape":"Ownership"}, "filters":{"shape":"FilterList"}, + "byName":{"shape":"Boolean"}, "maxResults":{ "shape":"RestrictedInteger", "box":true }, - "nextToken":{"shape":"PaginationToken"} + "nextToken":{"shape":"PaginationToken"}, + "includeDeprecated":{"shape":"NullableBoolean"} } }, "ListImagesResponse":{ @@ -2111,7 +2434,8 @@ "OutputResources":{ "type":"structure", "members":{ - "amis":{"shape":"AmiList"} + "amis":{"shape":"AmiList"}, + "containers":{"shape":"ContainerList"} } }, "Ownership":{ @@ -2166,6 +2490,24 @@ "componentArn":{"shape":"ComponentBuildVersionArn"} } }, + "PutContainerRecipePolicyRequest":{ + "type":"structure", + "required":[ + "containerRecipeArn", + "policy" + ], + "members":{ + "containerRecipeArn":{"shape":"ContainerRecipeArn"}, + "policy":{"shape":"ResourcePolicyDocument"} + } + }, + "PutContainerRecipePolicyResponse":{ + "type":"structure", + "members":{ + "requestId":{"shape":"NonEmptyString"}, + "containerRecipeArn":{"shape":"ContainerRecipeArn"} + } + }, "PutImagePolicyRequest":{ "type":"structure", "required":[ @@ -2202,6 +2544,10 @@ "imageRecipeArn":{"shape":"ImageRecipeArn"} } }, + "RegionList":{ + "type":"list", + "member":{"shape":"NonEmptyString"} + }, "ResourceAlreadyExistsException":{ "type":"structure", "members":{ @@ -2370,6 +2716,17 @@ "type":"string", "max":256 }, + "TargetContainerRepository":{ + "type":"structure", + "required":[ + "service", + "repositoryName" + ], + "members":{ + "service":{"shape":"ContainerRepositoryService"}, + "repositoryName":{"shape":"NonEmptyString"} + } + }, "UntagResourceRequest":{ "type":"structure", "required":[ @@ -2423,7 +2780,6 @@ "type":"structure", "required":[ "imagePipelineArn", - "imageRecipeArn", "infrastructureConfigurationArn", "clientToken" ], @@ -2431,6 +2787,7 @@ "imagePipelineArn":{"shape":"ImagePipelineArn"}, "description":{"shape":"NonEmptyString"}, "imageRecipeArn":{"shape":"ImageRecipeArn"}, + "containerRecipeArn":{"shape":"ContainerRecipeArn"}, "infrastructureConfigurationArn":{"shape":"InfrastructureConfigurationArn"}, "distributionConfigurationArn":{"shape":"DistributionConfigurationArn"}, "imageTestsConfiguration":{"shape":"ImageTestsConfiguration"}, diff --git a/models/apis/imagebuilder/2019-12-02/docs-2.json b/models/apis/imagebuilder/2019-12-02/docs-2.json index 91df316e22..0b9b4bbd86 100644 --- a/models/apis/imagebuilder/2019-12-02/docs-2.json +++ b/models/apis/imagebuilder/2019-12-02/docs-2.json @@ -1,15 +1,17 @@ { "version": "2.0", - "service": "

EC2 Image Builder is a fully managed AWS service that makes it easier to automate the creation, management, and deployment of customized, secure, and up-to-date “golden” server images that are pre-installed and pre-configured with software and settings to meet specific IT standards.

", + "service": "

EC2 Image Builder is a fully managed AWS service that makes it easier to automate the creation, management, and deployment of customized, secure, and up-to-date \"golden\" server images that are pre-installed and pre-configured with software and settings to meet specific IT standards.

", "operations": { "CancelImageCreation": "

CancelImageCreation cancels the creation of Image. This operation can only be used on images in a non-terminal state.

", "CreateComponent": "

Creates a new component that can be used to build, validate, test, and assess your image.

", + "CreateContainerRecipe": "

Creates a new container recipe. Container recipes define how images are configured, tested, and assessed.

", "CreateDistributionConfiguration": "

Creates a new distribution configuration. Distribution configurations define and configure the outputs of your pipeline.

", "CreateImage": "

Creates a new image. This request will create a new image along with all of the configured output resources defined in the distribution configuration.

", "CreateImagePipeline": "

Creates a new image pipeline. Image pipelines enable you to automate the creation and distribution of images.

", "CreateImageRecipe": "

Creates a new image recipe. Image recipes define how images are configured, tested, and assessed.

", "CreateInfrastructureConfiguration": "

Creates a new infrastructure configuration. An infrastructure configuration defines the environment in which your image will be built and tested.

", "DeleteComponent": "

Deletes a component build version.

", + "DeleteContainerRecipe": "

Deletes a container recipe.

", "DeleteDistributionConfiguration": "

Deletes a distribution configuration.

", "DeleteImage": "

Deletes an image.

", "DeleteImagePipeline": "

Deletes an image pipeline.

", @@ -17,6 +19,8 @@ "DeleteInfrastructureConfiguration": "

Deletes an infrastructure configuration.

", "GetComponent": "

Gets a component object.

", "GetComponentPolicy": "

Gets a component policy.

", + "GetContainerRecipe": "

Retrieves a container recipe.

", + "GetContainerRecipePolicy": "

Retrieves the policy for a container recipe.

", "GetDistributionConfiguration": "

Gets a distribution configuration.

", "GetImage": "

Gets an image.

", "GetImagePipeline": "

Gets an image pipeline.

", @@ -27,7 +31,8 @@ "ImportComponent": "

Imports a component and transforms its data into a component document.

", "ListComponentBuildVersions": "

Returns the list of component build versions for the specified semantic version.

", "ListComponents": "

Returns the list of component build versions for the specified semantic version.

", - "ListDistributionConfigurations": "

Returns a list of distribution configurations.

", + "ListContainerRecipes": "

Returns a list of container recipes.

", + "ListDistributionConfigurations": "

Returns a list of distribution configurations.

", "ListImageBuildVersions": "

Returns a list of image build versions.

", "ListImagePipelineImages": "

Returns a list of images created by the specified pipeline.

", "ListImagePipelines": "

Returns a list of image pipelines.

", @@ -36,6 +41,7 @@ "ListInfrastructureConfigurations": "

Returns a list of infrastructure configurations.

", "ListTagsForResource": "

Returns the list of tags for the specified resource.

", "PutComponentPolicy": "

Applies a policy to a component. We recommend that you call the RAM API CreateResourceShare to share resources. If you call the Image Builder API PutComponentPolicy, you must also call the RAM API PromoteResourceShareCreatedFromPolicy in order for the resource to be visible to all principals with whom the resource is shared.

", + "PutContainerRecipePolicy": "

Applies a policy to a container image. We recommend that you call the RAM API CreateResourceShare (https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html) to share resources. If you call the Image Builder API PutContainerImagePolicy, you must also call the RAM API PromoteResourceShareCreatedFromPolicy (https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html) in order for the resource to be visible to all principals with whom the resource is shared.

", "PutImagePolicy": "

Applies a policy to an image. We recommend that you call the RAM API CreateResourceShare to share resources. If you call the Image Builder API PutImagePolicy, you must also call the RAM API PromoteResourceShareCreatedFromPolicy in order for the resource to be visible to all principals with whom the resource is shared.

", "PutImageRecipePolicy": "

Applies a policy to an image recipe. We recommend that you call the RAM API CreateResourceShare to share resources. If you call the Image Builder API PutImageRecipePolicy, you must also call the RAM API PromoteResourceShareCreatedFromPolicy in order for the resource to be visible to all principals with whom the resource is shared.

", "StartImagePipelineExecution": "

Manually triggers a pipeline to create an image.

", @@ -88,10 +94,18 @@ "refs": { "Image$sourcePipelineArn": "

The Amazon Resource Name (ARN) of the image pipeline that created this image.

", "ImagePipeline$imageRecipeArn": "

The Amazon Resource Name (ARN) of the image recipe associated with this image pipeline.

", + "ImagePipeline$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe that is used for this pipeline.

", "ImagePipeline$infrastructureConfigurationArn": "

The Amazon Resource Name (ARN) of the infrastructure configuration associated with this image pipeline.

", "ImagePipeline$distributionConfigurationArn": "

The Amazon Resource Name (ARN) of the distribution configuration associated with this image pipeline.

" } }, + "Boolean": { + "base": null, + "refs": { + "ListComponentsRequest$byName": "

Returns the list of component build versions for the specified semantic version.

", + "ListImagesRequest$byName": "

Requests a list of images with a specific recipe name.

" + } + }, "CallRateLimitExceededException": { "base": "

You have exceeded the permitted request rate for the specific operation.

", "refs": { @@ -119,6 +133,8 @@ "CancelImageCreationResponse$clientToken": "

The idempotency token used to make this request idempotent.

", "CreateComponentRequest$clientToken": "

The idempotency token of the component.

", "CreateComponentResponse$clientToken": "

The idempotency token used to make this request idempotent.

", + "CreateContainerRecipeRequest$clientToken": "

The client token used to make this request idempotent.

", + "CreateContainerRecipeResponse$clientToken": "

The client token used to make this request idempotent.

", "CreateDistributionConfigurationRequest$clientToken": "

The idempotency token of the distribution configuration.

", "CreateDistributionConfigurationResponse$clientToken": "

The idempotency token used to make this request idempotent.

", "CreateImagePipelineRequest$clientToken": "

The idempotency token used to make this request idempotent.

", @@ -168,6 +184,8 @@ "ComponentConfigurationList": { "base": null, "refs": { + "ContainerRecipe$components": "

Components for build and test that are included in the container recipe.

", + "CreateContainerRecipeRequest$components": "

Components for build and test that are included in the container recipe.

", "CreateImageRecipeRequest$components": "

The components of the image recipe.

", "ImageRecipe$components": "

The components of the image recipe.

" } @@ -230,6 +248,72 @@ "ListComponentsResponse$componentVersionList": "

The list of component semantic versions.

" } }, + "Container": { + "base": "

A container encapsulates the runtime environment for an application.

", + "refs": { + "ContainerList$member": null + } + }, + "ContainerDistributionConfiguration": { + "base": "

Container distribution settings for encryption, licensing, and sharing in a specific Region.

", + "refs": { + "Distribution$containerDistributionConfiguration": "

Container distribution settings for encryption, licensing, and sharing in a specific Region.

" + } + }, + "ContainerList": { + "base": null, + "refs": { + "OutputResources$containers": "

Container images that the pipeline has generated and stored in the output repository.

" + } + }, + "ContainerRecipe": { + "base": "

A container recipe.

", + "refs": { + "GetContainerRecipeResponse$containerRecipe": "

The container recipe object that is returned.

", + "Image$containerRecipe": "

The container recipe used to create the container image type.

" + } + }, + "ContainerRecipeArn": { + "base": null, + "refs": { + "CreateContainerRecipeResponse$containerRecipeArn": "

Returns the Amazon Resource Name (ARN) of the container recipe that the request created.

", + "CreateImagePipelineRequest$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe that is used to configure images created by this container pipeline.

", + "CreateImageRequest$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe that defines how images are configured and tested.

", + "DeleteContainerRecipeRequest$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe to delete.

", + "DeleteContainerRecipeResponse$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe that was deleted.

", + "GetContainerRecipePolicyRequest$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe for the policy being requested.

", + "GetContainerRecipeRequest$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe to retrieve.

", + "PutContainerRecipePolicyRequest$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe that this policy should be applied to.

", + "PutContainerRecipePolicyResponse$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container recipe that this policy was applied to.

", + "UpdateImagePipelineRequest$containerRecipeArn": "

The Amazon Resource Name (ARN) of the container pipeline to update.

" + } + }, + "ContainerRecipeSummary": { + "base": "

A summary of a container recipe

", + "refs": { + "ContainerRecipeSummaryList$member": null + } + }, + "ContainerRecipeSummaryList": { + "base": null, + "refs": { + "ListContainerRecipesResponse$containerRecipeSummaryList": "

The list of container recipes returned for the request.

" + } + }, + "ContainerRepositoryService": { + "base": null, + "refs": { + "TargetContainerRepository$service": "

Specifies the service in which this image was registered.

" + } + }, + "ContainerType": { + "base": null, + "refs": { + "ContainerRecipe$containerType": "

Specifies the type of container, such as Docker.

", + "ContainerRecipeSummary$containerType": "

Specifies the type of container, such as \"Docker\".

", + "CreateContainerRecipeRequest$containerType": "

The type of container to create.

" + } + }, "CreateComponentRequest": { "base": null, "refs": { @@ -240,6 +324,16 @@ "refs": { } }, + "CreateContainerRecipeRequest": { + "base": null, + "refs": { + } + }, + "CreateContainerRecipeResponse": { + "base": null, + "refs": { + } + }, "CreateDistributionConfigurationRequest": { "base": null, "refs": { @@ -296,6 +390,8 @@ "Component$dateCreated": "

The date that the component was created.

", "ComponentSummary$dateCreated": "

The date that the component was created.

", "ComponentVersion$dateCreated": "

The date that the component was created.

", + "ContainerRecipe$dateCreated": "

The date when this container recipe was created.

", + "ContainerRecipeSummary$dateCreated": "

The date when this container recipe was created.

", "DistributionConfiguration$dateCreated": "

The date on which this distribution configuration was created.

", "DistributionConfiguration$dateUpdated": "

The date on which this distribution configuration was last updated.

", "DistributionConfigurationSummary$dateCreated": "

The date on which the distribution configuration was created.

", @@ -325,6 +421,16 @@ "refs": { } }, + "DeleteContainerRecipeRequest": { + "base": null, + "refs": { + } + }, + "DeleteContainerRecipeResponse": { + "base": null, + "refs": { + } + }, "DeleteDistributionConfigurationRequest": { "base": null, "refs": { @@ -428,6 +534,12 @@ "DistributionConfiguration$timeoutMinutes": "

The maximum duration in minutes for this distribution configuration.

" } }, + "DockerFileTemplate": { + "base": null, + "refs": { + "ContainerRecipe$dockerfileTemplateData": "

Dockerfiles are text documents that are used to build Docker containers, and ensure that they contain all of the elements required by the application running inside. The template data consists of contextual variables where Image Builder places build information or scripts, based on your container image recipe.

" + } + }, "EbsInstanceBlockDeviceSpecification": { "base": "

Amazon EBS-specific block device mapping specifications.

", "refs": { @@ -490,6 +602,7 @@ "base": null, "refs": { "ListComponentsRequest$filters": "

The filters.

", + "ListContainerRecipesRequest$filters": "

Request filters that are used to narrow the list of container images that are returned.

", "ListDistributionConfigurationsRequest$filters": "

The filters.

", "ListImageBuildVersionsRequest$filters": "

The filters.

", "ListImagePipelineImagesRequest$filters": "

The filters.

", @@ -542,6 +655,26 @@ "refs": { } }, + "GetContainerRecipePolicyRequest": { + "base": null, + "refs": { + } + }, + "GetContainerRecipePolicyResponse": { + "base": null, + "refs": { + } + }, + "GetContainerRecipeRequest": { + "base": null, + "refs": { + } + }, + "GetContainerRecipeResponse": { + "base": null, + "refs": { + } + }, "GetDistributionConfigurationRequest": { "base": null, "refs": { @@ -643,6 +776,8 @@ "Component$arn": "

The Amazon Resource Name (ARN) of the component.

", "ComponentSummary$arn": "

The Amazon Resource Name (ARN) of the component.

", "ComponentVersion$arn": "

The Amazon Resource Name (ARN) of the component.

", + "ContainerRecipe$arn": "

The Amazon Resource Name (ARN) of the container recipe.

", + "ContainerRecipeSummary$arn": "

The Amazon Resource Name (ARN) of the container recipe.

", "DistributionConfiguration$arn": "

The Amazon Resource Name (ARN) of the distribution configuration.

", "DistributionConfigurationSummary$arn": "

The Amazon Resource Name (ARN) of the distribution configuration.

", "Image$arn": "

The Amazon Resource Name (ARN) of the image.

", @@ -761,6 +896,15 @@ "ImageTestsConfiguration$timeoutMinutes": "

The maximum time in minutes that tests are permitted to run.

" } }, + "ImageType": { + "base": null, + "refs": { + "Image$type": "

Specifies whether this is an AMI or container image.

", + "ImageRecipe$type": "

Specifies which type of image is created by the recipe - an AMI or a container image.

", + "ImageSummary$type": "

Specifies whether this is an AMI or container image.

", + "ImageVersion$type": "

Specifies whether this is an AMI or container image.

" + } + }, "ImageVersion": { "base": "

An image semantic version.

", "refs": { @@ -834,6 +978,12 @@ "CreateComponentRequest$data": "

The data of the component. Used to specify the data inline. Either data or uri can be used to specify the data within the component.

" } }, + "InlineDockerFileTemplate": { + "base": null, + "refs": { + "CreateContainerRecipeRequest$dockerfileTemplateData": "

The Dockerfile template used to build your image as an inline data blob.

" + } + }, "InstanceBlockDeviceMapping": { "base": "

Defines block device mappings for the instance used to configure your image.

", "refs": { @@ -929,6 +1079,16 @@ "refs": { } }, + "ListContainerRecipesRequest": { + "base": null, + "refs": { + } + }, + "ListContainerRecipesResponse": { + "base": null, + "refs": { + } + }, "ListDistributionConfigurationsRequest": { "base": null, "refs": { @@ -1037,10 +1197,25 @@ "ComponentSummary$changeDescription": "

The change description of the component.

", "ComponentVersion$description": "

The description of the component.

", "ComponentVersion$owner": "

The owner of the component.

", + "Container$region": "

Containers and container images are Region-specific. This is the Region context for the container.

", + "ContainerDistributionConfiguration$description": "

The description of the container distribution configuration.

", + "ContainerRecipe$description": "

The description of the container recipe.

", + "ContainerRecipe$owner": "

The owner of the container recipe.

", + "ContainerRecipe$kmsKeyId": "

Identifies which KMS key is used to encrypt the container image for distribution to the target Region.

", + "ContainerRecipe$parentImage": "

The source image for the container recipe.

", + "ContainerRecipe$workingDirectory": "

The working directory for use during build and test workflows.

", + "ContainerRecipeSummary$owner": "

The owner of the container recipe.

", + "ContainerRecipeSummary$parentImage": "

The source image for the container recipe.

", "CreateComponentRequest$description": "

The description of the component. Describes the contents of the component.

", "CreateComponentRequest$changeDescription": "

The change description of the component. Describes what change has been made in this version, or what makes this version different from other versions of this component.

", "CreateComponentRequest$kmsKeyId": "

The ID of the KMS key that should be used to encrypt this component.

", "CreateComponentResponse$requestId": "

The request ID that uniquely identifies this request.

", + "CreateContainerRecipeRequest$description": "

The description of the container recipe.

", + "CreateContainerRecipeRequest$imageOsVersionOverride": "

Specifies the operating system version for the source image.

", + "CreateContainerRecipeRequest$parentImage": "

The source image for the container recipe.

", + "CreateContainerRecipeRequest$workingDirectory": "

The working directory for use during build and test workflows.

", + "CreateContainerRecipeRequest$kmsKeyId": "

Identifies which KMS key is used to encrypt the container image.

", + "CreateContainerRecipeResponse$requestId": "

The request ID that uniquely identifies this request.

", "CreateDistributionConfigurationRequest$description": "

The description of the distribution configuration.

", "CreateDistributionConfigurationResponse$requestId": "

The request ID that uniquely identifies this request.

", "CreateImagePipelineRequest$description": "

The description of the image pipeline.

", @@ -1056,6 +1231,7 @@ "CreateInfrastructureConfigurationRequest$keyPair": "

The key pair of the infrastructure configuration. This can be used to log on to and debug the instance used to create your image.

", "CreateInfrastructureConfigurationResponse$requestId": "

The request ID that uniquely identifies this request.

", "DeleteComponentResponse$requestId": "

The request ID that uniquely identifies this request.

", + "DeleteContainerRecipeResponse$requestId": "

The request ID that uniquely identifies this request.

", "DeleteDistributionConfigurationResponse$requestId": "

The request ID that uniquely identifies this request.

", "DeleteImagePipelineResponse$requestId": "

The request ID that uniquely identifies this request.

", "DeleteImageRecipeResponse$requestId": "

The request ID that uniquely identifies this request.

", @@ -1068,6 +1244,8 @@ "EbsInstanceBlockDeviceSpecification$snapshotId": "

The snapshot that defines the device contents.

", "GetComponentPolicyResponse$requestId": "

The request ID that uniquely identifies this request.

", "GetComponentResponse$requestId": "

The request ID that uniquely identifies this request.

", + "GetContainerRecipePolicyResponse$requestId": "

The request ID that uniquely identifies this request.

", + "GetContainerRecipeResponse$requestId": "

The request ID that uniquely identifies this request.

", "GetDistributionConfigurationResponse$requestId": "

The request ID that uniquely identifies this request.

", "GetImagePipelineResponse$requestId": "

The request ID that uniquely identifies this request.

", "GetImagePolicyResponse$requestId": "

The request ID that uniquely identifies this request.

", @@ -1100,6 +1278,9 @@ "InstanceBlockDeviceMapping$virtualName": "

Use to manage instance ephemeral devices.

", "ListComponentBuildVersionsResponse$requestId": "

The request ID that uniquely identifies this request.

", "ListComponentsResponse$requestId": "

The request ID that uniquely identifies this request.

", + "ListContainerRecipesRequest$nextToken": "

Provides a token for pagination, which determines where to begin the next set of results when the current set reaches the maximum for one request.

", + "ListContainerRecipesResponse$requestId": "

The request ID that uniquely identifies this request.

", + "ListContainerRecipesResponse$nextToken": "

The next token field is used for paginated responses. When this is not empty, there are additional container recipes that the service has not included in this response. Use this token with the next request to retrieve additional list items.

", "ListDistributionConfigurationsResponse$requestId": "

The request ID that uniquely identifies this request.

", "ListImageBuildVersionsResponse$requestId": "

The request ID that uniquely identifies this request.

", "ListImagePipelineImagesResponse$requestId": "

The request ID that uniquely identifies this request.

", @@ -1108,14 +1289,17 @@ "ListImagesResponse$requestId": "

The request ID that uniquely identifies this request.

", "ListInfrastructureConfigurationsResponse$requestId": "

The request ID that uniquely identifies this request.

", "PutComponentPolicyResponse$requestId": "

The request ID that uniquely identifies this request.

", + "PutContainerRecipePolicyResponse$requestId": "

The request ID that uniquely identifies this request.

", "PutImagePolicyResponse$requestId": "

The request ID that uniquely identifies this request.

", "PutImageRecipePolicyResponse$requestId": "

The request ID that uniquely identifies this request.

", + "RegionList$member": null, "S3Logs$s3BucketName": "

The Amazon S3 bucket in which to store the logs.

", "S3Logs$s3KeyPrefix": "

The Amazon S3 path in which to store the logs.

", "Schedule$scheduleExpression": "

The cron expression determines how often EC2 Image Builder evaluates your pipelineExecutionStartCondition.

For information on how to format a cron expression in Image Builder, see Use cron expressions in EC2 Image Builder.

", "SecurityGroupIds$member": null, "StartImagePipelineExecutionResponse$requestId": "

The request ID that uniquely identifies this request.

", "StringList$member": null, + "TargetContainerRepository$repositoryName": "

The name of the container repository where the output container image is stored. This name is prefixed by the repository location.

", "UpdateDistributionConfigurationRequest$description": "

The description of the distribution configuration.

", "UpdateDistributionConfigurationResponse$requestId": "

The request ID that uniquely identifies this request.

", "UpdateImagePipelineRequest$description": "

The description of the image pipeline.

", @@ -1131,6 +1315,7 @@ "base": null, "refs": { "Component$encrypted": "

The encryption status of the component.

", + "ContainerRecipe$encrypted": "

A flag that indicates if the target container is encrypted.

", "CreateImagePipelineRequest$enhancedImageMetadataEnabled": "

Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default.

", "CreateImageRequest$enhancedImageMetadataEnabled": "

Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default.

", "CreateInfrastructureConfigurationRequest$terminateInstanceOnFailure": "

The terminate instance on failure setting of the infrastructure configuration. Set to false if you want Image Builder to retain the instance used to configure your AMI if the build or test phase of your workflow fails.

", @@ -1140,6 +1325,7 @@ "ImagePipeline$enhancedImageMetadataEnabled": "

Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default.

", "ImageTestsConfiguration$imageTestsEnabled": "

Defines if tests should be executed when building this image.

", "InfrastructureConfiguration$terminateInstanceOnFailure": "

The terminate instance on failure configuration of the infrastructure configuration.

", + "ListImagesRequest$includeDeprecated": "

Includes deprecated images in the response list.

", "UpdateImagePipelineRequest$enhancedImageMetadataEnabled": "

Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default.

", "UpdateInfrastructureConfigurationRequest$terminateInstanceOnFailure": "

The terminate instance on failure setting of the infrastructure configuration. Set to false if you want Image Builder to retain the instance used to configure your AMI if the build or test phase of your workflow fails.

" } @@ -1173,6 +1359,7 @@ "base": null, "refs": { "ListComponentsRequest$owner": "

The owner defines which components you want to list. By default, this request will only show components owned by your account. You can use this field to specify if you want to view components owned by yourself, by Amazon, or those components that have been shared with you by other customers.

", + "ListContainerRecipesRequest$owner": "

Returns container recipes belonging to the specified owner, that have been shared with you. You can omit this field to return container recipes belonging to your account.

", "ListImageRecipesRequest$owner": "

The owner defines which image recipes you want to list. By default, this request will only show image recipes owned by your account. You can use this field to specify if you want to view image recipes owned by yourself, by Amazon, or those image recipes that have been shared with you by other customers.

", "ListImagesRequest$owner": "

The owner defines which images you want to list. By default, this request will only show images owned by your account. You can use this field to specify if you want to view images owned by yourself, by Amazon, or those images that have been shared with you by other customers.

" } @@ -1220,7 +1407,10 @@ "Component$platform": "

The platform of the component.

", "ComponentSummary$platform": "

The platform of the component.

", "ComponentVersion$platform": "

The platform of the component.

", + "ContainerRecipe$platform": "

The system platform for the container, such as Windows or Linux.

", + "ContainerRecipeSummary$platform": "

The system platform for the container, such as Windows or Linux.

", "CreateComponentRequest$platform": "

The platform of the component.

", + "CreateContainerRecipeRequest$platformOverride": "

Specifies the operating system platform when you use a custom source image.

", "Image$platform": "

The platform of the image.

", "ImagePipeline$platform": "

The platform of the image pipeline.

", "ImageRecipe$platform": "

The platform of the image recipe.

", @@ -1240,6 +1430,16 @@ "refs": { } }, + "PutContainerRecipePolicyRequest": { + "base": null, + "refs": { + } + }, + "PutContainerRecipePolicyResponse": { + "base": null, + "refs": { + } + }, "PutImagePolicyRequest": { "base": null, "refs": { @@ -1260,6 +1460,12 @@ "refs": { } }, + "RegionList": { + "base": null, + "refs": { + "DistributionConfigurationSummary$regions": "

A list of Regions where the container image is distributed to.

" + } + }, "ResourceAlreadyExistsException": { "base": "

The resource that you are trying to create already exists.

", "refs": { @@ -1281,7 +1487,10 @@ "Component$name": "

The name of the component.

", "ComponentSummary$name": "

The name of the component.

", "ComponentVersion$name": "

The name of the component.

", + "ContainerRecipe$name": "

The name of the container recipe.

", + "ContainerRecipeSummary$name": "

The name of the container recipe.

", "CreateComponentRequest$name": "

The name of the component.

", + "CreateContainerRecipeRequest$name": "

The name of the container recipe.

", "CreateDistributionConfigurationRequest$name": "

The name of the distribution configuration.

", "CreateImagePipelineRequest$name": "

The name of the image pipeline.

", "CreateImageRecipeRequest$name": "

The name of the image recipe.

", @@ -1309,9 +1518,11 @@ "base": null, "refs": { "GetComponentPolicyResponse$policy": "

The component policy.

", + "GetContainerRecipePolicyResponse$policy": "

The container recipe policy object that is returned.

", "GetImagePolicyResponse$policy": "

The image policy object.

", "GetImageRecipePolicyResponse$policy": "

The image recipe policy object.

", "PutComponentPolicyRequest$policy": "

The policy to apply.

", + "PutContainerRecipePolicyRequest$policy": "

The policy to apply to the container recipe.

", "PutImagePolicyRequest$policy": "

The policy to apply.

", "PutImageRecipePolicyRequest$policy": "

The policy to apply.

" } @@ -1330,6 +1541,7 @@ "refs": { "ListComponentBuildVersionsRequest$maxResults": "

The maximum items to return in a request.

", "ListComponentsRequest$maxResults": "

The maximum items to return in a request.

", + "ListContainerRecipesRequest$maxResults": "

The maximum number of results to return in the list.

", "ListDistributionConfigurationsRequest$maxResults": "

The maximum items to return in a request.

", "ListImageBuildVersionsRequest$maxResults": "

The maximum items to return in a request.

", "ListImagePipelineImagesRequest$maxResults": "

The maximum items to return in a request.

", @@ -1396,6 +1608,8 @@ "StringList": { "base": null, "refs": { + "Container$imageUris": "

A list of URIs for containers created in the context Region.

", + "ContainerDistributionConfiguration$containerTags": "

Tags that are attached to the container distribution configuration.

", "LaunchPermissionConfiguration$userGroups": "

The name of the group.

" } }, @@ -1419,7 +1633,10 @@ "AmiDistributionConfiguration$amiTags": "

The tags to apply to AMIs distributed to this Region.

", "Component$tags": "

The tags associated with the component.

", "ComponentSummary$tags": "

The tags associated with the component.

", + "ContainerRecipe$tags": "

Tags that are attached to the container recipe.

", + "ContainerRecipeSummary$tags": "

Tags that are attached to the container recipe.

", "CreateComponentRequest$tags": "

The tags of the component.

", + "CreateContainerRecipeRequest$tags": "

Tags that are attached to the container recipe.

", "CreateDistributionConfigurationRequest$tags": "

The tags of the distribution configuration.

", "CreateImagePipelineRequest$tags": "

The tags of the image pipeline.

", "CreateImageRecipeRequest$tags": "

The tags of the image recipe.

", @@ -1456,6 +1673,14 @@ "TagMap$value": null } }, + "TargetContainerRepository": { + "base": "

The container repository where the output container image is stored.

", + "refs": { + "ContainerDistributionConfiguration$targetRepository": "

The destination repository for the container distribution configuration.

", + "ContainerRecipe$targetRepository": "

The destination repository for the container image.

", + "CreateContainerRecipeRequest$targetRepository": "

The destination repository for the container image.

" + } + }, "UntagResourceRequest": { "base": null, "refs": { @@ -1500,6 +1725,7 @@ "base": null, "refs": { "CreateComponentRequest$uri": "

The uri of the component. Must be an S3 URL and the requester must have permission to access the S3 bucket. If you use S3, you can specify component content up to your service quota. Either data or uri can be used to specify the data within the component.

", + "CreateContainerRecipeRequest$dockerfileTemplateUri": "

The S3 URI for the Dockerfile that will be used to build your container image.

", "ImportComponentRequest$uri": "

The uri of the component. Must be an S3 URL and the requester must have permission to access the S3 bucket. If you use S3, you can specify component content up to your service quota. Either data or uri can be used to specify the data within the component.

" } }, @@ -1509,7 +1735,9 @@ "Component$version": "

The version of the component.

", "ComponentSummary$version": "

The version of the component.

", "ComponentVersion$version": "

The semantic version of the component.

", + "ContainerRecipe$version": "

The semantic version of the container recipe (<major>.<minor>.<patch>).

", "CreateComponentRequest$semanticVersion": "

The semantic version of the component. This version follows the semantic version syntax. For example, major.minor.patch. This could be versioned like software (2.0.1) or like a date (2019.12.01).

", + "CreateContainerRecipeRequest$semanticVersion": "

The semantic version of the container recipe (<major>.<minor>.<patch>).

", "CreateImageRecipeRequest$semanticVersion": "

The semantic version of the image recipe.

", "Image$version": "

The semantic version of the image.

", "ImageRecipe$version": "

The version of the image recipe.

", diff --git a/models/apis/imagebuilder/2019-12-02/paginators-1.json b/models/apis/imagebuilder/2019-12-02/paginators-1.json index f1aa23df30..157e6543cc 100644 --- a/models/apis/imagebuilder/2019-12-02/paginators-1.json +++ b/models/apis/imagebuilder/2019-12-02/paginators-1.json @@ -3,47 +3,62 @@ "ListComponentBuildVersions": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "componentSummaryList" }, "ListComponents": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "componentVersionList" + }, + "ListContainerRecipes": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "containerRecipeSummaryList" }, "ListDistributionConfigurations": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "distributionConfigurationSummaryList" }, "ListImageBuildVersions": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "imageSummaryList" }, "ListImagePipelineImages": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "imageSummaryList" }, "ListImagePipelines": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "imagePipelineList" }, "ListImageRecipes": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "imageRecipeSummaryList" }, "ListImages": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "imageVersionList" }, "ListInfrastructureConfigurations": { "input_token": "nextToken", "output_token": "nextToken", - "limit_key": "maxResults" + "limit_key": "maxResults", + "result_key": "infrastructureConfigurationSummaryList" } } } diff --git a/models/apis/kms/2014-11-01/api-2.json b/models/apis/kms/2014-11-01/api-2.json index f745c2ab6c..f979481ffe 100644 --- a/models/apis/kms/2014-11-01/api-2.json +++ b/models/apis/kms/2014-11-01/api-2.json @@ -818,7 +818,9 @@ "members":{ "AliasName":{"shape":"AliasNameType"}, "AliasArn":{"shape":"ArnType"}, - "TargetKeyId":{"shape":"KeyIdType"} + "TargetKeyId":{"shape":"KeyIdType"}, + "CreationDate":{"shape":"DateType"}, + "LastUpdatedDate":{"shape":"DateType"} } }, "AliasNameType":{ diff --git a/models/apis/kms/2014-11-01/docs-2.json b/models/apis/kms/2014-11-01/docs-2.json index c0f1d1b07c..3eb7c90629 100644 --- a/models/apis/kms/2014-11-01/docs-2.json +++ b/models/apis/kms/2014-11-01/docs-2.json @@ -2,52 +2,52 @@ "version": "2.0", "service": "AWS Key Management Service

AWS Key Management Service (AWS KMS) is an encryption and key management web service. This guide describes the AWS KMS operations that you can call programmatically. For general information about AWS KMS, see the AWS Key Management Service Developer Guide .

AWS provides SDKs that consist of libraries and sample code for various programming languages and platforms (Java, Ruby, .Net, macOS, Android, etc.). The SDKs provide a convenient way to create programmatic access to AWS KMS and other AWS services. For example, the SDKs take care of tasks such as signing requests (see below), managing errors, and retrying requests automatically. For more information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

We recommend that you use the AWS SDKs to make programmatic API calls to AWS KMS.

Clients must support TLS (Transport Layer Security) 1.0. We recommend TLS 1.2. Clients must also support cipher suites with Perfect Forward Secrecy (PFS) such as Ephemeral Diffie-Hellman (DHE) or Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). Most modern systems such as Java 7 and later support these modes.

Signing Requests

Requests must be signed by using an access key ID and a secret access key. We strongly recommend that you do not use your AWS account (root) access key ID and secret key for everyday work with AWS KMS. Instead, use the access key ID and secret access key for an IAM user. You can also use the AWS Security Token Service to generate temporary security credentials that you can use to sign requests.

All AWS KMS operations require Signature Version 4.

Logging API Requests

AWS KMS supports AWS CloudTrail, a service that logs AWS API calls and related events for your AWS account and delivers them to an Amazon S3 bucket that you specify. By using the information collected by CloudTrail, you can determine what requests were made to AWS KMS, who made the request, when it was made, and so on. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide.

Additional Resources

For more information about credentials and request signing, see the following:

Commonly Used API Operations

Of the API operations discussed in this guide, the following will prove the most useful for most applications. You will likely perform operations other than these, such as creating keys and assigning policies, by using the console.

", "operations": { - "CancelKeyDeletion": "

Cancels the deletion of a customer master key (CMK). When this operation succeeds, the key state of the CMK is Disabled. To enable the CMK, use EnableKey. You cannot perform this operation on a CMK in a different AWS account.

For more information about scheduling and canceling deletion of a CMK, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "ConnectCustomKeyStore": "

Connects or reconnects a custom key store to its associated AWS CloudHSM cluster.

The custom key store must be connected before you can create customer master keys (CMKs) in the key store or use the CMKs it contains. You can disconnect and reconnect a custom key store at any time.

To connect a custom key store, its associated AWS CloudHSM cluster must have at least one active HSM. To get the number of active HSMs in a cluster, use the DescribeClusters operation. To add HSMs to the cluster, use the CreateHsm operation. Also, the kmsuser crypto user (CU) must not be logged into the cluster. This prevents AWS KMS from using this account to log in.

The connection process can take an extended amount of time to complete; up to 20 minutes. This operation starts the connection process, but it does not wait for it to complete. When it succeeds, this operation quickly returns an HTTP 200 response and a JSON object with no properties. However, this response does not indicate that the custom key store is connected. To get the connection state of the custom key store, use the DescribeCustomKeyStores operation.

During the connection process, AWS KMS finds the AWS CloudHSM cluster that is associated with the custom key store, creates the connection infrastructure, connects to the cluster, logs into the AWS CloudHSM client as the kmsuser CU, and rotates its password.

The ConnectCustomKeyStore operation might fail for various reasons. To find the reason, use the DescribeCustomKeyStores operation and see the ConnectionErrorCode in the response. For help interpreting the ConnectionErrorCode, see CustomKeyStoresListEntry.

To fix the failure, use the DisconnectCustomKeyStore operation to disconnect the custom key store, correct the error, use the UpdateCustomKeyStore operation if necessary, and then use ConnectCustomKeyStore again.

If you are having trouble connecting or disconnecting a custom key store, see Troubleshooting a Custom Key Store in the AWS Key Management Service Developer Guide.

", - "CreateAlias": "

Creates a display name for a customer managed customer master key (CMK). You can use an alias to identify a CMK in cryptographic operations, such as Encrypt and GenerateDataKey. You can change the CMK associated with the alias at any time.

Aliases are easier to remember than key IDs. They can also help to simplify your applications. For example, if you use an alias in your code, you can change the CMK your code uses by associating a given alias with a different CMK.

To run the same code in multiple AWS regions, use an alias in your code, such as alias/ApplicationKey. Then, in each AWS Region, create an alias/ApplicationKey alias that is associated with a CMK in that Region. When you run your code, it uses the alias/ApplicationKey CMK for that AWS Region without any Region-specific code.

This operation does not return a response. To get the alias that you created, use the ListAliases operation.

To use aliases successfully, be aware of the following information.

Because an alias is not a property of a CMK, you can delete and change the aliases of a CMK without affecting the CMK. Also, aliases do not appear in the response from the DescribeKey operation. To get the aliases and alias ARNs of CMKs in each AWS account and Region, use the ListAliases operation.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "CreateCustomKeyStore": "

Creates a custom key store that is associated with an AWS CloudHSM cluster that you own and manage.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

Before you create the custom key store, you must assemble the required elements, including an AWS CloudHSM cluster that fulfills the requirements for a custom key store. For details about the required elements, see Assemble the Prerequisites in the AWS Key Management Service Developer Guide.

When the operation completes successfully, it returns the ID of the new custom key store. Before you can use your new custom key store, you need to use the ConnectCustomKeyStore operation to connect the new key store to its AWS CloudHSM cluster. Even if you are not going to use your custom key store immediately, you might want to connect it to verify that all settings are correct and then disconnect it until you are ready to use it.

For help with failures, see Troubleshooting a Custom Key Store in the AWS Key Management Service Developer Guide.

", - "CreateGrant": "

Adds a grant to a customer master key (CMK). The grant allows the grantee principal to use the CMK when the conditions specified in the grant are met. When setting permissions, grants are an alternative to key policies.

To create a grant that allows a cryptographic operation only when the request includes a particular encryption context, use the Constraints parameter. For details, see GrantConstraints.

You can create grants on symmetric and asymmetric CMKs. However, if the grant allows an operation that the CMK does not support, CreateGrant fails with a ValidationException.

For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter. For more information about grants, see Grants in the AWS Key Management Service Developer Guide .

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "CreateKey": "

Creates a unique customer managed customer master key (CMK) in your AWS account and Region. You cannot use this operation to create a CMK in a different AWS account.

You can use the CreateKey operation to create symmetric or asymmetric CMKs.

For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

To create different types of CMKs, use the following guidance:

Asymmetric CMKs

To create an asymmetric CMK, use the CustomerMasterKeySpec parameter to specify the type of key material in the CMK. Then, use the KeyUsage parameter to determine whether the CMK will be used to encrypt and decrypt or sign and verify. You can't change these properties after the CMK is created.

Symmetric CMKs

When creating a symmetric CMK, you don't need to specify the CustomerMasterKeySpec or KeyUsage parameters. The default value for CustomerMasterKeySpec, SYMMETRIC_DEFAULT, and the default value for KeyUsage, ENCRYPT_DECRYPT, are the only valid values for symmetric CMKs.

Imported Key Material

To import your own key material, begin by creating a symmetric CMK with no key material. To do this, use the Origin parameter of CreateKey with a value of EXTERNAL. Next, use GetParametersForImport operation to get a public key and import token, and use the public key to encrypt your key material. Then, use ImportKeyMaterial with your import token to import the key material. For step-by-step instructions, see Importing Key Material in the AWS Key Management Service Developer Guide . You cannot import the key material into an asymmetric CMK.

Custom Key Stores

To create a symmetric CMK in a custom key store, use the CustomKeyStoreId parameter to specify the custom key store. You must also use the Origin parameter with a value of AWS_CLOUDHSM. The AWS CloudHSM cluster that is associated with the custom key store must have at least two active HSMs in different Availability Zones in the AWS Region.

You cannot create an asymmetric CMK in a custom key store. For information about custom key stores in AWS KMS see Using Custom Key Stores in the AWS Key Management Service Developer Guide .

", - "Decrypt": "

Decrypts ciphertext that was encrypted by a AWS KMS customer master key (CMK) using any of the following operations:

You can use this operation to decrypt ciphertext that was encrypted under a symmetric or asymmetric CMK. When the CMK is asymmetric, you must specify the CMK and the encryption algorithm that was used to encrypt the ciphertext. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

The Decrypt operation also decrypts ciphertext that was encrypted outside of AWS KMS by the public key in an AWS KMS asymmetric CMK. However, it cannot decrypt ciphertext produced by other libraries, such as the AWS Encryption SDK or Amazon S3 client-side encryption. These libraries return a ciphertext format that is incompatible with AWS KMS.

If the ciphertext was encrypted under a symmetric CMK, you do not need to specify the CMK or the encryption algorithm. AWS KMS can get this information from metadata that it adds to the symmetric ciphertext blob. However, if you prefer, you can specify the KeyId to ensure that a particular CMK is used to decrypt the ciphertext. If you specify a different CMK than the one used to encrypt the ciphertext, the Decrypt operation fails.

Whenever possible, use key policies to give users permission to call the Decrypt operation on a particular CMK, instead of using IAM policies. Otherwise, you might create an IAM user policy that gives the user Decrypt permission on all CMKs. This user could decrypt ciphertext that was encrypted by CMKs in other accounts if the key policy for the cross-account CMK permits it. If you must use an IAM policy for Decrypt permissions, limit the user to particular CMKs or particular trusted accounts.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "DeleteAlias": "

Deletes the specified alias. You cannot perform this operation on an alias in a different AWS account.

Because an alias is not a property of a CMK, you can delete and change the aliases of a CMK without affecting the CMK. Also, aliases do not appear in the response from the DescribeKey operation. To get the aliases of all CMKs, use the ListAliases operation.

Each CMK can have multiple aliases. To change the alias of a CMK, use DeleteAlias to delete the current alias and CreateAlias to create a new alias. To associate an existing alias with a different customer master key (CMK), call UpdateAlias.

", - "DeleteCustomKeyStore": "

Deletes a custom key store. This operation does not delete the AWS CloudHSM cluster that is associated with the custom key store, or affect any users or keys in the cluster.

The custom key store that you delete cannot contain any AWS KMS customer master keys (CMKs). Before deleting the key store, verify that you will never need to use any of the CMKs in the key store for any cryptographic operations. Then, use ScheduleKeyDeletion to delete the AWS KMS customer master keys (CMKs) from the key store. When the scheduled waiting period expires, the ScheduleKeyDeletion operation deletes the CMKs. Then it makes a best effort to delete the key material from the associated cluster. However, you might need to manually delete the orphaned key material from the cluster and its backups.

After all CMKs are deleted from AWS KMS, use DisconnectCustomKeyStore to disconnect the key store from AWS KMS. Then, you can delete the custom key store.

Instead of deleting the custom key store, consider using DisconnectCustomKeyStore to disconnect it from AWS KMS. While the key store is disconnected, you cannot create or use the CMKs in the key store. But, you do not need to delete CMKs and you can reconnect a disconnected custom key store at any time.

If the operation succeeds, it returns a JSON object with no properties.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

", - "DeleteImportedKeyMaterial": "

Deletes key material that you previously imported. This operation makes the specified customer master key (CMK) unusable. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide. You cannot perform this operation on a CMK in a different AWS account.

When the specified CMK is in the PendingDeletion state, this operation does not change the CMK's state. Otherwise, it changes the CMK's state to PendingImport.

After you delete key material, you can use ImportKeyMaterial to reimport the same key material into the CMK.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "DescribeCustomKeyStores": "

Gets information about custom key stores in the account and region.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

By default, this operation returns information about all custom key stores in the account and region. To get only information about a particular custom key store, use either the CustomKeyStoreName or CustomKeyStoreId parameter (but not both).

To determine whether the custom key store is connected to its AWS CloudHSM cluster, use the ConnectionState element in the response. If an attempt to connect the custom key store failed, the ConnectionState value is FAILED and the ConnectionErrorCode element in the response indicates the cause of the failure. For help interpreting the ConnectionErrorCode, see CustomKeyStoresListEntry.

Custom key stores have a DISCONNECTED connection state if the key store has never been connected or you use the DisconnectCustomKeyStore operation to disconnect it. If your custom key store state is CONNECTED but you are having trouble using it, make sure that its associated AWS CloudHSM cluster is active and contains the minimum number of HSMs required for the operation, if any.

For help repairing your custom key store, see the Troubleshooting Custom Key Stores topic in the AWS Key Management Service Developer Guide.

", - "DescribeKey": "

Provides detailed information about a customer master key (CMK). You can run DescribeKey on a customer managed CMK or an AWS managed CMK.

This detailed information includes the key ARN, creation date (and deletion date, if applicable), the key state, and the origin and expiration date (if any) of the key material. For CMKs in custom key stores, it includes information about the custom key store, such as the key store ID and the AWS CloudHSM cluster ID. It includes fields, like KeySpec, that help you distinguish symmetric from asymmetric CMKs. It also provides information that is particularly important to asymmetric CMKs, such as the key usage (encryption or signing) and the encryption algorithms or signing algorithms that the CMK supports.

DescribeKey does not return the following information:

If you call the DescribeKey operation on a predefined AWS alias, that is, an AWS alias with no key ID, AWS KMS creates an AWS managed CMK. Then, it associates the alias with the new CMK, and returns the KeyId and Arn of the new CMK in the response.

To perform this operation on a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

", - "DisableKey": "

Sets the state of a customer master key (CMK) to disabled, thereby preventing its use for cryptographic operations. You cannot perform this operation on a CMK in a different AWS account.

For more information about how key state affects the use of a CMK, see How Key State Affects the Use of a Customer Master Key in the AWS Key Management Service Developer Guide .

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "DisableKeyRotation": "

Disables automatic rotation of the key material for the specified symmetric customer master key (CMK).

You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store. You cannot perform this operation on a CMK in a different AWS account.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "DisconnectCustomKeyStore": "

Disconnects the custom key store from its associated AWS CloudHSM cluster. While a custom key store is disconnected, you can manage the custom key store and its customer master keys (CMKs), but you cannot create or use CMKs in the custom key store. You can reconnect the custom key store at any time.

While a custom key store is disconnected, all attempts to create customer master keys (CMKs) in the custom key store or to use existing CMKs in cryptographic operations will fail. This action can prevent users from storing and accessing sensitive data.

To find the connection state of a custom key store, use the DescribeCustomKeyStores operation. To reconnect a custom key store, use the ConnectCustomKeyStore operation.

If the operation succeeds, it returns a JSON object with no properties.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

", - "EnableKey": "

Sets the key state of a customer master key (CMK) to enabled. This allows you to use the CMK for cryptographic operations. You cannot perform this operation on a CMK in a different AWS account.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "EnableKeyRotation": "

Enables automatic rotation of the key material for the specified symmetric customer master key (CMK). You cannot perform this operation on a CMK in a different AWS account.

You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "Encrypt": "

Encrypts plaintext into ciphertext by using a customer master key (CMK). The Encrypt operation has two primary use cases:

You don't need to use the Encrypt operation to encrypt a data key. The GenerateDataKey and GenerateDataKeyPair operations return a plaintext data key and an encrypted copy of that data key.

When you encrypt data, you must specify a symmetric or asymmetric CMK to use in the encryption operation. The CMK must have a KeyUsage value of ENCRYPT_DECRYPT. To find the KeyUsage of a CMK, use the DescribeKey operation.

If you use a symmetric CMK, you can use an encryption context to add additional security to your encryption operation. If you specify an EncryptionContext when encrypting data, you must specify the same encryption context (a case-sensitive exact match) when decrypting the data. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

If you specify an asymmetric CMK, you must also specify the encryption algorithm. The algorithm must be compatible with the CMK type.

When you use an asymmetric CMK to encrypt or reencrypt data, be sure to record the CMK and encryption algorithm that you choose. You will be required to provide the same CMK and encryption algorithm when you decrypt the data. If the CMK and algorithm do not match the values used to encrypt the data, the decrypt operation fails.

You are not required to supply the CMK ID and encryption algorithm when you decrypt with symmetric CMKs because AWS KMS stores this information in the ciphertext blob. AWS KMS cannot store metadata in ciphertext generated with asymmetric keys. The standard format for asymmetric key ciphertext does not include configurable fields.

The maximum size of the data that you can encrypt varies with the type of CMK and the encryption algorithm that you choose.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

To perform this operation on a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

", - "GenerateDataKey": "

Generates a unique symmetric data key for client-side encryption. This operation returns a plaintext copy of the data key and a copy that is encrypted under a customer master key (CMK) that you specify. You can use the plaintext key to encrypt your data outside of AWS KMS and store the encrypted data key with the encrypted data.

GenerateDataKey returns a unique data key for each request. The bytes in the plaintext key are not related to the caller or the CMK.

To generate a data key, specify the symmetric CMK that will be used to encrypt the data key. You cannot use an asymmetric CMK to generate data keys. To get the type of your CMK, use the DescribeKey operation. You must also specify the length of the data key. Use either the KeySpec or NumberOfBytes parameters (but not both). For 128-bit and 256-bit data keys, use the KeySpec parameter.

To get only an encrypted copy of the data key, use GenerateDataKeyWithoutPlaintext. To generate an asymmetric data key pair, use the GenerateDataKeyPair or GenerateDataKeyPairWithoutPlaintext operation. To get a cryptographically secure random byte string, use GenerateRandom.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

How to use your data key

We recommend that you use the following pattern to encrypt data locally in your application. You can write your own code or use a client-side encryption library, such as the AWS Encryption SDK, the Amazon DynamoDB Encryption Client, or Amazon S3 client-side encryption to do these tasks for you.

To encrypt data outside of AWS KMS:

  1. Use the GenerateDataKey operation to get a data key.

  2. Use the plaintext data key (in the Plaintext field of the response) to encrypt your data outside of AWS KMS. Then erase the plaintext data key from memory.

  3. Store the encrypted data key (in the CiphertextBlob field of the response) with the encrypted data.

To decrypt data outside of AWS KMS:

  1. Use the Decrypt operation to decrypt the encrypted data key. The operation returns a plaintext copy of the data key.

  2. Use the plaintext data key to decrypt data outside of AWS KMS, then erase the plaintext data key from memory.

", - "GenerateDataKeyPair": "

Generates a unique asymmetric data key pair. The GenerateDataKeyPair operation returns a plaintext public key, a plaintext private key, and a copy of the private key that is encrypted under the symmetric CMK you specify. You can use the data key pair to perform asymmetric cryptography outside of AWS KMS.

GenerateDataKeyPair returns a unique data key pair for each request. The bytes in the keys are not related to the caller or the CMK that is used to encrypt the private key.

You can use the public key that GenerateDataKeyPair returns to encrypt data or verify a signature outside of AWS KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the Decrypt operation to decrypt the encrypted private key.

To generate a data key pair, you must specify a symmetric customer master key (CMK) to encrypt the private key in a data key pair. You cannot use an asymmetric CMK or a CMK in a custom key store. To get the type and origin of your CMK, use the DescribeKey operation.

If you are using the data key pair to encrypt data, or for any operation where you don't immediately need a private key, consider using the GenerateDataKeyPairWithoutPlaintext operation. GenerateDataKeyPairWithoutPlaintext returns a plaintext public key and an encrypted private key, but omits the plaintext private key that you need only to decrypt ciphertext or sign a message. Later, when you need to decrypt the data or sign a message, use the Decrypt operation to decrypt the encrypted private key in the data key pair.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "GenerateDataKeyPairWithoutPlaintext": "

Generates a unique asymmetric data key pair. The GenerateDataKeyPairWithoutPlaintext operation returns a plaintext public key and a copy of the private key that is encrypted under the symmetric CMK you specify. Unlike GenerateDataKeyPair, this operation does not return a plaintext private key.

To generate a data key pair, you must specify a symmetric customer master key (CMK) to encrypt the private key in the data key pair. You cannot use an asymmetric CMK or a CMK in a custom key store. To get the type and origin of your CMK, use the KeySpec field in the DescribeKey response.

You can use the public key that GenerateDataKeyPairWithoutPlaintext returns to encrypt data or verify a signature outside of AWS KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the Decrypt operation to decrypt the encrypted private key.

GenerateDataKeyPairWithoutPlaintext returns a unique data key pair for each request. The bytes in the key are not related to the caller or CMK that is used to encrypt the private key.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "GenerateDataKeyWithoutPlaintext": "

Generates a unique symmetric data key. This operation returns a data key that is encrypted under a customer master key (CMK) that you specify. To request an asymmetric data key pair, use the GenerateDataKeyPair or GenerateDataKeyPairWithoutPlaintext operations.

GenerateDataKeyWithoutPlaintext is identical to the GenerateDataKey operation except that returns only the encrypted copy of the data key. This operation is useful for systems that need to encrypt data at some point, but not immediately. When you need to encrypt the data, you call the Decrypt operation on the encrypted copy of the key.

It's also useful in distributed systems with different levels of trust. For example, you might store encrypted data in containers. One component of your system creates new containers and stores an encrypted data key with each container. Then, a different component puts the data into the containers. That component first decrypts the data key, uses the plaintext data key to encrypt data, puts the encrypted data into the container, and then destroys the plaintext data key. In this system, the component that creates the containers never sees the plaintext data key.

GenerateDataKeyWithoutPlaintext returns a unique data key for each request. The bytes in the keys are not related to the caller or CMK that is used to encrypt the private key.

To generate a data key, you must specify the symmetric customer master key (CMK) that is used to encrypt the data key. You cannot use an asymmetric CMK to generate a data key. To get the type of your CMK, use the DescribeKey operation.

If the operation succeeds, you will find the encrypted copy of the data key in the CiphertextBlob field.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "GenerateRandom": "

Returns a random byte string that is cryptographically secure.

By default, the random byte string is generated in AWS KMS. To generate the byte string in the AWS CloudHSM cluster that is associated with a custom key store, specify the custom key store ID.

For more information about entropy and random number generation, see the AWS Key Management Service Cryptographic Details whitepaper.

", - "GetKeyPolicy": "

Gets a key policy attached to the specified customer master key (CMK). You cannot perform this operation on a CMK in a different AWS account.

", - "GetKeyRotationStatus": "

Gets a Boolean value that indicates whether automatic rotation of the key material is enabled for the specified customer master key (CMK).

You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store. The key rotation status for these CMKs is always false.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter.

", - "GetParametersForImport": "

Returns the items you need to import key material into a symmetric, customer managed customer master key (CMK). For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide.

This operation returns a public key and an import token. Use the public key to encrypt the symmetric key material. Store the import token to send with a subsequent ImportKeyMaterial request.

You must specify the key ID of the symmetric CMK into which you will import key material. This CMK's Origin must be EXTERNAL. You must also specify the wrapping algorithm and type of wrapping key (public key) that you will use to encrypt the key material. You cannot perform this operation on an asymmetric CMK or on any CMK in a different AWS account.

To import key material, you must use the public key and import token from the same response. These items are valid for 24 hours. The expiration date and time appear in the GetParametersForImport response. You cannot use an expired token in an ImportKeyMaterial request. If your key and token expire, send another GetParametersForImport request.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "GetPublicKey": "

Returns the public key of an asymmetric CMK. Unlike the private key of a asymmetric CMK, which never leaves AWS KMS unencrypted, callers with kms:GetPublicKey permission can download the public key of an asymmetric CMK. You can share the public key to allow others to encrypt messages and verify signatures outside of AWS KMS. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

You do not need to download the public key. Instead, you can use the public key within AWS KMS by calling the Encrypt, ReEncrypt, or Verify operations with the identifier of an asymmetric CMK. When you use the public key within AWS KMS, you benefit from the authentication, authorization, and logging that are part of every AWS KMS operation. You also reduce of risk of encrypting data that cannot be decrypted. These features are not effective outside of AWS KMS. For details, see Special Considerations for Downloading Public Keys.

To help you use the public key safely outside of AWS KMS, GetPublicKey returns important information about the public key in the response, including:

Although AWS KMS cannot enforce these restrictions on external operations, it is crucial that you use this information to prevent the public key from being used improperly. For example, you can prevent a public signing key from being used encrypt data, or prevent a public key from being used with an encryption algorithm that is not supported by AWS KMS. You can also avoid errors, such as using the wrong signing algorithm in a verification operation.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "ImportKeyMaterial": "

Imports key material into an existing symmetric AWS KMS customer master key (CMK) that was created without key material. After you successfully import key material into a CMK, you can reimport the same key material into that CMK, but you cannot import different key material.

You cannot perform this operation on an asymmetric CMK or on any CMK in a different AWS account. For more information about creating CMKs with no key material and then importing key material, see Importing Key Material in the AWS Key Management Service Developer Guide.

Before using this operation, call GetParametersForImport. Its response includes a public key and an import token. Use the public key to encrypt the key material. Then, submit the import token from the same GetParametersForImport response.

When calling this operation, you must specify the following values:

When this operation is successful, the key state of the CMK changes from PendingImport to Enabled, and you can use the CMK.

If this operation fails, use the exception to help determine the problem. If the error is related to the key material, the import token, or wrapping key, use GetParametersForImport to get a new public key and import token for the CMK and repeat the import procedure. For help, see How To Import Key Material in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "ListAliases": "

Gets a list of aliases in the caller's AWS account and region. You cannot list aliases in other accounts. For more information about aliases, see CreateAlias.

By default, the ListAliases command returns all aliases in the account and region. To get only the aliases that point to a particular customer master key (CMK), use the KeyId parameter.

The ListAliases response can include aliases that you created and associated with your customer managed CMKs, and aliases that AWS created and associated with AWS managed CMKs in your account. You can recognize AWS aliases because their names have the format aws/<service-name>, such as aws/dynamodb.

The response might also include aliases that have no TargetKeyId field. These are predefined aliases that AWS has created but has not yet associated with a CMK. Aliases that AWS creates in your account, including predefined aliases, do not count against your AWS KMS aliases quota.

", - "ListGrants": "

Gets a list of all grants for the specified customer master key (CMK).

To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter.

The GranteePrincipal field in the ListGrants response usually contains the user or role designated as the grantee principal in the grant. However, when the grantee principal in the grant is an AWS service, the GranteePrincipal field contains the service principal, which might represent several different grantee principals.

", - "ListKeyPolicies": "

Gets the names of the key policies that are attached to a customer master key (CMK). This operation is designed to get policy names that you can use in a GetKeyPolicy operation. However, the only valid policy name is default. You cannot perform this operation on a CMK in a different AWS account.

", - "ListKeys": "

Gets a list of all customer master keys (CMKs) in the caller's AWS account and Region.

", - "ListResourceTags": "

Returns a list of all tags for the specified customer master key (CMK).

You cannot perform this operation on a CMK in a different AWS account.

", - "ListRetirableGrants": "

Returns a list of all grants for which the grant's RetiringPrincipal matches the one specified.

A typical use is to list all grants that you are able to retire. To retire a grant, use RetireGrant.

", - "PutKeyPolicy": "

Attaches a key policy to the specified customer master key (CMK). You cannot perform this operation on a CMK in a different AWS account.

For more information about key policies, see Key Policies in the AWS Key Management Service Developer Guide.

", - "ReEncrypt": "

Decrypts ciphertext and then reencrypts it entirely within AWS KMS. You can use this operation to change the customer master key (CMK) under which data is encrypted, such as when you manually rotate a CMK or change the CMK that protects a ciphertext. You can also use it to reencrypt ciphertext under the same CMK, such as to change the encryption context of a ciphertext.

The ReEncrypt operation can decrypt ciphertext that was encrypted by using an AWS KMS CMK in an AWS KMS operation, such as Encrypt or GenerateDataKey. It can also decrypt ciphertext that was encrypted by using the public key of an asymmetric CMK outside of AWS KMS. However, it cannot decrypt ciphertext produced by other libraries, such as the AWS Encryption SDK or Amazon S3 client-side encryption. These libraries return a ciphertext format that is incompatible with AWS KMS.

When you use the ReEncrypt operation, you need to provide information for the decrypt operation and the subsequent encrypt operation.

Unlike other AWS KMS API operations, ReEncrypt callers must have two permissions:

To permit reencryption from or to a CMK, include the \"kms:ReEncrypt*\" permission in your key policy. This permission is automatically included in the key policy when you use the console to create a CMK. But you must include it manually when you create a CMK programmatically or when you use the PutKeyPolicy operation to set a key policy.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "RetireGrant": "

Retires a grant. To clean up, you can retire a grant when you're done using it. You should revoke a grant when you intend to actively deny operations that depend on it. The following are permitted to call this API:

You must identify the grant to retire by its grant token or by a combination of the grant ID and the Amazon Resource Name (ARN) of the customer master key (CMK). A grant token is a unique variable-length base64-encoded string. A grant ID is a 64 character unique identifier of a grant. The CreateGrant operation returns both.

", - "RevokeGrant": "

Revokes the specified grant for the specified customer master key (CMK). You can revoke a grant to actively deny operations that depend on it.

To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter.

", - "ScheduleKeyDeletion": "

Schedules the deletion of a customer master key (CMK). You may provide a waiting period, specified in days, before deletion occurs. If you do not provide a waiting period, the default period of 30 days is used. When this operation is successful, the key state of the CMK changes to PendingDeletion. Before the waiting period ends, you can use CancelKeyDeletion to cancel the deletion of the CMK. After the waiting period ends, AWS KMS deletes the CMK and all AWS KMS data associated with it, including all aliases that refer to it.

Deleting a CMK is a destructive and potentially dangerous operation. When a CMK is deleted, all data that was encrypted under the CMK is unrecoverable. To prevent the use of a CMK without deleting it, use DisableKey.

If you schedule deletion of a CMK from a custom key store, when the waiting period expires, ScheduleKeyDeletion deletes the CMK from AWS KMS. Then AWS KMS makes a best effort to delete the key material from the associated AWS CloudHSM cluster. However, you might need to manually delete the orphaned key material from the cluster and its backups.

You cannot perform this operation on a CMK in a different AWS account.

For more information about scheduling a CMK for deletion, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "Sign": "

Creates a digital signature for a message or message digest by using the private key in an asymmetric CMK. To verify the signature, use the Verify operation, or use the public key in the same asymmetric CMK outside of AWS KMS. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

Digital signatures are generated and verified by using asymmetric key pair, such as an RSA or ECC pair that is represented by an asymmetric customer master key (CMK). The key owner (or an authorized user) uses their private key to sign a message. Anyone with the public key can verify that the message was signed with that particular private key and that the message hasn't changed since it was signed.

To use the Sign operation, provide the following information:

When signing a message, be sure to record the CMK and the signing algorithm. This information is required to verify the signature.

To verify the signature that this operation generates, use the Verify operation. Or use the GetPublicKey operation to download the public key and then use the public key to verify the signature outside of AWS KMS.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "TagResource": "

Adds or edits tags for a customer master key (CMK). You cannot perform this operation on a CMK in a different AWS account.

Each tag consists of a tag key and a tag value. Tag keys and tag values are both required, but tag values can be empty (null) strings.

You can only use a tag key once for each CMK. If you use the tag key again, AWS KMS replaces the current tag value with the specified value.

For information about the rules that apply to tag keys and tag values, see User-Defined Tag Restrictions in the AWS Billing and Cost Management User Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "UntagResource": "

Removes the specified tags from the specified customer master key (CMK). You cannot perform this operation on a CMK in a different AWS account.

To remove a tag, specify the tag key. To change the tag value of an existing tag key, use TagResource.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "UpdateAlias": "

Associates an existing AWS KMS alias with a different customer master key (CMK). Each alias is associated with only one CMK at a time, although a CMK can have multiple aliases. The alias and the CMK must be in the same AWS account and region. You cannot perform this operation on an alias in a different AWS account.

The current and new CMK must be the same type (both symmetric or both asymmetric), and they must have the same key usage (ENCRYPT_DECRYPT or SIGN_VERIFY). This restriction prevents errors in code that uses aliases. If you must assign an alias to a different type of CMK, use DeleteAlias to delete the old alias and CreateAlias to create a new alias.

You cannot use UpdateAlias to change an alias name. To change an alias name, use DeleteAlias to delete the old alias and CreateAlias to create a new alias.

Because an alias is not a property of a CMK, you can create, update, and delete the aliases of a CMK without affecting the CMK. Also, aliases do not appear in the response from the DescribeKey operation. To get the aliases of all CMKs in the account, use the ListAliases operation.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "UpdateCustomKeyStore": "

Changes the properties of a custom key store. Use the CustomKeyStoreId parameter to identify the custom key store you want to edit. Use the remaining parameters to change the properties of the custom key store.

You can only update a custom key store that is disconnected. To disconnect the custom key store, use DisconnectCustomKeyStore. To reconnect the custom key store after the update completes, use ConnectCustomKeyStore. To find the connection state of a custom key store, use the DescribeCustomKeyStores operation.

Use the parameters of UpdateCustomKeyStore to edit your keystore settings.

If the operation succeeds, it returns a JSON object with no properties.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

", - "UpdateKeyDescription": "

Updates the description of a customer master key (CMK). To see the description of a CMK, use DescribeKey.

You cannot perform this operation on a CMK in a different AWS account.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

", - "Verify": "

Verifies a digital signature that was generated by the Sign operation.

Verification confirms that an authorized user signed the message with the specified CMK and signing algorithm, and the message hasn't changed since it was signed. If the signature is verified, the value of the SignatureValid field in the response is True. If the signature verification fails, the Verify operation fails with an KMSInvalidSignatureException exception.

A digital signature is generated by using the private key in an asymmetric CMK. The signature is verified by using the public key in the same asymmetric CMK. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

To verify a digital signature, you can use the Verify operation. Specify the same asymmetric CMK, message, and signing algorithm that were used to produce the signature.

You can also verify the digital signature by using the public key of the CMK outside of AWS KMS. Use the GetPublicKey operation to download the public key in the asymmetric CMK and then use the public key to verify the signature outside of AWS KMS. The advantage of using the Verify operation is that it is performed within AWS KMS. As a result, it's easy to call, the operation is performed within the FIPS boundary, it is logged in AWS CloudTrail, and you can use key policy and IAM policy to determine who is authorized to use the CMK to verify signatures.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

" + "CancelKeyDeletion": "

Cancels the deletion of a customer master key (CMK). When this operation succeeds, the key state of the CMK is Disabled. To enable the CMK, use EnableKey.

For more information about scheduling and canceling deletion of a CMK, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:CancelKeyDeletion (key policy)

Related operations: ScheduleKeyDeletion

", + "ConnectCustomKeyStore": "

Connects or reconnects a custom key store to its associated AWS CloudHSM cluster.

The custom key store must be connected before you can create customer master keys (CMKs) in the key store or use the CMKs it contains. You can disconnect and reconnect a custom key store at any time.

To connect a custom key store, its associated AWS CloudHSM cluster must have at least one active HSM. To get the number of active HSMs in a cluster, use the DescribeClusters operation. To add HSMs to the cluster, use the CreateHsm operation. Also, the kmsuser crypto user (CU) must not be logged into the cluster. This prevents AWS KMS from using this account to log in.

The connection process can take an extended amount of time to complete; up to 20 minutes. This operation starts the connection process, but it does not wait for it to complete. When it succeeds, this operation quickly returns an HTTP 200 response and a JSON object with no properties. However, this response does not indicate that the custom key store is connected. To get the connection state of the custom key store, use the DescribeCustomKeyStores operation.

During the connection process, AWS KMS finds the AWS CloudHSM cluster that is associated with the custom key store, creates the connection infrastructure, connects to the cluster, logs into the AWS CloudHSM client as the kmsuser CU, and rotates its password.

The ConnectCustomKeyStore operation might fail for various reasons. To find the reason, use the DescribeCustomKeyStores operation and see the ConnectionErrorCode in the response. For help interpreting the ConnectionErrorCode, see CustomKeyStoresListEntry.

To fix the failure, use the DisconnectCustomKeyStore operation to disconnect the custom key store, correct the error, use the UpdateCustomKeyStore operation if necessary, and then use ConnectCustomKeyStore again.

If you are having trouble connecting or disconnecting a custom key store, see Troubleshooting a Custom Key Store in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a custom key store in a different AWS account.

Required permissions: kms:ConnectCustomKeyStore (IAM policy)

Related operations

", + "CreateAlias": "

Creates a friendly name for a customer master key (CMK). You can use an alias to identify a CMK in the AWS KMS console, in the DescribeKey operation and in cryptographic operations, such as Encrypt and GenerateDataKey.

You can also change the CMK that's associated with the alias (UpdateAlias) or delete the alias (DeleteAlias) at any time. These operations don't affect the underlying CMK.

You can associate the alias with any customer managed CMK in the same AWS Region. Each alias is associated with only on CMK at a time, but a CMK can have multiple aliases. A valid CMK is required. You can't create an alias without a CMK.

The alias must be unique in the account and Region, but you can have aliases with the same name in different Regions. For detailed information about aliases, see Using aliases in the AWS Key Management Service Developer Guide.

This operation does not return a response. To get the alias that you created, use the ListAliases operation.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on an alias in a different AWS account.

Required permissions

For details, see Controlling access to aliases in the AWS Key Management Service Developer Guide.

Related operations:

", + "CreateCustomKeyStore": "

Creates a custom key store that is associated with an AWS CloudHSM cluster that you own and manage.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

Before you create the custom key store, you must assemble the required elements, including an AWS CloudHSM cluster that fulfills the requirements for a custom key store. For details about the required elements, see Assemble the Prerequisites in the AWS Key Management Service Developer Guide.

When the operation completes successfully, it returns the ID of the new custom key store. Before you can use your new custom key store, you need to use the ConnectCustomKeyStore operation to connect the new key store to its AWS CloudHSM cluster. Even if you are not going to use your custom key store immediately, you might want to connect it to verify that all settings are correct and then disconnect it until you are ready to use it.

For help with failures, see Troubleshooting a Custom Key Store in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a custom key store in a different AWS account.

Required permissions: kms:CreateCustomKeyStore (IAM policy).

Related operations:

", + "CreateGrant": "

Adds a grant to a customer master key (CMK). The grant allows the grantee principal to use the CMK when the conditions specified in the grant are met. When setting permissions, grants are an alternative to key policies.

To create a grant that allows a cryptographic operation only when the request includes a particular encryption context, use the Constraints parameter. For details, see GrantConstraints.

You can create grants on symmetric and asymmetric CMKs. However, if the grant allows an operation that the CMK does not support, CreateGrant fails with a ValidationException.

For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide. For more information about grants, see Grants in the AWS Key Management Service Developer Guide .

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter.

Required permissions: kms:CreateGrant (key policy)

Related operations:

", + "CreateKey": "

Creates a unique customer managed customer master key (CMK) in your AWS account and Region.

You can use the CreateKey operation to create symmetric or asymmetric CMKs.

For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

To create different types of CMKs, use the following guidance:

Asymmetric CMKs

To create an asymmetric CMK, use the CustomerMasterKeySpec parameter to specify the type of key material in the CMK. Then, use the KeyUsage parameter to determine whether the CMK will be used to encrypt and decrypt or sign and verify. You can't change these properties after the CMK is created.

Symmetric CMKs

When creating a symmetric CMK, you don't need to specify the CustomerMasterKeySpec or KeyUsage parameters. The default value for CustomerMasterKeySpec, SYMMETRIC_DEFAULT, and the default value for KeyUsage, ENCRYPT_DECRYPT, are the only valid values for symmetric CMKs.

Imported Key Material

To import your own key material, begin by creating a symmetric CMK with no key material. To do this, use the Origin parameter of CreateKey with a value of EXTERNAL. Next, use GetParametersForImport operation to get a public key and import token, and use the public key to encrypt your key material. Then, use ImportKeyMaterial with your import token to import the key material. For step-by-step instructions, see Importing Key Material in the AWS Key Management Service Developer Guide . You cannot import the key material into an asymmetric CMK.

Custom Key Stores

To create a symmetric CMK in a custom key store, use the CustomKeyStoreId parameter to specify the custom key store. You must also use the Origin parameter with a value of AWS_CLOUDHSM. The AWS CloudHSM cluster that is associated with the custom key store must have at least two active HSMs in different Availability Zones in the AWS Region.

You cannot create an asymmetric CMK in a custom key store. For information about custom key stores in AWS KMS see Using Custom Key Stores in the AWS Key Management Service Developer Guide .

Cross-account use: No. You cannot use this operation to create a CMK in a different AWS account.

Required permissions: kms:CreateKey (IAM policy). To use the Tags parameter, kms:TagResource (IAM policy). For examples and information about related permissions, see Allow a user to create CMKs in the AWS Key Management Service Developer Guide.

Related operations:

", + "Decrypt": "

Decrypts ciphertext that was encrypted by a AWS KMS customer master key (CMK) using any of the following operations:

You can use this operation to decrypt ciphertext that was encrypted under a symmetric or asymmetric CMK. When the CMK is asymmetric, you must specify the CMK and the encryption algorithm that was used to encrypt the ciphertext. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

The Decrypt operation also decrypts ciphertext that was encrypted outside of AWS KMS by the public key in an AWS KMS asymmetric CMK. However, it cannot decrypt ciphertext produced by other libraries, such as the AWS Encryption SDK or Amazon S3 client-side encryption. These libraries return a ciphertext format that is incompatible with AWS KMS.

If the ciphertext was encrypted under a symmetric CMK, the KeyId parameter is optional. AWS KMS can get this information from metadata that it adds to the symmetric ciphertext blob. This feature adds durability to your implementation by ensuring that authorized users can decrypt ciphertext decades after it was encrypted, even if they've lost track of the CMK ID. However, specifying the CMK is always recommended as a best practice. When you use the KeyId parameter to specify a CMK, AWS KMS only uses the CMK you specify. If the ciphertext was encrypted under a different CMK, the Decrypt operation fails. This practice ensures that you use the CMK that you intend.

Whenever possible, use key policies to give users permission to call the Decrypt operation on a particular CMK, instead of using IAM policies. Otherwise, you might create an IAM user policy that gives the user Decrypt permission on all CMKs. This user could decrypt ciphertext that was encrypted by CMKs in other accounts if the key policy for the cross-account CMK permits it. If you must use an IAM policy for Decrypt permissions, limit the user to particular CMKs or particular trusted accounts. For details, see Best practices for IAM policies in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. You can decrypt a ciphertext using a CMK in a different AWS account.

Required permissions: kms:Decrypt (key policy)

Related operations:

", + "DeleteAlias": "

Deletes the specified alias.

Because an alias is not a property of a CMK, you can delete and change the aliases of a CMK without affecting the CMK. Also, aliases do not appear in the response from the DescribeKey operation. To get the aliases of all CMKs, use the ListAliases operation.

Each CMK can have multiple aliases. To change the alias of a CMK, use DeleteAlias to delete the current alias and CreateAlias to create a new alias. To associate an existing alias with a different customer master key (CMK), call UpdateAlias.

Cross-account use: No. You cannot perform this operation on an alias in a different AWS account.

Required permissions

For details, see Controlling access to aliases in the AWS Key Management Service Developer Guide.

Related operations:

", + "DeleteCustomKeyStore": "

Deletes a custom key store. This operation does not delete the AWS CloudHSM cluster that is associated with the custom key store, or affect any users or keys in the cluster.

The custom key store that you delete cannot contain any AWS KMS customer master keys (CMKs). Before deleting the key store, verify that you will never need to use any of the CMKs in the key store for any cryptographic operations. Then, use ScheduleKeyDeletion to delete the AWS KMS customer master keys (CMKs) from the key store. When the scheduled waiting period expires, the ScheduleKeyDeletion operation deletes the CMKs. Then it makes a best effort to delete the key material from the associated cluster. However, you might need to manually delete the orphaned key material from the cluster and its backups.

After all CMKs are deleted from AWS KMS, use DisconnectCustomKeyStore to disconnect the key store from AWS KMS. Then, you can delete the custom key store.

Instead of deleting the custom key store, consider using DisconnectCustomKeyStore to disconnect it from AWS KMS. While the key store is disconnected, you cannot create or use the CMKs in the key store. But, you do not need to delete CMKs and you can reconnect a disconnected custom key store at any time.

If the operation succeeds, it returns a JSON object with no properties.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

Cross-account use: No. You cannot perform this operation on a custom key store in a different AWS account.

Required permissions: kms:DeleteCustomKeyStore (IAM policy)

Related operations:

", + "DeleteImportedKeyMaterial": "

Deletes key material that you previously imported. This operation makes the specified customer master key (CMK) unusable. For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide.

When the specified CMK is in the PendingDeletion state, this operation does not change the CMK's state. Otherwise, it changes the CMK's state to PendingImport.

After you delete key material, you can use ImportKeyMaterial to reimport the same key material into the CMK.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:DeleteImportedKeyMaterial (key policy)

Related operations:

", + "DescribeCustomKeyStores": "

Gets information about custom key stores in the account and region.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

By default, this operation returns information about all custom key stores in the account and region. To get only information about a particular custom key store, use either the CustomKeyStoreName or CustomKeyStoreId parameter (but not both).

To determine whether the custom key store is connected to its AWS CloudHSM cluster, use the ConnectionState element in the response. If an attempt to connect the custom key store failed, the ConnectionState value is FAILED and the ConnectionErrorCode element in the response indicates the cause of the failure. For help interpreting the ConnectionErrorCode, see CustomKeyStoresListEntry.

Custom key stores have a DISCONNECTED connection state if the key store has never been connected or you use the DisconnectCustomKeyStore operation to disconnect it. If your custom key store state is CONNECTED but you are having trouble using it, make sure that its associated AWS CloudHSM cluster is active and contains the minimum number of HSMs required for the operation, if any.

For help repairing your custom key store, see the Troubleshooting Custom Key Stores topic in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a custom key store in a different AWS account.

Required permissions: kms:DescribeCustomKeyStores (IAM policy)

Related operations:

", + "DescribeKey": "

Provides detailed information about a customer master key (CMK). You can run DescribeKey on a customer managed CMK or an AWS managed CMK.

This detailed information includes the key ARN, creation date (and deletion date, if applicable), the key state, and the origin and expiration date (if any) of the key material. For CMKs in custom key stores, it includes information about the custom key store, such as the key store ID and the AWS CloudHSM cluster ID. It includes fields, like KeySpec, that help you distinguish symmetric from asymmetric CMKs. It also provides information that is particularly important to asymmetric CMKs, such as the key usage (encryption or signing) and the encryption algorithms or signing algorithms that the CMK supports.

DescribeKey does not return the following information:

If you call the DescribeKey operation on a predefined AWS alias, that is, an AWS alias with no key ID, AWS KMS creates an AWS managed CMK. Then, it associates the alias with the new CMK, and returns the KeyId and Arn of the new CMK in the response.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:DescribeKey (key policy)

Related operations:

", + "DisableKey": "

Sets the state of a customer master key (CMK) to disabled. This change temporarily prevents use of the CMK for cryptographic operations.

For more information about how key state affects the use of a CMK, see How Key State Affects the Use of a Customer Master Key in the AWS Key Management Service Developer Guide .

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:DisableKey (key policy)

Related operations: EnableKey

", + "DisableKeyRotation": "

Disables automatic rotation of the key material for the specified symmetric customer master key (CMK).

You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:DisableKeyRotation (key policy)

Related operations:

", + "DisconnectCustomKeyStore": "

Disconnects the custom key store from its associated AWS CloudHSM cluster. While a custom key store is disconnected, you can manage the custom key store and its customer master keys (CMKs), but you cannot create or use CMKs in the custom key store. You can reconnect the custom key store at any time.

While a custom key store is disconnected, all attempts to create customer master keys (CMKs) in the custom key store or to use existing CMKs in cryptographic operations will fail. This action can prevent users from storing and accessing sensitive data.

To find the connection state of a custom key store, use the DescribeCustomKeyStores operation. To reconnect a custom key store, use the ConnectCustomKeyStore operation.

If the operation succeeds, it returns a JSON object with no properties.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

Cross-account use: No. You cannot perform this operation on a custom key store in a different AWS account.

Required permissions: kms:DisconnectCustomKeyStore (IAM policy)

Related operations:

", + "EnableKey": "

Sets the key state of a customer master key (CMK) to enabled. This allows you to use the CMK for cryptographic operations.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:EnableKey (key policy)

Related operations: DisableKey

", + "EnableKeyRotation": "

Enables automatic rotation of the key material for the specified symmetric customer master key (CMK).

You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:EnableKeyRotation (key policy)

Related operations:

", + "Encrypt": "

Encrypts plaintext into ciphertext by using a customer master key (CMK). The Encrypt operation has two primary use cases:

You don't need to use the Encrypt operation to encrypt a data key. The GenerateDataKey and GenerateDataKeyPair operations return a plaintext data key and an encrypted copy of that data key.

When you encrypt data, you must specify a symmetric or asymmetric CMK to use in the encryption operation. The CMK must have a KeyUsage value of ENCRYPT_DECRYPT. To find the KeyUsage of a CMK, use the DescribeKey operation.

If you use a symmetric CMK, you can use an encryption context to add additional security to your encryption operation. If you specify an EncryptionContext when encrypting data, you must specify the same encryption context (a case-sensitive exact match) when decrypting the data. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

If you specify an asymmetric CMK, you must also specify the encryption algorithm. The algorithm must be compatible with the CMK type.

When you use an asymmetric CMK to encrypt or reencrypt data, be sure to record the CMK and encryption algorithm that you choose. You will be required to provide the same CMK and encryption algorithm when you decrypt the data. If the CMK and algorithm do not match the values used to encrypt the data, the decrypt operation fails.

You are not required to supply the CMK ID and encryption algorithm when you decrypt with symmetric CMKs because AWS KMS stores this information in the ciphertext blob. AWS KMS cannot store metadata in ciphertext generated with asymmetric keys. The standard format for asymmetric key ciphertext does not include configurable fields.

The maximum size of the data that you can encrypt varies with the type of CMK and the encryption algorithm that you choose.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:Encrypt (key policy)

Related operations:

", + "GenerateDataKey": "

Generates a unique symmetric data key for client-side encryption. This operation returns a plaintext copy of the data key and a copy that is encrypted under a customer master key (CMK) that you specify. You can use the plaintext key to encrypt your data outside of AWS KMS and store the encrypted data key with the encrypted data.

GenerateDataKey returns a unique data key for each request. The bytes in the plaintext key are not related to the caller or the CMK.

To generate a data key, specify the symmetric CMK that will be used to encrypt the data key. You cannot use an asymmetric CMK to generate data keys. To get the type of your CMK, use the DescribeKey operation. You must also specify the length of the data key. Use either the KeySpec or NumberOfBytes parameters (but not both). For 128-bit and 256-bit data keys, use the KeySpec parameter.

To get only an encrypted copy of the data key, use GenerateDataKeyWithoutPlaintext. To generate an asymmetric data key pair, use the GenerateDataKeyPair or GenerateDataKeyPairWithoutPlaintext operation. To get a cryptographically secure random byte string, use GenerateRandom.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

How to use your data key

We recommend that you use the following pattern to encrypt data locally in your application. You can write your own code or use a client-side encryption library, such as the AWS Encryption SDK, the Amazon DynamoDB Encryption Client, or Amazon S3 client-side encryption to do these tasks for you.

To encrypt data outside of AWS KMS:

  1. Use the GenerateDataKey operation to get a data key.

  2. Use the plaintext data key (in the Plaintext field of the response) to encrypt your data outside of AWS KMS. Then erase the plaintext data key from memory.

  3. Store the encrypted data key (in the CiphertextBlob field of the response) with the encrypted data.

To decrypt data outside of AWS KMS:

  1. Use the Decrypt operation to decrypt the encrypted data key. The operation returns a plaintext copy of the data key.

  2. Use the plaintext data key to decrypt data outside of AWS KMS, then erase the plaintext data key from memory.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:GenerateDataKey (key policy)

Related operations:

", + "GenerateDataKeyPair": "

Generates a unique asymmetric data key pair. The GenerateDataKeyPair operation returns a plaintext public key, a plaintext private key, and a copy of the private key that is encrypted under the symmetric CMK you specify. You can use the data key pair to perform asymmetric cryptography outside of AWS KMS.

GenerateDataKeyPair returns a unique data key pair for each request. The bytes in the keys are not related to the caller or the CMK that is used to encrypt the private key.

You can use the public key that GenerateDataKeyPair returns to encrypt data or verify a signature outside of AWS KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the Decrypt operation to decrypt the encrypted private key.

To generate a data key pair, you must specify a symmetric customer master key (CMK) to encrypt the private key in a data key pair. You cannot use an asymmetric CMK or a CMK in a custom key store. To get the type and origin of your CMK, use the DescribeKey operation.

If you are using the data key pair to encrypt data, or for any operation where you don't immediately need a private key, consider using the GenerateDataKeyPairWithoutPlaintext operation. GenerateDataKeyPairWithoutPlaintext returns a plaintext public key and an encrypted private key, but omits the plaintext private key that you need only to decrypt ciphertext or sign a message. Later, when you need to decrypt the data or sign a message, use the Decrypt operation to decrypt the encrypted private key in the data key pair.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:GenerateDataKeyPair (key policy)

Related operations:

", + "GenerateDataKeyPairWithoutPlaintext": "

Generates a unique asymmetric data key pair. The GenerateDataKeyPairWithoutPlaintext operation returns a plaintext public key and a copy of the private key that is encrypted under the symmetric CMK you specify. Unlike GenerateDataKeyPair, this operation does not return a plaintext private key.

To generate a data key pair, you must specify a symmetric customer master key (CMK) to encrypt the private key in the data key pair. You cannot use an asymmetric CMK or a CMK in a custom key store. To get the type and origin of your CMK, use the KeySpec field in the DescribeKey response.

You can use the public key that GenerateDataKeyPairWithoutPlaintext returns to encrypt data or verify a signature outside of AWS KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the Decrypt operation to decrypt the encrypted private key.

GenerateDataKeyPairWithoutPlaintext returns a unique data key pair for each request. The bytes in the key are not related to the caller or CMK that is used to encrypt the private key.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:GenerateDataKeyPairWithoutPlaintext (key policy)

Related operations:

", + "GenerateDataKeyWithoutPlaintext": "

Generates a unique symmetric data key. This operation returns a data key that is encrypted under a customer master key (CMK) that you specify. To request an asymmetric data key pair, use the GenerateDataKeyPair or GenerateDataKeyPairWithoutPlaintext operations.

GenerateDataKeyWithoutPlaintext is identical to the GenerateDataKey operation except that returns only the encrypted copy of the data key. This operation is useful for systems that need to encrypt data at some point, but not immediately. When you need to encrypt the data, you call the Decrypt operation on the encrypted copy of the key.

It's also useful in distributed systems with different levels of trust. For example, you might store encrypted data in containers. One component of your system creates new containers and stores an encrypted data key with each container. Then, a different component puts the data into the containers. That component first decrypts the data key, uses the plaintext data key to encrypt data, puts the encrypted data into the container, and then destroys the plaintext data key. In this system, the component that creates the containers never sees the plaintext data key.

GenerateDataKeyWithoutPlaintext returns a unique data key for each request. The bytes in the keys are not related to the caller or CMK that is used to encrypt the private key.

To generate a data key, you must specify the symmetric customer master key (CMK) that is used to encrypt the data key. You cannot use an asymmetric CMK to generate a data key. To get the type of your CMK, use the DescribeKey operation.

If the operation succeeds, you will find the encrypted copy of the data key in the CiphertextBlob field.

You can use the optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see Encryption Context in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:GenerateDataKeyWithoutPlaintext (key policy)

Related operations:

", + "GenerateRandom": "

Returns a random byte string that is cryptographically secure.

By default, the random byte string is generated in AWS KMS. To generate the byte string in the AWS CloudHSM cluster that is associated with a custom key store, specify the custom key store ID.

For more information about entropy and random number generation, see the AWS Key Management Service Cryptographic Details whitepaper.

Required permissions: kms:GenerateRandom (IAM policy)

", + "GetKeyPolicy": "

Gets a key policy attached to the specified customer master key (CMK).

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:GetKeyPolicy (key policy)

Related operations: PutKeyPolicy

", + "GetKeyRotationStatus": "

Gets a Boolean value that indicates whether automatic rotation of the key material is enabled for the specified customer master key (CMK).

You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store. The key rotation status for these CMKs is always false.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter.

Required permissions: kms:GetKeyRotationStatus (key policy)

Related operations:

", + "GetParametersForImport": "

Returns the items you need to import key material into a symmetric, customer managed customer master key (CMK). For more information about importing key material into AWS KMS, see Importing Key Material in the AWS Key Management Service Developer Guide.

This operation returns a public key and an import token. Use the public key to encrypt the symmetric key material. Store the import token to send with a subsequent ImportKeyMaterial request.

You must specify the key ID of the symmetric CMK into which you will import key material. This CMK's Origin must be EXTERNAL. You must also specify the wrapping algorithm and type of wrapping key (public key) that you will use to encrypt the key material. You cannot perform this operation on an asymmetric CMK or on any CMK in a different AWS account.

To import key material, you must use the public key and import token from the same response. These items are valid for 24 hours. The expiration date and time appear in the GetParametersForImport response. You cannot use an expired token in an ImportKeyMaterial request. If your key and token expire, send another GetParametersForImport request.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:GetParametersForImport (key policy)

Related operations:

", + "GetPublicKey": "

Returns the public key of an asymmetric CMK. Unlike the private key of a asymmetric CMK, which never leaves AWS KMS unencrypted, callers with kms:GetPublicKey permission can download the public key of an asymmetric CMK. You can share the public key to allow others to encrypt messages and verify signatures outside of AWS KMS. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

You do not need to download the public key. Instead, you can use the public key within AWS KMS by calling the Encrypt, ReEncrypt, or Verify operations with the identifier of an asymmetric CMK. When you use the public key within AWS KMS, you benefit from the authentication, authorization, and logging that are part of every AWS KMS operation. You also reduce of risk of encrypting data that cannot be decrypted. These features are not effective outside of AWS KMS. For details, see Special Considerations for Downloading Public Keys.

To help you use the public key safely outside of AWS KMS, GetPublicKey returns important information about the public key in the response, including:

Although AWS KMS cannot enforce these restrictions on external operations, it is crucial that you use this information to prevent the public key from being used improperly. For example, you can prevent a public signing key from being used encrypt data, or prevent a public key from being used with an encryption algorithm that is not supported by AWS KMS. You can also avoid errors, such as using the wrong signing algorithm in a verification operation.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:GetPublicKey (key policy)

Related operations: CreateKey

", + "ImportKeyMaterial": "

Imports key material into an existing symmetric AWS KMS customer master key (CMK) that was created without key material. After you successfully import key material into a CMK, you can reimport the same key material into that CMK, but you cannot import different key material.

You cannot perform this operation on an asymmetric CMK or on any CMK in a different AWS account. For more information about creating CMKs with no key material and then importing key material, see Importing Key Material in the AWS Key Management Service Developer Guide.

Before using this operation, call GetParametersForImport. Its response includes a public key and an import token. Use the public key to encrypt the key material. Then, submit the import token from the same GetParametersForImport response.

When calling this operation, you must specify the following values:

When this operation is successful, the key state of the CMK changes from PendingImport to Enabled, and you can use the CMK.

If this operation fails, use the exception to help determine the problem. If the error is related to the key material, the import token, or wrapping key, use GetParametersForImport to get a new public key and import token for the CMK and repeat the import procedure. For help, see How To Import Key Material in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:ImportKeyMaterial (key policy)

Related operations:

", + "ListAliases": "

Gets a list of aliases in the caller's AWS account and region. For more information about aliases, see CreateAlias.

By default, the ListAliases operation returns all aliases in the account and region. To get only the aliases associated with a particular customer master key (CMK), use the KeyId parameter.

The ListAliases response can include aliases that you created and associated with your customer managed CMKs, and aliases that AWS created and associated with AWS managed CMKs in your account. You can recognize AWS aliases because their names have the format aws/<service-name>, such as aws/dynamodb.

The response might also include aliases that have no TargetKeyId field. These are predefined aliases that AWS has created but has not yet associated with a CMK. Aliases that AWS creates in your account, including predefined aliases, do not count against your AWS KMS aliases quota.

Cross-account use: No. ListAliases does not return aliases in other AWS accounts.

Required permissions: kms:ListAliases (IAM policy)

For details, see Controlling access to aliases in the AWS Key Management Service Developer Guide.

Related operations:

", + "ListGrants": "

Gets a list of all grants for the specified customer master key (CMK).

The GranteePrincipal field in the ListGrants response usually contains the user or role designated as the grantee principal in the grant. However, when the grantee principal in the grant is an AWS service, the GranteePrincipal field contains the service principal, which might represent several different grantee principals.

Cross-account use: Yes. To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter.

Required permissions: kms:ListGrants (key policy)

Related operations:

", + "ListKeyPolicies": "

Gets the names of the key policies that are attached to a customer master key (CMK). This operation is designed to get policy names that you can use in a GetKeyPolicy operation. However, the only valid policy name is default.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:ListKeyPolicies (key policy)

Related operations:

", + "ListKeys": "

Gets a list of all customer master keys (CMKs) in the caller's AWS account and Region.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:ListKeys (IAM policy)

Related operations:

", + "ListResourceTags": "

Returns all tags on the specified customer master key (CMK).

For general information about tags, including the format and syntax, see Tagging AWS resources in the Amazon Web Services General Reference. For information about using tags in AWS KMS, see Tagging keys.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:ListResourceTags (key policy)

Related operations:

", + "ListRetirableGrants": "

Returns all grants in which the specified principal is the RetiringPrincipal in the grant.

You can specify any principal in your AWS account. The grants that are returned include grants for CMKs in your AWS account and other AWS accounts.

You might use this operation to determine which grants you may retire. To retire a grant, use the RetireGrant operation.

Cross-account use: You must specify a principal in your AWS account. However, this operation can return grants in any AWS account. You do not need kms:ListRetirableGrants permission (or any other additional permission) in any AWS account other than your own.

Required permissions: kms:ListRetirableGrants (IAM policy) in your AWS account.

Related operations:

", + "PutKeyPolicy": "

Attaches a key policy to the specified customer master key (CMK).

For more information about key policies, see Key Policies in the AWS Key Management Service Developer Guide. For help writing and formatting a JSON policy document, see the IAM JSON Policy Reference in the IAM User Guide . For examples of adding a key policy in multiple programming languages, see Setting a key policy in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:PutKeyPolicy (key policy)

Related operations: GetKeyPolicy

", + "ReEncrypt": "

Decrypts ciphertext and then reencrypts it entirely within AWS KMS. You can use this operation to change the customer master key (CMK) under which data is encrypted, such as when you manually rotate a CMK or change the CMK that protects a ciphertext. You can also use it to reencrypt ciphertext under the same CMK, such as to change the encryption context of a ciphertext.

The ReEncrypt operation can decrypt ciphertext that was encrypted by using an AWS KMS CMK in an AWS KMS operation, such as Encrypt or GenerateDataKey. It can also decrypt ciphertext that was encrypted by using the public key of an asymmetric CMK outside of AWS KMS. However, it cannot decrypt ciphertext produced by other libraries, such as the AWS Encryption SDK or Amazon S3 client-side encryption. These libraries return a ciphertext format that is incompatible with AWS KMS.

When you use the ReEncrypt operation, you need to provide information for the decrypt operation and the subsequent encrypt operation.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. The source CMK and destination CMK can be in different AWS accounts. Either or both CMKs can be in a different account than the caller.

Required permissions:

To permit reencryption from or to a CMK, include the \"kms:ReEncrypt*\" permission in your key policy. This permission is automatically included in the key policy when you use the console to create a CMK. But you must include it manually when you create a CMK programmatically or when you use the PutKeyPolicy operation to set a key policy.

Related operations:

", + "RetireGrant": "

Retires a grant. To clean up, you can retire a grant when you're done using it. You should revoke a grant when you intend to actively deny operations that depend on it. The following are permitted to call this API:

You must identify the grant to retire by its grant token or by a combination of the grant ID and the Amazon Resource Name (ARN) of the customer master key (CMK). A grant token is a unique variable-length base64-encoded string. A grant ID is a 64 character unique identifier of a grant. The CreateGrant operation returns both.

Cross-account use: Yes. You can retire a grant on a CMK in a different AWS account.

Required permissions:: Permission to retire a grant is specified in the grant. You cannot control access to this operation in a policy. For more information, see Using grants in the AWS Key Management Service Developer Guide.

Related operations:

", + "RevokeGrant": "

Revokes the specified grant for the specified customer master key (CMK). You can revoke a grant to actively deny operations that depend on it.

Cross-account use: Yes. To perform this operation on a CMK in a different AWS account, specify the key ARN in the value of the KeyId parameter.

Required permissions: kms:RevokeGrant (key policy)

Related operations:

", + "ScheduleKeyDeletion": "

Schedules the deletion of a customer master key (CMK). You may provide a waiting period, specified in days, before deletion occurs. If you do not provide a waiting period, the default period of 30 days is used. When this operation is successful, the key state of the CMK changes to PendingDeletion. Before the waiting period ends, you can use CancelKeyDeletion to cancel the deletion of the CMK. After the waiting period ends, AWS KMS deletes the CMK and all AWS KMS data associated with it, including all aliases that refer to it.

Deleting a CMK is a destructive and potentially dangerous operation. When a CMK is deleted, all data that was encrypted under the CMK is unrecoverable. To prevent the use of a CMK without deleting it, use DisableKey.

If you schedule deletion of a CMK from a custom key store, when the waiting period expires, ScheduleKeyDeletion deletes the CMK from AWS KMS. Then AWS KMS makes a best effort to delete the key material from the associated AWS CloudHSM cluster. However, you might need to manually delete the orphaned key material from the cluster and its backups.

For more information about scheduling a CMK for deletion, see Deleting Customer Master Keys in the AWS Key Management Service Developer Guide.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:ScheduleKeyDeletion (key policy)

Related operations

", + "Sign": "

Creates a digital signature for a message or message digest by using the private key in an asymmetric CMK. To verify the signature, use the Verify operation, or use the public key in the same asymmetric CMK outside of AWS KMS. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

Digital signatures are generated and verified by using asymmetric key pair, such as an RSA or ECC pair that is represented by an asymmetric customer master key (CMK). The key owner (or an authorized user) uses their private key to sign a message. Anyone with the public key can verify that the message was signed with that particular private key and that the message hasn't changed since it was signed.

To use the Sign operation, provide the following information:

When signing a message, be sure to record the CMK and the signing algorithm. This information is required to verify the signature.

To verify the signature that this operation generates, use the Verify operation. Or use the GetPublicKey operation to download the public key and then use the public key to verify the signature outside of AWS KMS.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:Sign (key policy)

Related operations: Verify

", + "TagResource": "

Adds or edits tags on a customer managed CMK.

Each tag consists of a tag key and a tag value, both of which are case-sensitive strings. The tag value can be an empty (null) string.

To add a tag, specify a new tag key and a tag value. To edit a tag, specify an existing tag key and a new tag value.

You can use this operation to tag a customer managed CMK, but you cannot tag an AWS managed CMK, an AWS owned CMK, or an alias.

For general information about tags, including the format and syntax, see Tagging AWS resources in the Amazon Web Services General Reference. For information about using tags in AWS KMS, see Tagging keys.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:TagResource (key policy)

Related operations

", + "UntagResource": "

Deletes tags from a customer managed CMK. To delete a tag, specify the tag key and the CMK.

When it succeeds, the UntagResource operation doesn't return any output. Also, if the specified tag key isn't found on the CMK, it doesn't throw an exception or return a response. To confirm that the operation worked, use the ListResourceTags operation.

For general information about tags, including the format and syntax, see Tagging AWS resources in the Amazon Web Services General Reference. For information about using tags in AWS KMS, see Tagging keys.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:UntagResource (key policy)

Related operations

", + "UpdateAlias": "

Associates an existing AWS KMS alias with a different customer master key (CMK). Each alias is associated with only one CMK at a time, although a CMK can have multiple aliases. The alias and the CMK must be in the same AWS account and region.

The current and new CMK must be the same type (both symmetric or both asymmetric), and they must have the same key usage (ENCRYPT_DECRYPT or SIGN_VERIFY). This restriction prevents errors in code that uses aliases. If you must assign an alias to a different type of CMK, use DeleteAlias to delete the old alias and CreateAlias to create a new alias.

You cannot use UpdateAlias to change an alias name. To change an alias name, use DeleteAlias to delete the old alias and CreateAlias to create a new alias.

Because an alias is not a property of a CMK, you can create, update, and delete the aliases of a CMK without affecting the CMK. Also, aliases do not appear in the response from the DescribeKey operation. To get the aliases of all CMKs in the account, use the ListAliases operation.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions

For details, see Controlling access to aliases in the AWS Key Management Service Developer Guide.

Related operations:

", + "UpdateCustomKeyStore": "

Changes the properties of a custom key store. Use the CustomKeyStoreId parameter to identify the custom key store you want to edit. Use the remaining parameters to change the properties of the custom key store.

You can only update a custom key store that is disconnected. To disconnect the custom key store, use DisconnectCustomKeyStore. To reconnect the custom key store after the update completes, use ConnectCustomKeyStore. To find the connection state of a custom key store, use the DescribeCustomKeyStores operation.

Use the parameters of UpdateCustomKeyStore to edit your keystore settings.

If the operation succeeds, it returns a JSON object with no properties.

This operation is part of the Custom Key Store feature feature in AWS KMS, which combines the convenience and extensive integration of AWS KMS with the isolation and control of a single-tenant key store.

Cross-account use: No. You cannot perform this operation on a custom key store in a different AWS account.

Required permissions: kms:UpdateCustomKeyStore (IAM policy)

Related operations:

", + "UpdateKeyDescription": "

Updates the description of a customer master key (CMK). To see the description of a CMK, use DescribeKey.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: No. You cannot perform this operation on a CMK in a different AWS account.

Required permissions: kms:UpdateKeyDescription (key policy)

Related operations

", + "Verify": "

Verifies a digital signature that was generated by the Sign operation.

Verification confirms that an authorized user signed the message with the specified CMK and signing algorithm, and the message hasn't changed since it was signed. If the signature is verified, the value of the SignatureValid field in the response is True. If the signature verification fails, the Verify operation fails with an KMSInvalidSignatureException exception.

A digital signature is generated by using the private key in an asymmetric CMK. The signature is verified by using the public key in the same asymmetric CMK. For information about symmetric and asymmetric CMKs, see Using Symmetric and Asymmetric CMKs in the AWS Key Management Service Developer Guide.

To verify a digital signature, you can use the Verify operation. Specify the same asymmetric CMK, message, and signing algorithm that were used to produce the signature.

You can also verify the digital signature by using the public key of the CMK outside of AWS KMS. Use the GetPublicKey operation to download the public key in the asymmetric CMK and then use the public key to verify the signature outside of AWS KMS. The advantage of using the Verify operation is that it is performed within AWS KMS. As a result, it's easy to call, the operation is performed within the FIPS boundary, it is logged in AWS CloudTrail, and you can use key policy and IAM policy to determine who is authorized to use the CMK to verify signatures.

The CMK that you use for this operation must be in a compatible key state. For details, see How Key State Affects Use of a Customer Master Key in the AWS Key Management Service Developer Guide.

Cross-account use: Yes. To perform this operation with a CMK in a different AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter.

Required permissions: kms:Verify (key policy)

Related operations: Sign

" }, "shapes": { "AWSAccountIdType": { @@ -78,7 +78,7 @@ "base": null, "refs": { "AliasListEntry$AliasName": "

String that contains the alias. This value begins with alias/.

", - "CreateAliasRequest$AliasName": "

Specifies the alias name. This value must begin with alias/ followed by a name, such as alias/ExampleAlias. The alias name cannot begin with alias/aws/. The alias/aws/ prefix is reserved for AWS managed CMKs.

", + "CreateAliasRequest$AliasName": "

Specifies the alias name. This value must begin with alias/ followed by a name, such as alias/ExampleAlias.

The AliasName value must be string of 1-256 characters. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). The alias name cannot begin with alias/aws/. The alias/aws/ prefix is reserved for AWS managed CMKs.

", "DeleteAliasRequest$AliasName": "

The alias to be deleted. The alias name must begin with alias/ followed by the alias name, such as alias/ExampleAlias.

", "UpdateAliasRequest$AliasName": "

Identifies the alias that is changing its CMK. This value must begin with alias/ followed by the alias name, such as alias/ExampleAlias. You cannot use UpdateAlias to change the alias name.

" } @@ -314,6 +314,8 @@ "DateType": { "base": null, "refs": { + "AliasListEntry$CreationDate": "

Date and time that the alias was most recently created in the account and Region. Formatted as Unix time.

", + "AliasListEntry$LastUpdatedDate": "

Date and time that the alias was most recently associated with a CMK in the account and Region. Formatted as Unix time.

", "CustomKeyStoresListEntry$CreationDate": "

The date and time when the custom key store was created.

", "GetParametersForImportResponse$ParametersValidTo": "

The time at which the import token and public key are no longer valid. After this time, you cannot use them to make an ImportKeyMaterial request and you must send another GetParametersForImport request to get new ones.

", "GrantListEntry$CreationDate": "

The date and time when the grant was created.

", @@ -621,9 +623,9 @@ } }, "GrantConstraints": { - "base": "

Use this structure to allow cryptographic operations in the grant only when the operation request includes the specified encryption context.

AWS KMS applies the grant constraints only to cryptographic operations that support an encryption context, that is, all cryptographic operations with a symmetric CMK. Grant constraints are not applied to operations that do not support an encryption context, such as cryptographic operations with asymmetric CMKs and management operations, such as DescribeKey or ScheduleKeyDeletion.

In a cryptographic operation, the encryption context in the decryption operation must be an exact, case-sensitive match for the keys and values in the encryption context of the encryption operation. Only the order of the pairs can vary.

However, in a grant constraint, the key in each key-value pair is not case sensitive, but the value is case sensitive.

To avoid confusion, do not use multiple encryption context pairs that differ only by case. To require a fully case-sensitive encryption context, use the kms:EncryptionContext: and kms:EncryptionContextKeys conditions in an IAM or key policy. For details, see kms:EncryptionContext: in the AWS Key Management Service Developer Guide .

", + "base": "

Use this structure to allow cryptographic operations in the grant only when the operation request includes the specified encryption context.

AWS KMS applies the grant constraints only to cryptographic operations that support an encryption context, that is, all cryptographic operations with a symmetric CMK. Grant constraints are not applied to operations that do not support an encryption context, such as cryptographic operations with asymmetric CMKs and management operations, such as DescribeKey or RetireGrant.

In a cryptographic operation, the encryption context in the decryption operation must be an exact, case-sensitive match for the keys and values in the encryption context of the encryption operation. Only the order of the pairs can vary.

However, in a grant constraint, the key in each key-value pair is not case sensitive, but the value is case sensitive.

To avoid confusion, do not use multiple encryption context pairs that differ only by case. To require a fully case-sensitive encryption context, use the kms:EncryptionContext: and kms:EncryptionContextKeys conditions in an IAM or key policy. For details, see kms:EncryptionContext: in the AWS Key Management Service Developer Guide .

", "refs": { - "CreateGrantRequest$Constraints": "

Allows a cryptographic operation only when the encryption context matches or includes the encryption context specified in this structure. For more information about encryption context, see Encryption Context in the AWS Key Management Service Developer Guide .

", + "CreateGrantRequest$Constraints": "

Allows a cryptographic operation only when the encryption context matches or includes the encryption context specified in this structure. For more information about encryption context, see Encryption Context in the AWS Key Management Service Developer Guide .

Grant constraints are not applied to operations that do not support an encryption context, such as cryptographic operations with asymmetric CMKs and management operations, such as DescribeKey or RetireGrant.

", "GrantListEntry$Constraints": "

A list of key-value pairs that must be present in the encryption context of certain subsequent operations that the grant allows.

" } }, @@ -651,7 +653,7 @@ "GrantNameType": { "base": null, "refs": { - "CreateGrantRequest$Name": "

A friendly name for identifying the grant. Use this value to prevent the unintended creation of duplicate grants when retrying this request.

When this value is absent, all CreateGrant requests result in a new grant with a unique GrantId even if all the supplied parameters are identical. This can result in unintended duplicates when you retry the CreateGrant request.

When this value is present, you can retry a CreateGrant request with identical parameters; if the grant already exists, the original GrantId is returned without creating a new grant. Note that the returned grant token is unique with every CreateGrant request, even when a duplicate GrantId is returned. All grant tokens obtained in this way can be used interchangeably.

", + "CreateGrantRequest$Name": "

A friendly name for the grant. Use this value to prevent the unintended creation of duplicate grants when retrying this request.

When this value is absent, all CreateGrant requests result in a new grant with a unique GrantId even if all the supplied parameters are identical. This can result in unintended duplicates when you retry the CreateGrant request.

When this value is present, you can retry a CreateGrant request with identical parameters; if the grant already exists, the original GrantId is returned without creating a new grant. Note that the returned grant token is unique with every CreateGrant request, even when a duplicate GrantId is returned. All grant tokens for the same grant ID can be used interchangeably.

", "GrantListEntry$Name": "

The friendly name that identifies the grant. If a name was provided in the CreateGrant request, that name is returned. Otherwise this value is null.

" } }, @@ -776,24 +778,24 @@ "KeyIdType": { "base": null, "refs": { - "AliasListEntry$TargetKeyId": "

String that contains the key identifier referred to by the alias.

", + "AliasListEntry$TargetKeyId": "

String that contains the key identifier of the CMK associated with the alias.

", "CancelKeyDeletionRequest$KeyId": "

The unique identifier for the customer master key (CMK) for which to cancel deletion.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "CancelKeyDeletionResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK whose deletion is canceled.

", - "CreateAliasRequest$TargetKeyId": "

Identifies the CMK to which the alias refers. Specify the key ID or the Amazon Resource Name (ARN) of the CMK. You cannot specify another alias. For help finding the key ID and ARN, see Finding the Key ID and ARN in the AWS Key Management Service Developer Guide.

", + "CreateAliasRequest$TargetKeyId": "

Associates the alias with the specified customer managed CMK. The CMK must be in the same AWS Region.

A valid CMK ID is required. If you supply a null or empty string value, this operation returns an error.

For help finding the key ID and ARN, see Finding the Key ID and ARN in the AWS Key Management Service Developer Guide.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "CreateGrantRequest$KeyId": "

The unique identifier for the customer master key (CMK) that the grant applies to.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK. To specify a CMK in a different AWS account, you must use the key ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", - "DecryptRequest$KeyId": "

Specifies the customer master key (CMK) that AWS KMS will use to decrypt the ciphertext. Enter a key ID of the CMK that was used to encrypt the ciphertext.

If you specify a KeyId value, the Decrypt operation succeeds only if the specified CMK was used to encrypt the ciphertext.

This parameter is required only when the ciphertext was encrypted under an asymmetric CMK. Otherwise, AWS KMS uses the metadata that it adds to the ciphertext blob to determine which CMK was used to encrypt the ciphertext. However, you can use this parameter to ensure that a particular CMK (of any kind) is used to decrypt the ciphertext.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\".

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", + "DecryptRequest$KeyId": "

Specifies the customer master key (CMK) that AWS KMS uses to decrypt the ciphertext. Enter a key ID of the CMK that was used to encrypt the ciphertext.

This parameter is required only when the ciphertext was encrypted under an asymmetric CMK. If you used a symmetric CMK, AWS KMS can get the CMK from metadata that it adds to the symmetric ciphertext blob. However, it is always recommended as a best practice. This practice ensures that you use the CMK that you intend.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "DecryptResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK that was used to decrypt the ciphertext.

", "DeleteImportedKeyMaterialRequest$KeyId": "

Identifies the CMK from which you are deleting imported key material. The Origin of the CMK must be EXTERNAL.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "DescribeKeyRequest$KeyId": "

Describes the specified customer master key (CMK).

If you specify a predefined AWS alias (an AWS alias with no key ID), KMS associates the alias with an AWS managed CMK and returns its KeyId and Arn in the response.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "DisableKeyRequest$KeyId": "

A unique identifier for the customer master key (CMK).

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", - "DisableKeyRotationRequest$KeyId": "

Identifies a symmetric customer master key (CMK). You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", + "DisableKeyRotationRequest$KeyId": "

Identifies a symmetric customer master key (CMK). You cannot enable or disable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "EnableKeyRequest$KeyId": "

A unique identifier for the customer master key (CMK).

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "EnableKeyRotationRequest$KeyId": "

Identifies a symmetric customer master key (CMK). You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported key material, or CMKs in a custom key store.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "EncryptRequest$KeyId": "

A unique identifier for the customer master key (CMK).

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "EncryptResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK that was used to encrypt the plaintext.

", "GenerateDataKeyPairRequest$KeyId": "

Specifies the symmetric CMK that encrypts the private key in the data key pair. You cannot specify an asymmetric CMK or a CMK in a custom key store. To get the type and origin of your CMK, use the DescribeKey operation.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "GenerateDataKeyPairResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK that encrypted the private key.

", - "GenerateDataKeyPairWithoutPlaintextRequest$KeyId": "

Specifies the CMK that encrypts the private key in the data key pair. You must specify a symmetric CMK. You cannot use an asymmetric CMK or a CMK in a custom key store. To get the type and origin of your CMK, use the DescribeKey operation.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\".

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", + "GenerateDataKeyPairWithoutPlaintextRequest$KeyId": "

Specifies the CMK that encrypts the private key in the data key pair. You must specify a symmetric CMK. You cannot use an asymmetric CMK or a CMK in a custom key store. To get the type and origin of your CMK, use the DescribeKey operation.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "GenerateDataKeyPairWithoutPlaintextResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK that encrypted the private key.

", "GenerateDataKeyRequest$KeyId": "

Identifies the symmetric CMK that encrypts the data key.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "GenerateDataKeyResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK that encrypted the data key.

", @@ -809,12 +811,12 @@ "ImportKeyMaterialRequest$KeyId": "

The identifier of the symmetric CMK that receives the imported key material. The CMK's Origin must be EXTERNAL. This must be the same CMK specified in the KeyID parameter of the corresponding GetParametersForImport request.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "KeyListEntry$KeyId": "

Unique identifier of the key.

", "KeyMetadata$KeyId": "

The globally unique identifier for the CMK.

", - "ListAliasesRequest$KeyId": "

Lists only aliases that refer to the specified CMK. The value of this parameter can be the ID or Amazon Resource Name (ARN) of a CMK in the caller's account and region. You cannot use an alias name or alias ARN in this value.

This parameter is optional. If you omit it, ListAliases returns all aliases in the account and region.

", + "ListAliasesRequest$KeyId": "

Lists only aliases that are associated with the specified CMK. Enter a CMK in your AWS account.

This parameter is optional. If you omit it, ListAliases returns all aliases in the account and Region.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "ListGrantsRequest$KeyId": "

A unique identifier for the customer master key (CMK).

Specify the key ID or the Amazon Resource Name (ARN) of the CMK. To specify a CMK in a different AWS account, you must use the key ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "ListKeyPoliciesRequest$KeyId": "

A unique identifier for the customer master key (CMK).

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "ListResourceTagsRequest$KeyId": "

A unique identifier for the customer master key (CMK).

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "PutKeyPolicyRequest$KeyId": "

A unique identifier for the customer master key (CMK).

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", - "ReEncryptRequest$SourceKeyId": "

A unique identifier for the CMK that is used to decrypt the ciphertext before it reencrypts it using the destination CMK.

This parameter is required only when the ciphertext was encrypted under an asymmetric CMK. Otherwise, AWS KMS uses the metadata that it adds to the ciphertext blob to determine which CMK was used to encrypt the ciphertext. However, you can use this parameter to ensure that a particular CMK (of any kind) is used to decrypt the ciphertext before it is reencrypted.

If you specify a KeyId value, the decrypt part of the ReEncrypt operation succeeds only if the specified CMK was used to encrypt the ciphertext.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\".

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", + "ReEncryptRequest$SourceKeyId": "

Specifies the customer master key (CMK) that AWS KMS will use to decrypt the ciphertext before it is re-encrypted. Enter a key ID of the CMK that was used to encrypt the ciphertext.

This parameter is required only when the ciphertext was encrypted under an asymmetric CMK. If you used a symmetric CMK, AWS KMS can get the CMK from metadata that it adds to the symmetric ciphertext blob. However, it is always recommended as a best practice. This practice ensures that you use the CMK that you intend.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "ReEncryptRequest$DestinationKeyId": "

A unique identifier for the CMK that is used to reencrypt the data. Specify a symmetric or asymmetric CMK with a KeyUsage value of ENCRYPT_DECRYPT. To find the KeyUsage value of a CMK, use the DescribeKey operation.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "ReEncryptResponse$SourceKeyId": "

Unique identifier of the CMK used to originally encrypt the data.

", "ReEncryptResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK that was used to reencrypt the data.

", @@ -824,9 +826,9 @@ "ScheduleKeyDeletionResponse$KeyId": "

The Amazon Resource Name (key ARN) of the CMK whose deletion is scheduled.

", "SignRequest$KeyId": "

Identifies an asymmetric CMK. AWS KMS uses the private key in the asymmetric CMK to sign the message. The KeyUsage type of the CMK must be SIGN_VERIFY. To find the KeyUsage of a CMK, use the DescribeKey operation.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "SignResponse$KeyId": "

The Amazon Resource Name (key ARN) of the asymmetric CMK that was used to sign the message.

", - "TagResourceRequest$KeyId": "

A unique identifier for the CMK you are tagging.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", - "UntagResourceRequest$KeyId": "

A unique identifier for the CMK from which you are removing tags.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", - "UpdateAliasRequest$TargetKeyId": "

Identifies the CMK to associate with the alias. When the update operation completes, the alias will point to this CMK.

The CMK must be in the same AWS account and Region as the alias. Also, the new target CMK must be the same type as the current target CMK (both symmetric or both asymmetric) and they must have the same key usage.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

To verify that the alias is mapped to the correct CMK, use ListAliases.

", + "TagResourceRequest$KeyId": "

Identifies a customer managed CMK in the account and Region.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", + "UntagResourceRequest$KeyId": "

Identifies the CMK from which you are removing tags.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", + "UpdateAliasRequest$TargetKeyId": "

Identifies the customer managed CMK to associate with the alias. You don't have permission to associate an alias with an AWS managed CMK.

The CMK must be in the same AWS account and Region as the alias. Also, the new target CMK must be the same type as the current target CMK (both symmetric or both asymmetric) and they must have the same key usage.

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

To verify that the alias is mapped to the correct CMK, use ListAliases.

", "UpdateKeyDescriptionRequest$KeyId": "

A unique identifier for the customer master key (CMK).

Specify the key ID or the Amazon Resource Name (ARN) of the CMK.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey.

", "VerifyRequest$KeyId": "

Identifies the asymmetric CMK that will be used to verify the signature. This must be the same CMK that was used to generate the signature. If you specify a different CMK, the signature verification fails.

To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, or alias ARN. When using an alias name, prefix it with \"alias/\". To specify a CMK in a different AWS account, you must use the key ARN or alias ARN.

For example:

To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. To get the alias name and alias ARN, use ListAliases.

", "VerifyResponse$KeyId": "

The Amazon Resource Name (key ARN) of the asymmetric CMK that was used to verify the signature.

" @@ -1041,7 +1043,7 @@ "PolicyType": { "base": null, "refs": { - "CreateKeyRequest$Policy": "

The key policy to attach to the CMK.

If you provide a key policy, it must meet the following criteria:

If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK. For more information, see Default Key Policy in the AWS Key Management Service Developer Guide.

The key policy size quota is 32 kilobytes (32768 bytes).

", + "CreateKeyRequest$Policy": "

The key policy to attach to the CMK.

If you provide a key policy, it must meet the following criteria:

If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK. For more information, see Default Key Policy in the AWS Key Management Service Developer Guide.

The key policy size quota is 32 kilobytes (32768 bytes).

For help writing and formatting a JSON policy document, see the IAM JSON Policy Reference in the IAM User Guide .

", "GetKeyPolicyResponse$Policy": "

A key policy document in JSON format.

", "PutKeyPolicyRequest$Policy": "

The key policy to attach to the CMK.

The key policy must meet the following criteria:

The key policy cannot exceed 32 kilobytes (32768 bytes). For more information, see Resource Quotas in the AWS Key Management Service Developer Guide.

" } @@ -1054,7 +1056,7 @@ "GrantListEntry$GranteePrincipal": "

The identity that gets the permissions in the grant.

The GranteePrincipal field in the ListGrants response usually contains the user or role designated as the grantee principal in the grant. However, when the grantee principal in the grant is an AWS service, the GranteePrincipal field contains the service principal, which might represent several different grantee principals.

", "GrantListEntry$RetiringPrincipal": "

The principal that can retire the grant.

", "GrantListEntry$IssuingAccount": "

The AWS account under which the grant was issued.

", - "ListRetirableGrantsRequest$RetiringPrincipal": "

The retiring principal for which to list grants.

To specify the retiring principal, use the Amazon Resource Name (ARN) of an AWS principal. Valid AWS principals include AWS accounts (root), IAM users, federated users, and assumed role users. For examples of the ARN syntax for specifying a principal, see AWS Identity and Access Management (IAM) in the Example ARNs section of the Amazon Web Services General Reference.

" + "ListRetirableGrantsRequest$RetiringPrincipal": "

The retiring principal for which to list grants. Enter a principal in your AWS account.

To specify the retiring principal, use the Amazon Resource Name (ARN) of an AWS principal. Valid AWS principals include AWS accounts (root), IAM users, federated users, and assumed role users. For examples of the ARN syntax for specifying a principal, see AWS Identity and Access Management (IAM) in the Example ARNs section of the Amazon Web Services General Reference.

" } }, "PublicKeyType": { @@ -1154,9 +1156,9 @@ "TagList": { "base": null, "refs": { - "CreateKeyRequest$Tags": "

One or more tags. Each tag consists of a tag key and a tag value. Both the tag key and the tag value are required, but the tag value can be an empty (null) string.

When you add tags to an AWS resource, AWS generates a cost allocation report with usage and costs aggregated by tags. For information about adding, changing, deleting and listing tags for CMKs, see Tagging Keys.

Use this parameter to tag the CMK when it is created. To add tags to an existing CMK, use the TagResource operation.

", + "CreateKeyRequest$Tags": "

One or more tags. Each tag consists of a tag key and a tag value. Both the tag key and the tag value are required, but the tag value can be an empty (null) string.

When you add tags to an AWS resource, AWS generates a cost allocation report with usage and costs aggregated by tags. For information about adding, changing, deleting and listing tags for CMKs, see Tagging Keys.

Use this parameter to tag the CMK when it is created. To add tags to an existing CMK, use the TagResource operation.

To use this parameter, you must have kms:TagResource permission in an IAM policy.

", "ListResourceTagsResponse$Tags": "

A list of tags. Each tag consists of a tag key and a tag value.

", - "TagResourceRequest$Tags": "

One or more tags. Each tag consists of a tag key and a tag value.

" + "TagResourceRequest$Tags": "

One or more tags.

Each tag consists of a tag key and a tag value. The tag value can be an empty (null) string.

You cannot have more than one tag on a CMK with the same tag key. If you specify an existing tag key with a different tag value, AWS KMS replaces the current tag value with the specified one.

" } }, "TagResourceRequest": { diff --git a/models/apis/kms/2014-11-01/examples-1.json b/models/apis/kms/2014-11-01/examples-1.json index b0a17a5bec..101313f4b0 100644 --- a/models/apis/kms/2014-11-01/examples-1.json +++ b/models/apis/kms/2014-11-01/examples-1.json @@ -109,7 +109,8 @@ "Decrypt": [ { "input": { - "CiphertextBlob": "" + "CiphertextBlob": "", + "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "output": { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", @@ -117,7 +118,8 @@ }, "comments": { "input": { - "CiphertextBlob": "The encrypted data (ciphertext)." + "CiphertextBlob": "The encrypted data (ciphertext).", + "KeyId": "A key identifier for the CMK to use to decrypt the data." }, "output": { "KeyId": "The Amazon Resource Name (ARN) of the CMK that was used to decrypt the data.", @@ -754,12 +756,13 @@ "comments": { "input": { "CiphertextBlob": "The data to reencrypt.", - "DestinationKeyId": "The identifier of the CMK to use to reencrypt the data. You can use the key ID or Amazon Resource Name (ARN) of the CMK, or the name or ARN of an alias that refers to the CMK." + "DestinationKeyId": "The identifier of the CMK to use to reencrypt the data. You can use any valid key identifier.", + "SourceKeyId": "The identifier of the CMK to use to decrypt the data. You can use any valid key identifier." }, "output": { "CiphertextBlob": "The reencrypted data.", "KeyId": "The ARN of the CMK that was used to reencrypt the data.", - "SourceKeyId": "The ARN of the CMK that was used to originally encrypt the data." + "SourceKeyId": "The ARN of the CMK that was originally used to encrypt the data." } }, "description": "The following example reencrypts data with the specified CMK.", diff --git a/models/apis/route53/2013-04-01/api-2.json b/models/apis/route53/2013-04-01/api-2.json index 7693ddfb92..7dfc5bb2c4 100644 --- a/models/apis/route53/2013-04-01/api-2.json +++ b/models/apis/route53/2013-04-01/api-2.json @@ -12,6 +12,22 @@ "uid":"route53-2013-04-01" }, "operations":{ + "ActivateKeySigningKey":{ + "name":"ActivateKeySigningKey", + "http":{ + "method":"POST", + "requestUri":"/2013-04-01/keysigningkey/{HostedZoneId}/{Name}/activate" + }, + "input":{"shape":"ActivateKeySigningKeyRequest"}, + "output":{"shape":"ActivateKeySigningKeyResponse"}, + "errors":[ + {"shape":"ConcurrentModification"}, + {"shape":"NoSuchKeySigningKey"}, + {"shape":"InvalidKeySigningKeyStatus"}, + {"shape":"InvalidSigningStatus"}, + {"shape":"InvalidKMSArn"} + ] + }, "AssociateVPCWithHostedZone":{ "name":"AssociateVPCWithHostedZone", "http":{ @@ -119,6 +135,32 @@ {"shape":"DelegationSetNotReusable"} ] }, + "CreateKeySigningKey":{ + "name":"CreateKeySigningKey", + "http":{ + "method":"POST", + "requestUri":"/2013-04-01/keysigningkey", + "responseCode":201 + }, + "input":{ + "shape":"CreateKeySigningKeyRequest", + "locationName":"CreateKeySigningKeyRequest", + "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"} + }, + "output":{"shape":"CreateKeySigningKeyResponse"}, + "errors":[ + {"shape":"NoSuchHostedZone"}, + {"shape":"InvalidArgument"}, + {"shape":"InvalidInput"}, + {"shape":"InvalidKMSArn"}, + {"shape":"InvalidKeySigningKeyStatus"}, + {"shape":"InvalidSigningStatus"}, + {"shape":"InvalidKeySigningKeyName"}, + {"shape":"KeySigningKeyAlreadyExists"}, + {"shape":"TooManyKeySigningKeys"}, + {"shape":"ConcurrentModification"} + ] + }, "CreateQueryLoggingConfig":{ "name":"CreateQueryLoggingConfig", "http":{ @@ -246,6 +288,23 @@ {"shape":"InvalidInput"} ] }, + "DeactivateKeySigningKey":{ + "name":"DeactivateKeySigningKey", + "http":{ + "method":"POST", + "requestUri":"/2013-04-01/keysigningkey/{HostedZoneId}/{Name}/deactivate" + }, + "input":{"shape":"DeactivateKeySigningKeyRequest"}, + "output":{"shape":"DeactivateKeySigningKeyResponse"}, + "errors":[ + {"shape":"ConcurrentModification"}, + {"shape":"NoSuchKeySigningKey"}, + {"shape":"InvalidKeySigningKeyStatus"}, + {"shape":"InvalidSigningStatus"}, + {"shape":"KeySigningKeyInUse"}, + {"shape":"KeySigningKeyInParentDSRecord"} + ] + }, "DeleteHealthCheck":{ "name":"DeleteHealthCheck", "http":{ @@ -276,6 +335,22 @@ {"shape":"InvalidDomainName"} ] }, + "DeleteKeySigningKey":{ + "name":"DeleteKeySigningKey", + "http":{ + "method":"DELETE", + "requestUri":"/2013-04-01/keysigningkey/{HostedZoneId}/{Name}" + }, + "input":{"shape":"DeleteKeySigningKeyRequest"}, + "output":{"shape":"DeleteKeySigningKeyResponse"}, + "errors":[ + {"shape":"ConcurrentModification"}, + {"shape":"NoSuchKeySigningKey"}, + {"shape":"InvalidKeySigningKeyStatus"}, + {"shape":"InvalidSigningStatus"}, + {"shape":"InvalidKMSArn"} + ] + }, "DeleteQueryLoggingConfig":{ "name":"DeleteQueryLoggingConfig", "http":{ @@ -354,6 +429,24 @@ {"shape":"InvalidInput"} ] }, + "DisableHostedZoneDNSSEC":{ + "name":"DisableHostedZoneDNSSEC", + "http":{ + "method":"POST", + "requestUri":"/2013-04-01/hostedzone/{Id}/disable-dnssec" + }, + "input":{"shape":"DisableHostedZoneDNSSECRequest"}, + "output":{"shape":"DisableHostedZoneDNSSECResponse"}, + "errors":[ + {"shape":"NoSuchHostedZone"}, + {"shape":"InvalidArgument"}, + {"shape":"ConcurrentModification"}, + {"shape":"KeySigningKeyInParentDSRecord"}, + {"shape":"DNSSECNotFound"}, + {"shape":"InvalidKeySigningKeyStatus"}, + {"shape":"InvalidKMSArn"} + ] + }, "DisassociateVPCFromHostedZone":{ "name":"DisassociateVPCFromHostedZone", "http":{ @@ -374,6 +467,25 @@ {"shape":"InvalidInput"} ] }, + "EnableHostedZoneDNSSEC":{ + "name":"EnableHostedZoneDNSSEC", + "http":{ + "method":"POST", + "requestUri":"/2013-04-01/hostedzone/{Id}/enable-dnssec" + }, + "input":{"shape":"EnableHostedZoneDNSSECRequest"}, + "output":{"shape":"EnableHostedZoneDNSSECResponse"}, + "errors":[ + {"shape":"NoSuchHostedZone"}, + {"shape":"InvalidArgument"}, + {"shape":"ConcurrentModification"}, + {"shape":"KeySigningKeyWithActiveStatusNotFound"}, + {"shape":"InvalidKMSArn"}, + {"shape":"HostedZonePartiallyDelegated"}, + {"shape":"DNSSECNotFound"}, + {"shape":"InvalidKeySigningKeyStatus"} + ] + }, "GetAccountLimit":{ "name":"GetAccountLimit", "http":{ @@ -408,6 +520,19 @@ "input":{"shape":"GetCheckerIpRangesRequest"}, "output":{"shape":"GetCheckerIpRangesResponse"} }, + "GetDNSSEC":{ + "name":"GetDNSSEC", + "http":{ + "method":"GET", + "requestUri":"/2013-04-01/hostedzone/{Id}/dnssec" + }, + "input":{"shape":"GetDNSSECRequest"}, + "output":{"shape":"GetDNSSECResponse"}, + "errors":[ + {"shape":"NoSuchHostedZone"}, + {"shape":"InvalidArgument"} + ] + }, "GetGeoLocation":{ "name":"GetGeoLocation", "http":{ @@ -914,6 +1039,32 @@ "MAX_TRAFFIC_POLICIES_BY_OWNER" ] }, + "ActivateKeySigningKeyRequest":{ + "type":"structure", + "required":[ + "HostedZoneId", + "Name" + ], + "members":{ + "HostedZoneId":{ + "shape":"ResourceId", + "location":"uri", + "locationName":"HostedZoneId" + }, + "Name":{ + "shape":"SigningKeyName", + "location":"uri", + "locationName":"Name" + } + } + }, + "ActivateKeySigningKeyResponse":{ + "type":"structure", + "required":["ChangeInfo"], + "members":{ + "ChangeInfo":{"shape":"ChangeInfo"} + } + }, "AlarmIdentifier":{ "type":"structure", "required":[ @@ -1233,6 +1384,40 @@ } } }, + "CreateKeySigningKeyRequest":{ + "type":"structure", + "required":[ + "CallerReference", + "HostedZoneId", + "KeyManagementServiceArn", + "Name", + "Status" + ], + "members":{ + "CallerReference":{"shape":"Nonce"}, + "HostedZoneId":{"shape":"ResourceId"}, + "KeyManagementServiceArn":{"shape":"SigningKeyString"}, + "Name":{"shape":"SigningKeyName"}, + "Status":{"shape":"SigningKeyStatus"} + } + }, + "CreateKeySigningKeyResponse":{ + "type":"structure", + "required":[ + "ChangeInfo", + "KeySigningKey", + "Location" + ], + "members":{ + "ChangeInfo":{"shape":"ChangeInfo"}, + "KeySigningKey":{"shape":"KeySigningKey"}, + "Location":{ + "shape":"ResourceURI", + "location":"header", + "locationName":"Location" + } + } + }, "CreateQueryLoggingConfigRequest":{ "type":"structure", "required":[ @@ -1403,6 +1588,47 @@ "max":1024 }, "DNSRCode":{"type":"string"}, + "DNSSECNotFound":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "error":{"httpStatusCode":400}, + "exception":true + }, + "DNSSECStatus":{ + "type":"structure", + "members":{ + "ServeSignature":{"shape":"ServeSignature"}, + "StatusMessage":{"shape":"SigningKeyStatusMessage"} + } + }, + "DeactivateKeySigningKeyRequest":{ + "type":"structure", + "required":[ + "HostedZoneId", + "Name" + ], + "members":{ + "HostedZoneId":{ + "shape":"ResourceId", + "location":"uri", + "locationName":"HostedZoneId" + }, + "Name":{ + "shape":"SigningKeyName", + "location":"uri", + "locationName":"Name" + } + } + }, + "DeactivateKeySigningKeyResponse":{ + "type":"structure", + "required":["ChangeInfo"], + "members":{ + "ChangeInfo":{"shape":"ChangeInfo"} + } + }, "DelegationSet":{ "type":"structure", "required":["NameServers"], @@ -1496,6 +1722,32 @@ "ChangeInfo":{"shape":"ChangeInfo"} } }, + "DeleteKeySigningKeyRequest":{ + "type":"structure", + "required":[ + "HostedZoneId", + "Name" + ], + "members":{ + "HostedZoneId":{ + "shape":"ResourceId", + "location":"uri", + "locationName":"HostedZoneId" + }, + "Name":{ + "shape":"SigningKeyName", + "location":"uri", + "locationName":"Name" + } + } + }, + "DeleteKeySigningKeyResponse":{ + "type":"structure", + "required":["ChangeInfo"], + "members":{ + "ChangeInfo":{"shape":"ChangeInfo"} + } + }, "DeleteQueryLoggingConfigRequest":{ "type":"structure", "required":["Id"], @@ -1612,6 +1864,24 @@ }, "max":10 }, + "DisableHostedZoneDNSSECRequest":{ + "type":"structure", + "required":["HostedZoneId"], + "members":{ + "HostedZoneId":{ + "shape":"ResourceId", + "location":"uri", + "locationName":"Id" + } + } + }, + "DisableHostedZoneDNSSECResponse":{ + "type":"structure", + "required":["ChangeInfo"], + "members":{ + "ChangeInfo":{"shape":"ChangeInfo"} + } + }, "Disabled":{"type":"boolean"}, "DisassociateVPCComment":{"type":"string"}, "DisassociateVPCFromHostedZoneRequest":{ @@ -1637,6 +1907,24 @@ "ChangeInfo":{"shape":"ChangeInfo"} } }, + "EnableHostedZoneDNSSECRequest":{ + "type":"structure", + "required":["HostedZoneId"], + "members":{ + "HostedZoneId":{ + "shape":"ResourceId", + "location":"uri", + "locationName":"Id" + } + } + }, + "EnableHostedZoneDNSSECResponse":{ + "type":"structure", + "required":["ChangeInfo"], + "members":{ + "ChangeInfo":{"shape":"ChangeInfo"} + } + }, "EnableSNI":{"type":"boolean"}, "ErrorMessage":{"type":"string"}, "ErrorMessages":{ @@ -1767,6 +2055,28 @@ "CheckerIpRanges":{"shape":"CheckerIpRanges"} } }, + "GetDNSSECRequest":{ + "type":"structure", + "required":["HostedZoneId"], + "members":{ + "HostedZoneId":{ + "shape":"ResourceId", + "location":"uri", + "locationName":"Id" + } + } + }, + "GetDNSSECResponse":{ + "type":"structure", + "required":[ + "Status", + "KeySigningKeys" + ], + "members":{ + "Status":{"shape":"DNSSECStatus"}, + "KeySigningKeys":{"shape":"KeySigningKeys"} + } + }, "GetGeoLocationRequest":{ "type":"structure", "members":{ @@ -2269,6 +2579,13 @@ "type":"string", "max":128 }, + "HostedZonePartiallyDelegated":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "exception":true + }, "HostedZoneRRSetCount":{"type":"long"}, "HostedZoneSummaries":{ "type":"list", @@ -2358,6 +2675,29 @@ "error":{"httpStatusCode":400}, "exception":true }, + "InvalidKMSArn":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "InvalidKeySigningKeyName":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "error":{"httpStatusCode":400}, + "exception":true + }, + "InvalidKeySigningKeyStatus":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "error":{"httpStatusCode":400}, + "exception":true + }, "InvalidPaginationToken":{ "type":"structure", "members":{ @@ -2366,6 +2706,13 @@ "error":{"httpStatusCode":400}, "exception":true }, + "InvalidSigningStatus":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "exception":true + }, "InvalidTrafficPolicyDocument":{ "type":"structure", "members":{ @@ -2384,6 +2731,61 @@ }, "Inverted":{"type":"boolean"}, "IsPrivateZone":{"type":"boolean"}, + "KeySigningKey":{ + "type":"structure", + "members":{ + "Name":{"shape":"SigningKeyName"}, + "KmsArn":{"shape":"SigningKeyString"}, + "Flag":{"shape":"SigningKeyInteger"}, + "SigningAlgorithmMnemonic":{"shape":"SigningKeyString"}, + "SigningAlgorithmType":{"shape":"SigningKeyInteger"}, + "DigestAlgorithmMnemonic":{"shape":"SigningKeyString"}, + "DigestAlgorithmType":{"shape":"SigningKeyInteger"}, + "KeyTag":{"shape":"SigningKeyTag"}, + "DigestValue":{"shape":"SigningKeyString"}, + "PublicKey":{"shape":"SigningKeyString"}, + "DSRecord":{"shape":"SigningKeyString"}, + "DNSKEYRecord":{"shape":"SigningKeyString"}, + "Status":{"shape":"SigningKeyStatus"}, + "StatusMessage":{"shape":"SigningKeyStatusMessage"}, + "CreatedDate":{"shape":"TimeStamp"}, + "LastModifiedDate":{"shape":"TimeStamp"} + } + }, + "KeySigningKeyAlreadyExists":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "error":{"httpStatusCode":409}, + "exception":true + }, + "KeySigningKeyInParentDSRecord":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "error":{"httpStatusCode":400}, + "exception":true + }, + "KeySigningKeyInUse":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "KeySigningKeyWithActiveStatusNotFound":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "exception":true + }, + "KeySigningKeys":{ + "type":"list", + "member":{"shape":"KeySigningKey"} + }, "LastVPCAssociation":{ "type":"structure", "members":{ @@ -3054,6 +3456,14 @@ "error":{"httpStatusCode":404}, "exception":true }, + "NoSuchKeySigningKey":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "error":{"httpStatusCode":404}, + "exception":true + }, "NoSuchQueryLoggingConfig":{ "type":"structure", "members":{ @@ -3177,7 +3587,8 @@ "SRV", "SPF", "AAAA", - "CAA" + "CAA", + "DS" ] }, "RecordData":{ @@ -3358,10 +3769,37 @@ "type":"string", "max":255 }, + "ServeSignature":{ + "type":"string", + "max":1024, + "min":1 + }, "ServicePrincipal":{ "type":"string", "max":128 }, + "SigningKeyInteger":{"type":"integer"}, + "SigningKeyName":{ + "type":"string", + "max":128, + "min":3 + }, + "SigningKeyStatus":{ + "type":"string", + "max":150, + "min":5 + }, + "SigningKeyStatusMessage":{ + "type":"string", + "max":512, + "min":0 + }, + "SigningKeyString":{"type":"string"}, + "SigningKeyTag":{ + "type":"integer", + "max":65536, + "min":0 + }, "Statistic":{ "type":"string", "enum":[ @@ -3527,6 +3965,13 @@ "error":{"httpStatusCode":400}, "exception":true }, + "TooManyKeySigningKeys":{ + "type":"structure", + "members":{ + "message":{"shape":"ErrorMessage"} + }, + "exception":true + }, "TooManyTrafficPolicies":{ "type":"structure", "members":{ diff --git a/models/apis/route53/2013-04-01/docs-2.json b/models/apis/route53/2013-04-01/docs-2.json index 5acc3455cd..aeeb63f643 100644 --- a/models/apis/route53/2013-04-01/docs-2.json +++ b/models/apis/route53/2013-04-01/docs-2.json @@ -2,28 +2,35 @@ "version": "2.0", "service": "

Amazon Route 53 is a highly available and scalable Domain Name System (DNS) web service.

", "operations": { + "ActivateKeySigningKey": "

Activates a key signing key (KSK) so that it can be used for signing by DNSSEC. This operation changes the KSK status to ACTIVE.

", "AssociateVPCWithHostedZone": "

Associates an Amazon VPC with a private hosted zone.

To perform the association, the VPC and the private hosted zone must already exist. You can't convert a public hosted zone into a private hosted zone.

If you want to associate a VPC that was created by using one AWS account with a private hosted zone that was created by using a different account, the AWS account that created the private hosted zone must first submit a CreateVPCAssociationAuthorization request. Then the account that created the VPC must submit an AssociateVPCWithHostedZone request.

", "ChangeResourceRecordSets": "

Creates, changes, or deletes a resource record set, which contains authoritative DNS information for a specified domain name or subdomain name. For example, you can use ChangeResourceRecordSets to create a resource record set that routes traffic for test.example.com to a web server that has an IP address of 192.0.2.44.

Deleting Resource Record Sets

To delete a resource record set, you must specify all the same values that you specified when you created it.

Change Batches and Transactional Changes

The request body must include a document with a ChangeResourceRecordSetsRequest element. The request body contains a list of change items, known as a change batch. Change batches are considered transactional changes. Route 53 validates the changes in the request and then either makes all or none of the changes in the change batch request. This ensures that DNS routing isn't adversely affected by partial changes to the resource record sets in a hosted zone.

For example, suppose a change batch request contains two changes: it deletes the CNAME resource record set for www.example.com and creates an alias resource record set for www.example.com. If validation for both records succeeds, Route 53 deletes the first resource record set and creates the second resource record set in a single operation. If validation for either the DELETE or the CREATE action fails, then the request is canceled, and the original CNAME record continues to exist.

If you try to delete the same resource record set more than once in a single change batch, Route 53 returns an InvalidChangeBatch error.

Traffic Flow

To create resource record sets for complex routing configurations, use either the traffic flow visual editor in the Route 53 console or the API actions for traffic policies and traffic policy instances. Save the configuration as a traffic policy, then associate the traffic policy with one or more domain names (such as example.com) or subdomain names (such as www.example.com), in the same hosted zone or in multiple hosted zones. You can roll back the updates if the new configuration isn't performing as expected. For more information, see Using Traffic Flow to Route DNS Traffic in the Amazon Route 53 Developer Guide.

Create, Delete, and Upsert

Use ChangeResourceRecordsSetsRequest to perform the following actions:

Syntaxes for Creating, Updating, and Deleting Resource Record Sets

The syntax for a request depends on the type of resource record set that you want to create, delete, or update, such as weighted, alias, or failover. The XML elements in your request must appear in the order listed in the syntax.

For an example for each type of resource record set, see \"Examples.\"

Don't refer to the syntax in the \"Parameter Syntax\" section, which includes all of the elements for every kind of resource record set that you can create, delete, or update by using ChangeResourceRecordSets.

Change Propagation to Route 53 DNS Servers

When you submit a ChangeResourceRecordSets request, Route 53 propagates your changes to all of the Route 53 authoritative DNS servers. While your changes are propagating, GetChange returns a status of PENDING. When propagation is complete, GetChange returns a status of INSYNC. Changes generally propagate to all Route 53 name servers within 60 seconds. For more information, see GetChange.

Limits on ChangeResourceRecordSets Requests

For information about the limits on a ChangeResourceRecordSets request, see Limits in the Amazon Route 53 Developer Guide.

", "ChangeTagsForResource": "

Adds, edits, or deletes tags for a health check or a hosted zone.

For information about using tags for cost allocation, see Using Cost Allocation Tags in the AWS Billing and Cost Management User Guide.

", "CreateHealthCheck": "

Creates a new health check.

For information about adding health checks to resource record sets, see HealthCheckId in ChangeResourceRecordSets.

ELB Load Balancers

If you're registering EC2 instances with an Elastic Load Balancing (ELB) load balancer, do not create Amazon Route 53 health checks for the EC2 instances. When you register an EC2 instance with a load balancer, you configure settings for an ELB health check, which performs a similar function to a Route 53 health check.

Private Hosted Zones

You can associate health checks with failover resource record sets in a private hosted zone. Note the following:

", "CreateHostedZone": "

Creates a new public or private hosted zone. You create records in a public hosted zone to define how you want to route traffic on the internet for a domain, such as example.com, and its subdomains (apex.example.com, acme.example.com). You create records in a private hosted zone to define how you want to route traffic for a domain and its subdomains within one or more Amazon Virtual Private Clouds (Amazon VPCs).

You can't convert a public hosted zone to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets.

For more information about charges for hosted zones, see Amazon Route 53 Pricing.

Note the following:

When you submit a CreateHostedZone request, the initial status of the hosted zone is PENDING. For public hosted zones, this means that the NS and SOA records are not yet available on all Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to INSYNC.

", + "CreateKeySigningKey": "

Creates a new key signing key (KSK) associated with a hosted zone. You can only have two KSKs per hosted zone.

", "CreateQueryLoggingConfig": "

Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.

DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:

Log Group and Resource Policy

Before you create a query logging configuration, perform the following operations.

If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically.

  1. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following:

    • You must create the log group in the us-east-1 region.

    • You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for.

    • When you create log groups for query logging, we recommend that you use a consistent prefix, for example:

      /aws/route53/hosted zone name

      In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging.

  2. Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example:

    arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/*

    You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI.

Log Streams and Edge Locations

When Route 53 finishes creating the configuration for DNS query logging, it does the following:

  • Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location.

  • Begins to send query logs to the applicable log stream.

The name of each log stream is in the following format:

hosted zone ID/edge location code

The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see \"The Route 53 Global Network\" on the Route 53 Product Details page.

Queries That Are Logged

Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide.

Log File Format

For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide.

Pricing

For information about charges for query logs, see Amazon CloudWatch Pricing.

How to Stop Logging

If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig.

", "CreateReusableDelegationSet": "

Creates a delegation set (a group of four name servers) that can be reused by multiple hosted zones that were created by the same AWS account.

You can also create a reusable delegation set that uses the four name servers that are associated with an existing hosted zone. Specify the hosted zone ID in the CreateReusableDelegationSet request.

You can't associate a reusable delegation set with a private hosted zone.

For information about using a reusable delegation set to configure white label name servers, see Configuring White Label Name Servers.

The process for migrating existing hosted zones to use a reusable delegation set is comparable to the process for configuring white label name servers. You need to perform the following steps:

  1. Create a reusable delegation set.

  2. Recreate hosted zones, and reduce the TTL to 60 seconds or less.

  3. Recreate resource record sets in the new hosted zones.

  4. Change the registrar's name servers to use the name servers for the new hosted zones.

  5. Monitor traffic for the website or application.

  6. Change TTLs back to their original values.

If you want to migrate existing hosted zones to use a reusable delegation set, the existing hosted zones can't use any of the name servers that are assigned to the reusable delegation set. If one or more hosted zones do use one or more name servers that are assigned to the reusable delegation set, you can do one of the following:

", "CreateTrafficPolicy": "

Creates a traffic policy, which you use to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com).

", "CreateTrafficPolicyInstance": "

Creates resource record sets in a specified hosted zone based on the settings in a specified traffic policy version. In addition, CreateTrafficPolicyInstance associates the resource record sets with a specified domain name (such as example.com) or subdomain name (such as www.example.com). Amazon Route 53 responds to DNS queries for the domain or subdomain name by using the resource record sets that CreateTrafficPolicyInstance created.

", "CreateTrafficPolicyVersion": "

Creates a new version of an existing traffic policy. When you create a new version of a traffic policy, you specify the ID of the traffic policy that you want to update and a JSON-formatted document that describes the new version. You use traffic policies to create multiple DNS resource record sets for one domain name (such as example.com) or one subdomain name (such as www.example.com). You can create a maximum of 1000 versions of a traffic policy. If you reach the limit and need to create another version, you'll need to start a new traffic policy.

", "CreateVPCAssociationAuthorization": "

Authorizes the AWS account that created a specified VPC to submit an AssociateVPCWithHostedZone request to associate the VPC with a specified hosted zone that was created by a different account. To submit a CreateVPCAssociationAuthorization request, you must use the account that created the hosted zone. After you authorize the association, use the account that created the VPC to submit an AssociateVPCWithHostedZone request.

If you want to associate multiple VPCs that you created by using one account with a hosted zone that you created by using a different account, you must submit one authorization request for each VPC.

", + "DeactivateKeySigningKey": "

Deactivates a key signing key (KSK) so that it will not be used for signing by DNSSEC. This operation changes the KSK status to INACTIVE.

", "DeleteHealthCheck": "

Deletes a health check.

Amazon Route 53 does not prevent you from deleting a health check even if the health check is associated with one or more resource record sets. If you delete a health check and you don't update the associated resource record sets, the future status of the health check can't be predicted and may change. This will affect the routing of DNS queries for your DNS failover configuration. For more information, see Replacing and Deleting Health Checks in the Amazon Route 53 Developer Guide.

If you're using AWS Cloud Map and you configured Cloud Map to create a Route 53 health check when you register an instance, you can't use the Route 53 DeleteHealthCheck command to delete the health check. The health check is deleted automatically when you deregister the instance; there can be a delay of several hours before the health check is deleted from Route 53.

", "DeleteHostedZone": "

Deletes a hosted zone.

If the hosted zone was created by another service, such as AWS Cloud Map, see Deleting Public Hosted Zones That Were Created by Another Service in the Amazon Route 53 Developer Guide for information about how to delete it. (The process is the same for public and private hosted zones that were created by another service.)

If you want to keep your domain registration but you want to stop routing internet traffic to your website or web application, we recommend that you delete resource record sets in the hosted zone instead of deleting the hosted zone.

If you delete a hosted zone, you can't undelete it. You must create a new hosted zone and update the name servers for your domain registration, which can require up to 48 hours to take effect. (If you delegated responsibility for a subdomain to a hosted zone and you delete the child hosted zone, you must update the name servers in the parent hosted zone.) In addition, if you delete a hosted zone, someone could hijack the domain and route traffic to their own resources using your domain name.

If you want to avoid the monthly charge for the hosted zone, you can transfer DNS service for the domain to a free DNS service. When you transfer DNS service, you have to update the name servers for the domain registration. If the domain is registered with Route 53, see UpdateDomainNameservers for information about how to replace Route 53 name servers with name servers for the new DNS service. If the domain is registered with another registrar, use the method provided by the registrar to update name servers for the domain registration. For more information, perform an internet search on \"free DNS service.\"

You can delete a hosted zone only if it contains only the default SOA record and NS resource record sets. If the hosted zone contains other resource record sets, you must delete them before you can delete the hosted zone. If you try to delete a hosted zone that contains other resource record sets, the request fails, and Route 53 returns a HostedZoneNotEmpty error. For information about deleting records from your hosted zone, see ChangeResourceRecordSets.

To verify that the hosted zone has been deleted, do one of the following:

", + "DeleteKeySigningKey": "

Deletes a key signing key (KSK). Before you can delete a KSK, you must deactivate it. The KSK must be deactived before you can delete it regardless of whether the hosted zone is enabled for DNSSEC signing.

", "DeleteQueryLoggingConfig": "

Deletes a configuration for DNS query logging. If you delete a configuration, Amazon Route 53 stops sending query logs to CloudWatch Logs. Route 53 doesn't delete any logs that are already in CloudWatch Logs.

For more information about DNS query logs, see CreateQueryLoggingConfig.

", "DeleteReusableDelegationSet": "

Deletes a reusable delegation set.

You can delete a reusable delegation set only if it isn't associated with any hosted zones.

To verify that the reusable delegation set is not associated with any hosted zones, submit a GetReusableDelegationSet request and specify the ID of the reusable delegation set that you want to delete.

", "DeleteTrafficPolicy": "

Deletes a traffic policy.

When you delete a traffic policy, Route 53 sets a flag on the policy to indicate that it has been deleted. However, Route 53 never fully deletes the traffic policy. Note the following:

", "DeleteTrafficPolicyInstance": "

Deletes a traffic policy instance and all of the resource record sets that Amazon Route 53 created when you created the instance.

In the Route 53 console, traffic policy instances are known as policy records.

", "DeleteVPCAssociationAuthorization": "

Removes authorization to submit an AssociateVPCWithHostedZone request to associate a specified VPC with a hosted zone that was created by a different account. You must use the account that created the hosted zone to submit a DeleteVPCAssociationAuthorization request.

Sending this request only prevents the AWS account that created the VPC from associating the VPC with the Amazon Route 53 hosted zone in the future. If the VPC is already associated with the hosted zone, DeleteVPCAssociationAuthorization won't disassociate the VPC from the hosted zone. If you want to delete an existing association, use DisassociateVPCFromHostedZone.

", + "DisableHostedZoneDNSSEC": "

Disables DNSSEC signing in a specific hosted zone. This action does not deactivate any key signing keys (KSKs) that are active in the hosted zone.

", "DisassociateVPCFromHostedZone": "

Disassociates an Amazon Virtual Private Cloud (Amazon VPC) from an Amazon Route 53 private hosted zone. Note the following:

", + "EnableHostedZoneDNSSEC": "

Enables DNSSEC signing in a specific hosted zone.

", "GetAccountLimit": "

Gets the specified limit for the current account, for example, the maximum number of health checks that you can create using the account.

For the default limit, see Limits in the Amazon Route 53 Developer Guide. To request a higher limit, open a case.

You can also view account limits in AWS Trusted Advisor. Sign in to the AWS Management Console and open the Trusted Advisor console at https://console.aws.amazon.com/trustedadvisor/. Then choose Service limits in the navigation pane.

", "GetChange": "

Returns the current status of a change batch request. The status is one of the following values:

", "GetCheckerIpRanges": "

GetCheckerIpRanges still works, but we recommend that you download ip-ranges.json, which includes IP address ranges for all AWS services. For more information, see IP Address Ranges of Amazon Route 53 Servers in the Amazon Route 53 Developer Guide.

", + "GetDNSSEC": "

Returns information about DNSSEC for a specific hosted zone, including the key signing keys (KSKs) and zone signing keys (ZSKs) in the hosted zone.

", "GetGeoLocation": "

Gets information about whether a specified geographic location is supported for Amazon Route 53 geolocation resource record sets.

Use the following syntax to determine whether a continent is supported for geolocation:

GET /2013-04-01/geolocation?continentcode=two-letter abbreviation for a continent

Use the following syntax to determine whether a country is supported for geolocation:

GET /2013-04-01/geolocation?countrycode=two-character country code

Use the following syntax to determine whether a subdivision of a country is supported for geolocation:

GET /2013-04-01/geolocation?countrycode=two-character country code&subdivisioncode=subdivision code

", "GetHealthCheck": "

Gets information about a specified health check.

", "GetHealthCheckCount": "

Retrieves the number of health checks that are associated with the current AWS account.

", @@ -80,6 +87,16 @@ "GetAccountLimitRequest$Type": "

The limit that you want to get. Valid values include the following:

" } }, + "ActivateKeySigningKeyRequest": { + "base": null, + "refs": { + } + }, + "ActivateKeySigningKeyResponse": { + "base": null, + "refs": { + } + }, "AlarmIdentifier": { "base": "

A complex type that identifies the CloudWatch alarm that you want Amazon Route 53 health checkers to use to determine whether the specified health check is healthy.

", "refs": { @@ -142,11 +159,17 @@ "ChangeInfo": { "base": "

A complex type that describes change information about changes made to your hosted zone.

", "refs": { + "ActivateKeySigningKeyResponse$ChangeInfo": null, "AssociateVPCWithHostedZoneResponse$ChangeInfo": "

A complex type that describes the changes made to your hosted zone.

", "ChangeResourceRecordSetsResponse$ChangeInfo": "

A complex type that contains information about changes made to your hosted zone.

This element contains an ID that you use when performing a GetChange action to get detailed information about the change.

", "CreateHostedZoneResponse$ChangeInfo": "

A complex type that contains information about the CreateHostedZone request.

", + "CreateKeySigningKeyResponse$ChangeInfo": null, + "DeactivateKeySigningKeyResponse$ChangeInfo": null, "DeleteHostedZoneResponse$ChangeInfo": "

A complex type that contains the ID, the status, and the date and time of a request to delete a hosted zone.

", + "DeleteKeySigningKeyResponse$ChangeInfo": null, + "DisableHostedZoneDNSSECResponse$ChangeInfo": null, "DisassociateVPCFromHostedZoneResponse$ChangeInfo": "

A complex type that describes the changes made to the specified private hosted zone.

", + "EnableHostedZoneDNSSECResponse$ChangeInfo": null, "GetChangeResponse$ChangeInfo": "

A complex type that contains information about the specified change batch.

" } }, @@ -255,6 +278,16 @@ "refs": { } }, + "CreateKeySigningKeyRequest": { + "base": null, + "refs": { + } + }, + "CreateKeySigningKeyResponse": { + "base": null, + "refs": { + } + }, "CreateQueryLoggingConfigRequest": { "base": null, "refs": { @@ -347,6 +380,27 @@ "TestDNSAnswerResponse$ResponseCode": "

A code that indicates whether the request is valid or not. The most common response code is NOERROR, meaning that the request is valid. If the response is not valid, Amazon Route 53 returns a response code that describes the error. For a list of possible response codes, see DNS RCODES on the IANA website.

" } }, + "DNSSECNotFound": { + "base": "

The hosted zone doesn't have any DNSSEC resources.

", + "refs": { + } + }, + "DNSSECStatus": { + "base": "

A string repesenting the status of DNSSEC signing.

", + "refs": { + "GetDNSSECResponse$Status": "

A string repesenting the status of DNSSEC.

" + } + }, + "DeactivateKeySigningKeyRequest": { + "base": null, + "refs": { + } + }, + "DeactivateKeySigningKeyResponse": { + "base": null, + "refs": { + } + }, "DelegationSet": { "base": "

A complex type that lists the name servers in a delegation set, as well as the CallerReference and the ID for the delegation set.

", "refs": { @@ -414,6 +468,16 @@ "refs": { } }, + "DeleteKeySigningKeyRequest": { + "base": null, + "refs": { + } + }, + "DeleteKeySigningKeyResponse": { + "base": null, + "refs": { + } + }, "DeleteQueryLoggingConfigRequest": { "base": null, "refs": { @@ -483,6 +547,16 @@ "CloudWatchAlarmConfiguration$Dimensions": "

For the metric that the CloudWatch alarm is associated with, a complex type that contains information about the dimensions for the metric. For information, see Amazon CloudWatch Namespaces, Dimensions, and Metrics Reference in the Amazon CloudWatch User Guide.

" } }, + "DisableHostedZoneDNSSECRequest": { + "base": null, + "refs": { + } + }, + "DisableHostedZoneDNSSECResponse": { + "base": null, + "refs": { + } + }, "Disabled": { "base": null, "refs": { @@ -506,6 +580,16 @@ "refs": { } }, + "EnableHostedZoneDNSSECRequest": { + "base": null, + "refs": { + } + }, + "EnableHostedZoneDNSSECResponse": { + "base": null, + "refs": { + } + }, "EnableSNI": { "base": null, "refs": { @@ -516,64 +600,76 @@ "ErrorMessage": { "base": null, "refs": { - "ConcurrentModification$message": "

Descriptive message for the error response.

", + "ConcurrentModification$message": "

", "ConflictingDomainExists$message": null, - "ConflictingTypes$message": "

Descriptive message for the error response.

", - "DelegationSetAlreadyCreated$message": "

Descriptive message for the error response.

", - "DelegationSetAlreadyReusable$message": "

Descriptive message for the error response.

", - "DelegationSetInUse$message": "

Descriptive message for the error response.

", - "DelegationSetNotAvailable$message": "

Descriptive message for the error response.

", - "DelegationSetNotReusable$message": "

Descriptive message for the error response.

", + "ConflictingTypes$message": "

", + "DNSSECNotFound$message": null, + "DelegationSetAlreadyCreated$message": "

", + "DelegationSetAlreadyReusable$message": "

", + "DelegationSetInUse$message": "

", + "DelegationSetNotAvailable$message": "

", + "DelegationSetNotReusable$message": "

", "ErrorMessages$member": null, - "HealthCheckAlreadyExists$message": "

Descriptive message for the error response.

", - "HealthCheckInUse$message": "

Descriptive message for the error response.

", + "HealthCheckAlreadyExists$message": "

", + "HealthCheckInUse$message": "

", "HealthCheckVersionMismatch$message": null, - "HostedZoneAlreadyExists$message": "

Descriptive message for the error response.

", - "HostedZoneNotEmpty$message": "

Descriptive message for the error response.

", - "HostedZoneNotFound$message": "

Descriptive message for the error response.

", - "HostedZoneNotPrivate$message": "

Descriptive message for the error response.

", + "HostedZoneAlreadyExists$message": "

", + "HostedZoneNotEmpty$message": "

", + "HostedZoneNotFound$message": "

", + "HostedZoneNotPrivate$message": "

", + "HostedZonePartiallyDelegated$message": null, "IncompatibleVersion$message": null, "InsufficientCloudWatchLogsResourcePolicy$message": null, - "InvalidArgument$message": "

Descriptive message for the error response.

", + "InvalidArgument$message": "

", "InvalidChangeBatch$message": null, - "InvalidDomainName$message": "

Descriptive message for the error response.

", - "InvalidInput$message": "

Descriptive message for the error response.

", + "InvalidDomainName$message": "

", + "InvalidInput$message": "

", + "InvalidKMSArn$message": null, + "InvalidKeySigningKeyName$message": null, + "InvalidKeySigningKeyStatus$message": null, "InvalidPaginationToken$message": null, - "InvalidTrafficPolicyDocument$message": "

Descriptive message for the error response.

", - "InvalidVPCId$message": "

Descriptive message for the error response.

", - "LastVPCAssociation$message": "

Descriptive message for the error response.

", - "LimitsExceeded$message": "

Descriptive message for the error response.

", + "InvalidSigningStatus$message": null, + "InvalidTrafficPolicyDocument$message": "

", + "InvalidVPCId$message": "

", + "KeySigningKeyAlreadyExists$message": null, + "KeySigningKeyInParentDSRecord$message": null, + "KeySigningKeyInUse$message": null, + "KeySigningKeyWithActiveStatusNotFound$message": null, + "LastVPCAssociation$message": "

", + "LimitsExceeded$message": "

", "NoSuchChange$message": null, "NoSuchCloudWatchLogsLogGroup$message": null, - "NoSuchDelegationSet$message": "

Descriptive message for the error response.

", - "NoSuchGeoLocation$message": "

Descriptive message for the error response.

", - "NoSuchHealthCheck$message": "

Descriptive message for the error response.

", - "NoSuchHostedZone$message": "

Descriptive message for the error response.

", + "NoSuchDelegationSet$message": "

", + "NoSuchGeoLocation$message": "

", + "NoSuchHealthCheck$message": "

", + "NoSuchHostedZone$message": "

", + "NoSuchKeySigningKey$message": null, "NoSuchQueryLoggingConfig$message": null, - "NoSuchTrafficPolicy$message": "

Descriptive message for the error response.

", - "NoSuchTrafficPolicyInstance$message": "

Descriptive message for the error response.

", - "NotAuthorizedException$message": "

Descriptive message for the error response.

", + "NoSuchTrafficPolicy$message": "

", + "NoSuchTrafficPolicyInstance$message": "

", + "NotAuthorizedException$message": "

", "PriorRequestNotComplete$message": null, - "PublicZoneVPCAssociation$message": "

Descriptive message for the error response.

", + "PublicZoneVPCAssociation$message": "

", "QueryLoggingConfigAlreadyExists$message": null, "ThrottlingException$message": null, "TooManyHealthChecks$message": null, - "TooManyHostedZones$message": "

Descriptive message for the error response.

", - "TooManyTrafficPolicies$message": "

Descriptive message for the error response.

", - "TooManyTrafficPolicyInstances$message": "

Descriptive message for the error response.

", - "TooManyTrafficPolicyVersionsForCurrentPolicy$message": "

Descriptive message for the error response.

", - "TooManyVPCAssociationAuthorizations$message": "

Descriptive message for the error response.

", - "TrafficPolicyAlreadyExists$message": "

Descriptive message for the error response.

", - "TrafficPolicyInUse$message": "

Descriptive message for the error response.

", - "TrafficPolicyInstanceAlreadyExists$message": "

Descriptive message for the error response.

", - "VPCAssociationAuthorizationNotFound$message": "

Descriptive message for the error response.

", - "VPCAssociationNotFound$message": "

Descriptive message for the error response.

" + "TooManyHostedZones$message": "

", + "TooManyKeySigningKeys$message": null, + "TooManyTrafficPolicies$message": "

", + "TooManyTrafficPolicyInstances$message": "

", + "TooManyTrafficPolicyVersionsForCurrentPolicy$message": "

", + "TooManyVPCAssociationAuthorizations$message": "

", + "TrafficPolicyAlreadyExists$message": "

", + "TrafficPolicyInUse$message": "

", + "TrafficPolicyInstanceAlreadyExists$message": "

", + "VPCAssociationAuthorizationNotFound$message": "

", + "VPCAssociationNotFound$message": "

The specified VPC or hosted zone weren't found.

" } }, "ErrorMessages": { "base": null, "refs": { - "InvalidChangeBatch$messages": "

Descriptive message for the error response.

" + "InvalidChangeBatch$messages": "

" } }, "EvaluationPeriods": { @@ -693,6 +789,16 @@ "refs": { } }, + "GetDNSSECRequest": { + "base": null, + "refs": { + } + }, + "GetDNSSECResponse": { + "base": null, + "refs": { + } + }, "GetGeoLocationRequest": { "base": "

A request for information about whether a specified geographic location is supported for Amazon Route 53 geolocation resource record sets.

", "refs": { @@ -1010,6 +1116,11 @@ "HostedZoneOwner$OwningService": "

If an AWS service uses its own account to create a hosted zone and associate the specified VPC with that hosted zone, OwningService contains an abbreviation that identifies the service. For example, if Amazon Elastic File System (Amazon EFS) created a hosted zone and associated a VPC with the hosted zone, the value of OwningService is efs.amazonaws.com.

" } }, + "HostedZonePartiallyDelegated": { + "base": "

The hosted zone nameservers don't match the parent nameservers. The hosted zone and parent must have the same nameservers.

", + "refs": { + } + }, "HostedZoneRRSetCount": { "base": null, "refs": { @@ -1069,7 +1180,7 @@ } }, "InvalidArgument": { - "base": "

Parameter name is invalid.

", + "base": "

Parameter name is not valid.

", "refs": { } }, @@ -1088,13 +1199,33 @@ "refs": { } }, + "InvalidKMSArn": { + "base": "

The KeyManagementServiceArn that you specified isn't valid to use with DNSSEC signing.

", + "refs": { + } + }, + "InvalidKeySigningKeyName": { + "base": "

The key signing key (KSK) name that you specified isn't a valid name.

", + "refs": { + } + }, + "InvalidKeySigningKeyStatus": { + "base": "

The key signing key (KSK) status isn't valid or another KSK has the status INTERNAL_FAILURE.

", + "refs": { + } + }, "InvalidPaginationToken": { "base": "

The value that you specified to get the second or subsequent page of results is invalid.

", "refs": { } }, + "InvalidSigningStatus": { + "base": "

Your hosted zone status isn't valid for this operation. In the hosted zone, change the status to enable DNSSEC or disable DNSSEC.

", + "refs": { + } + }, "InvalidTrafficPolicyDocument": { - "base": "

The format of the traffic policy document that you specified in the Document element is invalid.

", + "base": "

The format of the traffic policy document that you specified in the Document element is not valid.

", "refs": { } }, @@ -1116,6 +1247,39 @@ "HostedZoneConfig$PrivateZone": "

A value that indicates whether this is a private hosted zone.

" } }, + "KeySigningKey": { + "base": "

A key signing key (KSK) is a complex type that represents a public/private key pair. The private key is used to generate a digital signature for the zone signing key (ZSK). The public key is stored in the DNS and is used to authenticate the ZSK. A KSK is always associated with a hosted zone; it cannot exist by itself.

", + "refs": { + "CreateKeySigningKeyResponse$KeySigningKey": "

The key signing key (KSK) that the request creates.

", + "KeySigningKeys$member": null + } + }, + "KeySigningKeyAlreadyExists": { + "base": "

You've already created a key signing key (KSK) with this name or with the same customer managed key (CMK) ARN.

", + "refs": { + } + }, + "KeySigningKeyInParentDSRecord": { + "base": "

The key signing key (KSK) is specified in a parent DS record.

", + "refs": { + } + }, + "KeySigningKeyInUse": { + "base": "

The key signing key (KSK) that you specified can't be deactivated because it's the only KSK for a currently-enabled DNSSEC. Disable DNSSEC signing, or add or enable another KSK.

", + "refs": { + } + }, + "KeySigningKeyWithActiveStatusNotFound": { + "base": "

A key signing key (KSK) with ACTIVE status wasn't found.

", + "refs": { + } + }, + "KeySigningKeys": { + "base": null, + "refs": { + "GetDNSSECResponse$KeySigningKeys": "

The key signing keys (KSKs) in your account.

" + } + }, "LastVPCAssociation": { "base": "

The VPC that you're trying to disassociate from the private hosted zone is the last VPC that is associated with the hosted zone. Amazon Route 53 doesn't support disassociating the last VPC from a hosted zone.

", "refs": { @@ -1368,6 +1532,11 @@ "refs": { } }, + "NoSuchKeySigningKey": { + "base": "

The specified key signing key (KSK) doesn't exist.

", + "refs": { + } + }, "NoSuchQueryLoggingConfig": { "base": "

There is no DNS query logging configuration with the specified ID.

", "refs": { @@ -1387,6 +1556,7 @@ "base": null, "refs": { "CreateHostedZoneRequest$CallerReference": "

A unique string that identifies the request and that allows failed CreateHostedZone requests to be retried without the risk of executing the operation twice. You must use a unique CallerReference string every time you submit a CreateHostedZone request. CallerReference can be any unique string, for example, a date/time stamp.

", + "CreateKeySigningKeyRequest$CallerReference": "

A unique string that identifies the request.

", "CreateReusableDelegationSetRequest$CallerReference": "

A unique string that identifies the request, and that allows you to retry failed CreateReusableDelegationSet requests without the risk of executing the operation twice. You must use a unique CallerReference string every time you submit a CreateReusableDelegationSet request. CallerReference can be any unique string, for example a date/time stamp.

", "DelegationSet$CallerReference": "

The value that you specified for CallerReference when you created the reusable delegation set.

", "HostedZone$CallerReference": "

The value that you specified for CallerReference when you created the hosted zone.

" @@ -1585,22 +1755,29 @@ "ResourceId": { "base": null, "refs": { + "ActivateKeySigningKeyRequest$HostedZoneId": "

A unique string used to identify a hosted zone.

", "AliasTarget$HostedZoneId": "

Alias resource records sets only: The value used depends on where you want to route traffic:

Amazon API Gateway custom regional APIs and edge-optimized APIs

Specify the hosted zone ID for your API. You can get the applicable value using the AWS CLI command get-domain-names:

  • For regional APIs, specify the value of regionalHostedZoneId.

  • For edge-optimized APIs, specify the value of distributionHostedZoneId.

Amazon Virtual Private Cloud interface VPC endpoint

Specify the hosted zone ID for your interface endpoint. You can get the value of HostedZoneId using the AWS CLI command describe-vpc-endpoints.

CloudFront distribution

Specify Z2FDTNDATAQYW2.

Alias resource record sets for CloudFront can't be created in a private zone.

Elastic Beanstalk environment

Specify the hosted zone ID for the region that you created the environment in. The environment must have a regionalized subdomain. For a list of regions and the corresponding hosted zone IDs, see AWS Elastic Beanstalk in the \"AWS Service Endpoints\" chapter of the Amazon Web Services General Reference.

ELB load balancer

Specify the value of the hosted zone ID for the load balancer. Use the following methods to get the hosted zone ID:

  • Service Endpoints table in the \"Elastic Load Balancing Endpoints and Quotas\" topic in the Amazon Web Services General Reference: Use the value that corresponds with the region that you created your load balancer in. Note that there are separate columns for Application and Classic Load Balancers and for Network Load Balancers.

  • AWS Management Console: Go to the Amazon EC2 page, choose Load Balancers in the navigation pane, select the load balancer, and get the value of the Hosted zone field on the Description tab.

  • Elastic Load Balancing API: Use DescribeLoadBalancers to get the applicable value. For more information, see the applicable guide:

  • AWS CLI: Use describe-load-balancers to get the applicable value. For more information, see the applicable guide:

AWS Global Accelerator accelerator

Specify Z2BJ6XQ5FK7U4H.

An Amazon S3 bucket configured as a static website

Specify the hosted zone ID for the region that you created the bucket in. For more information about valid values, see the table Amazon S3 Website Endpoints in the Amazon Web Services General Reference.

Another Route 53 resource record set in your hosted zone

Specify the hosted zone ID of your hosted zone. (An alias resource record set can't reference a resource record set in a different hosted zone.)

", "AssociateVPCWithHostedZoneRequest$HostedZoneId": "

The ID of the private hosted zone that you want to associate an Amazon VPC with.

Note that you can't associate a VPC with a hosted zone that doesn't have an existing VPC association.

", "ChangeInfo$Id": "

The ID of the request.

", "ChangeResourceRecordSetsRequest$HostedZoneId": "

The ID of the hosted zone that contains the resource record sets that you want to change.

", "CreateHostedZoneRequest$DelegationSetId": "

If you want to associate a reusable delegation set with this hosted zone, the ID that Amazon Route 53 assigned to the reusable delegation set when you created it. For more information about reusable delegation sets, see CreateReusableDelegationSet.

", + "CreateKeySigningKeyRequest$HostedZoneId": "

The unique string (ID) used to identify a hosted zone.

", "CreateQueryLoggingConfigRequest$HostedZoneId": "

The ID of the hosted zone that you want to log queries for. You can log queries only for public hosted zones.

", "CreateReusableDelegationSetRequest$HostedZoneId": "

If you want to mark the delegation set for an existing hosted zone as reusable, the ID for that hosted zone.

", "CreateTrafficPolicyInstanceRequest$HostedZoneId": "

The ID of the hosted zone that you want Amazon Route 53 to create resource record sets in by using the configuration in a traffic policy.

", "CreateVPCAssociationAuthorizationRequest$HostedZoneId": "

The ID of the private hosted zone that you want to authorize associating a VPC with.

", "CreateVPCAssociationAuthorizationResponse$HostedZoneId": "

The ID of the hosted zone that you authorized associating a VPC with.

", + "DeactivateKeySigningKeyRequest$HostedZoneId": "

A unique string used to identify a hosted zone.

", "DelegationSet$Id": "

The ID that Amazon Route 53 assigns to a reusable delegation set.

", "DeleteHostedZoneRequest$Id": "

The ID of the hosted zone you want to delete.

", + "DeleteKeySigningKeyRequest$HostedZoneId": "

A unique string used to identify a hosted zone.

", "DeleteReusableDelegationSetRequest$Id": "

The ID of the reusable delegation set that you want to delete.

", "DeleteVPCAssociationAuthorizationRequest$HostedZoneId": "

When removing authorization to associate a VPC that was created by one AWS account with a hosted zone that was created with a different AWS account, the ID of the hosted zone.

", + "DisableHostedZoneDNSSECRequest$HostedZoneId": "

A unique string used to identify a hosted zone.

", "DisassociateVPCFromHostedZoneRequest$HostedZoneId": "

The ID of the private hosted zone that you want to disassociate a VPC from.

", + "EnableHostedZoneDNSSECRequest$HostedZoneId": "

A unique string used to identify a hosted zone.

", "GetChangeRequest$Id": "

The ID of the change batch request. The value that you specify here is the value that ChangeResourceRecordSets returned in the Id element when you submitted the request.

", + "GetDNSSECRequest$HostedZoneId": "

A unique string used to identify a hosted zone.

", "GetHostedZoneLimitRequest$HostedZoneId": "

The ID of the hosted zone that you want to get a limit for.

", "GetHostedZoneRequest$Id": "

The ID of the hosted zone that you want to get information about.

", "GetReusableDelegationSetLimitRequest$DelegationSetId": "

The ID of the delegation set that you want to get the limit for.

", @@ -1708,6 +1885,7 @@ "refs": { "CreateHealthCheckResponse$Location": "

The unique URL representing the new health check.

", "CreateHostedZoneResponse$Location": "

The unique URL representing the new hosted zone.

", + "CreateKeySigningKeyResponse$Location": "

The unique URL representing the new key signing key (KSK).

", "CreateQueryLoggingConfigResponse$Location": "

The unique URL representing the new query logging configuration.

", "CreateReusableDelegationSetResponse$Location": "

The unique URL representing the new reusable delegation set.

", "CreateTrafficPolicyInstanceResponse$Location": "

A unique URL that represents a new traffic policy instance.

", @@ -1735,12 +1913,69 @@ "UpdateHealthCheckRequest$SearchString": "

If the value of Type is HTTP_STR_MATCH or HTTPS_STR_MATCH, the string that you want Amazon Route 53 to search for in the response body from the specified resource. If the string appears in the response body, Route 53 considers the resource healthy. (You can't change the value of Type when you update a health check.)

" } }, + "ServeSignature": { + "base": null, + "refs": { + "DNSSECStatus$ServeSignature": "

Indicates your hosted zone signging status: SIGNING, NOT_SIGNING, or INTERNAL_FAILURE. If the status is INTERNAL_FAILURE, see StatusMessage for information about steps that you can take to correct the problem.

A status INTERNAL_FAILURE means there was an error during a request. Before you can continue to work with DNSSEC signing, including working with key signing keys (KSKs), you must correct the problem by enabling or disabling DNSSEC signing for the hosted zone.

" + } + }, "ServicePrincipal": { "base": null, "refs": { "LinkedService$ServicePrincipal": "

If the health check or hosted zone was created by another service, the service that created the resource. When a resource is created by another service, you can't edit or delete it using Amazon Route 53.

" } }, + "SigningKeyInteger": { + "base": null, + "refs": { + "KeySigningKey$Flag": "

An integer that specifies how the key is used. For key signing key (KSK), this value is always 257.

", + "KeySigningKey$SigningAlgorithmType": "

An integer used to represent the signing algorithm. This value must follow the guidelines provided by RFC-8624 Section 3.1.

", + "KeySigningKey$DigestAlgorithmType": "

An integer used to represent the delegation signer digest algorithm. This value must follow the guidelines provided by RFC-8624 Section 3.3.

" + } + }, + "SigningKeyName": { + "base": null, + "refs": { + "ActivateKeySigningKeyRequest$Name": "

An alphanumeric string used to identify a key signing key (KSK).

", + "CreateKeySigningKeyRequest$Name": "

An alphanumeric string used to identify a key signing key (KSK). Name must be unique for each key signing key in the same hosted zone.

", + "DeactivateKeySigningKeyRequest$Name": "

An alphanumeric string used to identify a key signing key (KSK).

", + "DeleteKeySigningKeyRequest$Name": "

An alphanumeric string used to identify a key signing key (KSK).

", + "KeySigningKey$Name": "

An alphanumeric string used to identify a key signing key (KSK). Name must be unique for each key signing key in the same hosted zone.

" + } + }, + "SigningKeyStatus": { + "base": null, + "refs": { + "CreateKeySigningKeyRequest$Status": "

A string specifying the initial status of the key signing key (KSK). You can set the value to ACTIVE or INACTIVE.

", + "KeySigningKey$Status": "

A string that represents the current key signing key (KSK) status.

Status can have one of the following values:

ACTIVE

The KSK is being used for signing.

INACTIVE

The KSK is not being used for signing.

ACTION_NEEDED

There is an error in the KSK that requires you to take action to resolve.

INTERNAL_FAILURE

There was an error during a request. Before you can continue to work with DNSSEC signing, including actions that involve this KSK, you must correct the problem. For example, you may need to activate or deactivate the KSK.

" + } + }, + "SigningKeyStatusMessage": { + "base": null, + "refs": { + "DNSSECStatus$StatusMessage": "

The status message provided for the following DNSSEC signing status: INTERNAL_FAILURE. The status message includes information about what the problem might be and steps that you can take to correct the issue.

", + "KeySigningKey$StatusMessage": "

The status message provided for the following key signing key (KSK) statuses: ACTION_NEEDED or INTERNAL_FAILURE. The status message includes information about what the problem might be and steps that you can take to correct the issue.

" + } + }, + "SigningKeyString": { + "base": null, + "refs": { + "CreateKeySigningKeyRequest$KeyManagementServiceArn": "

The Amazon resource name (ARN) for a customer managed key (CMK) in AWS Key Management Service (KMS). The KeyManagementServiceArn must be unique for each key signing key (KSK) in a single hosted zone. To see an example of KeyManagementServiceArn that grants the correct permissions for DNSSEC, scroll down to Example.

You must configure the CMK as follows:

Status

Enabled

Key spec

ECC_NIST_P256

Key usage

Sign and verify

Key policy

The key policy must give permission for the following actions:

  • DescribeKey

  • GetPublicKey

  • Sign

The key policy must also include the Amazon Route 53 service in the principal for your account. Specify the following:

  • \"Service\": \"api-service.dnssec.route53.aws.internal\"

For more information about working with CMK in KMS, see AWS Key Management Service concepts.

", + "KeySigningKey$KmsArn": "

The Amazon resource name (ARN) used to identify the customer managed key (CMK) in AWS Key Management Service (KMS). The KmsArn must be unique for each key signing key (KSK) in a single hosted zone.

You must configure the CMK as follows:

Status

Enabled

Key spec

ECC_NIST_P256

Key usage

Sign and verify

Key policy

The key policy must give permission for the following actions:

  • DescribeKey

  • GetPublicKey

  • Sign

The key policy must also include the Amazon Route 53 service in the principal for your account. Specify the following:

  • \"Service\": \"api-service.dnssec.route53.aws.internal\"

For more information about working with the customer managed key (CMK) in KMS, see AWS Key Management Service concepts.

", + "KeySigningKey$SigningAlgorithmMnemonic": "

A string used to represent the signing algorithm. This value must follow the guidelines provided by RFC-8624 Section 3.1.

", + "KeySigningKey$DigestAlgorithmMnemonic": "

A string used to represent the delegation signer digest algorithm. This value must follow the guidelines provided by RFC-8624 Section 3.3.

", + "KeySigningKey$DigestValue": "

A cryptographic digest of a DNSKEY resource record (RR). DNSKEY records are used to publish the public key that resolvers can use to verify DNSSEC signatures that are used to secure certain kinds of information provided by the DNS system.

", + "KeySigningKey$PublicKey": "

The public key, represented as a Base64 encoding, as required by RFC-4034 Page 5.

", + "KeySigningKey$DSRecord": "

A string that represents a delegation signer (DS) record.

", + "KeySigningKey$DNSKEYRecord": "

A string that represents a DNSKEY record.

" + } + }, + "SigningKeyTag": { + "base": null, + "refs": { + "KeySigningKey$KeyTag": "

An integer used to identify the DNSSEC record for the domain name. The process used to calculate the value is described in RFC-4034 Appendix B.

" + } + }, "Statistic": { "base": null, "refs": { @@ -1855,6 +2090,8 @@ "base": null, "refs": { "ChangeInfo$SubmittedAt": "

The date and time that the change request was submitted in ISO 8601 format and Coordinated Universal Time (UTC). For example, the value 2017-03-27T17:48:16.751Z represents March 27, 2017 at 17:48:16.751 UTC.

", + "KeySigningKey$CreatedDate": "

The date when the key signing key (KSK) was created.

", + "KeySigningKey$LastModifiedDate": "

The last time that the key signing key (KSK) was changed.

", "StatusReport$CheckedTime": "

The date and time that the health checker performed the health check in ISO 8601 format and Coordinated Universal Time (UTC). For example, the value 2017-03-27T17:48:16.751Z represents March 27, 2017 at 17:48:16.751 UTC.

" } }, @@ -1868,6 +2105,11 @@ "refs": { } }, + "TooManyKeySigningKeys": { + "base": "

You've reached the limit for the number of key signing keys (KSKs). Remove at least one KSK, and then try again.

", + "refs": { + } + }, "TooManyTrafficPolicies": { "base": "

This traffic policy can't be created because the current account has reached the limit on the number of traffic policies.

For information about default limits, see Limits in the Amazon Route 53 Developer Guide.

To get the current limit for an account, see GetAccountLimit.

To request a higher limit, create a case with the AWS Support Center.

", "refs": { diff --git a/models/apis/route53resolver/2018-04-01/api-2.json b/models/apis/route53resolver/2018-04-01/api-2.json index d4b360e4da..c374924c0c 100644 --- a/models/apis/route53resolver/2018-04-01/api-2.json +++ b/models/apis/route53resolver/2018-04-01/api-2.json @@ -223,6 +223,23 @@ {"shape":"ThrottlingException"} ] }, + "GetResolverDnssecConfig":{ + "name":"GetResolverDnssecConfig", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetResolverDnssecConfigRequest"}, + "output":{"shape":"GetResolverDnssecConfigResponse"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"} + ] + }, "GetResolverEndpoint":{ "name":"GetResolverEndpoint", "http":{ @@ -332,6 +349,23 @@ {"shape":"InternalServiceErrorException"} ] }, + "ListResolverDnssecConfigs":{ + "name":"ListResolverDnssecConfigs", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListResolverDnssecConfigsRequest"}, + "output":{"shape":"ListResolverDnssecConfigsResponse"}, + "errors":[ + {"shape":"InvalidNextTokenException"}, + {"shape":"InvalidParameterException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"} + ] + }, "ListResolverEndpointIpAddresses":{ "name":"ListResolverEndpointIpAddresses", "http":{ @@ -513,6 +547,23 @@ {"shape":"ThrottlingException"} ] }, + "UpdateResolverDnssecConfig":{ + "name":"UpdateResolverDnssecConfig", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateResolverDnssecConfigRequest"}, + "output":{"shape":"UpdateResolverDnssecConfigResponse"}, + "errors":[ + {"shape":"InvalidParameterException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidRequestException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ThrottlingException"}, + {"shape":"AccessDeniedException"} + ] + }, "UpdateResolverEndpoint":{ "name":"UpdateResolverEndpoint", "http":{ @@ -838,6 +889,19 @@ "type":"list", "member":{"shape":"Filter"} }, + "GetResolverDnssecConfigRequest":{ + "type":"structure", + "required":["ResourceId"], + "members":{ + "ResourceId":{"shape":"ResourceId"} + } + }, + "GetResolverDnssecConfigResponse":{ + "type":"structure", + "members":{ + "ResolverDNSSECConfig":{"shape":"ResolverDnssecConfig"} + } + }, "GetResolverEndpointRequest":{ "type":"structure", "required":["ResolverEndpointId"], @@ -1052,6 +1116,30 @@ }, "exception":true }, + "ListResolverDnssecConfigsRequest":{ + "type":"structure", + "members":{ + "MaxResults":{ + "shape":"MaxResults", + "box":true + }, + "NextToken":{ + "shape":"NextToken", + "box":true + }, + "Filters":{ + "shape":"Filters", + "box":true + } + } + }, + "ListResolverDnssecConfigsResponse":{ + "type":"structure", + "members":{ + "NextToken":{"shape":"NextToken"}, + "ResolverDnssecConfigs":{"shape":"ResolverDnssecConfigList"} + } + }, "ListResolverEndpointIpAddressesRequest":{ "type":"structure", "required":["ResolverEndpointId"], @@ -1269,6 +1357,28 @@ "ReturnValue":{"shape":"Boolean"} } }, + "ResolverDNSSECValidationStatus":{ + "type":"string", + "enum":[ + "ENABLING", + "ENABLED", + "DISABLING", + "DISABLED" + ] + }, + "ResolverDnssecConfig":{ + "type":"structure", + "members":{ + "Id":{"shape":"ResourceId"}, + "OwnerId":{"shape":"AccountId"}, + "ResourceId":{"shape":"ResourceId"}, + "ValidationStatus":{"shape":"ResolverDNSSECValidationStatus"} + } + }, + "ResolverDnssecConfigList":{ + "type":"list", + "member":{"shape":"ResolverDnssecConfig"} + }, "ResolverEndpoint":{ "type":"structure", "members":{ @@ -1628,6 +1738,23 @@ "members":{ } }, + "UpdateResolverDnssecConfigRequest":{ + "type":"structure", + "required":[ + "ResourceId", + "Validation" + ], + "members":{ + "ResourceId":{"shape":"ResourceId"}, + "Validation":{"shape":"Validation"} + } + }, + "UpdateResolverDnssecConfigResponse":{ + "type":"structure", + "members":{ + "ResolverDNSSECConfig":{"shape":"ResolverDnssecConfig"} + } + }, "UpdateResolverEndpointRequest":{ "type":"structure", "required":["ResolverEndpointId"], @@ -1661,6 +1788,13 @@ "members":{ "ResolverRule":{"shape":"ResolverRule"} } + }, + "Validation":{ + "type":"string", + "enum":[ + "ENABLE", + "DISABLE" + ] } } } diff --git a/models/apis/route53resolver/2018-04-01/docs-2.json b/models/apis/route53resolver/2018-04-01/docs-2.json index a9ae43bb32..d13d75cc2d 100644 --- a/models/apis/route53resolver/2018-04-01/docs-2.json +++ b/models/apis/route53resolver/2018-04-01/docs-2.json @@ -14,13 +14,15 @@ "DisassociateResolverEndpointIpAddress": "

Removes IP addresses from an inbound or an outbound Resolver endpoint. If you want to remove more than one IP address, submit one DisassociateResolverEndpointIpAddress request for each IP address.

To add an IP address to an endpoint, see AssociateResolverEndpointIpAddress.

", "DisassociateResolverQueryLogConfig": "

Disassociates a VPC from a query logging configuration.

Before you can delete a query logging configuration, you must first disassociate all VPCs from the configuration. If you used Resource Access Manager (RAM) to share a query logging configuration with other accounts, VPCs can be disassociated from the configuration in the following ways:

  • The accounts that you shared the configuration with can disassociate VPCs from the configuration.

  • You can stop sharing the configuration.

", "DisassociateResolverRule": "

Removes the association between a specified Resolver rule and a specified VPC.

If you disassociate a Resolver rule from a VPC, Resolver stops forwarding DNS queries for the domain name that you specified in the Resolver rule.

", + "GetResolverDnssecConfig": "

Gets DNSSEC validation information for a specified resource.

", "GetResolverEndpoint": "

Gets information about a specified Resolver endpoint, such as whether it's an inbound or an outbound Resolver endpoint, and the current status of the endpoint.

", "GetResolverQueryLogConfig": "

Gets information about a specified Resolver query logging configuration, such as the number of VPCs that the configuration is logging queries for and the location that logs are sent to.

", "GetResolverQueryLogConfigAssociation": "

Gets information about a specified association between a Resolver query logging configuration and an Amazon VPC. When you associate a VPC with a query logging configuration, Resolver logs DNS queries that originate in that VPC.

", "GetResolverQueryLogConfigPolicy": "

Gets information about a query logging policy. A query logging policy specifies the Resolver query logging operations and resources that you want to allow another AWS account to be able to use.

", "GetResolverRule": "

Gets information about a specified Resolver rule, such as the domain name that the rule forwards DNS queries for and the ID of the outbound Resolver endpoint that the rule is associated with.

", "GetResolverRuleAssociation": "

Gets information about an association between a specified Resolver rule and a VPC. You associate a Resolver rule and a VPC using AssociateResolverRule.

", - "GetResolverRulePolicy": "

Gets information about a Resolver rule policy. A Resolver rule policy specifies the Resolver operations and resources that you want to allow another AWS account to be able to use.

", + "GetResolverRulePolicy": "

Gets information about the Resolver rule policy for a specified rule. A Resolver rule policy includes the rule that you want to share with another account, the account that you want to share the rule with, and the Resolver operations that you want to allow the account to use.

", + "ListResolverDnssecConfigs": "

Lists the configurations for DNSSEC validation that are associated with the current AWS account.

", "ListResolverEndpointIpAddresses": "

Gets the IP addresses for a specified Resolver endpoint.

", "ListResolverEndpoints": "

Lists all the Resolver endpoints that were created using the current AWS account.

", "ListResolverQueryLogConfigAssociations": "

Lists information about associations between Amazon VPCs and query logging configurations.

", @@ -29,9 +31,10 @@ "ListResolverRules": "

Lists the Resolver rules that were created using the current AWS account.

", "ListTagsForResource": "

Lists the tags that you associated with the specified resource.

", "PutResolverQueryLogConfigPolicy": "

Specifies an AWS account that you want to share a query logging configuration with, the query logging configuration that you want to share, and the operations that you want the account to be able to perform on the configuration.

", - "PutResolverRulePolicy": "

Specifies an AWS account that you want to share rules with, the Resolver rules that you want to share, and the operations that you want the account to be able to perform on those rules.

", + "PutResolverRulePolicy": "

Specifies an AWS rule that you want to share with another account, the account that you want to share the rule with, and the operations that you want the account to be able to perform on the rule.

", "TagResource": "

Adds one or more tags to a specified resource.

", "UntagResource": "

Removes one or more tags from a specified resource.

", + "UpdateResolverDnssecConfig": "

Updates an existing DNSSEC validation configuration. If there is no existing DNSSEC validation configuration, one is created.

", "UpdateResolverEndpoint": "

Updates the name of an inbound or an outbound Resolver endpoint.

", "UpdateResolverRule": "

Updates settings for a specified Resolver rule. ResolverRuleId is required, and all other parameters are optional. If you don't specify a parameter, it retains its current value.

" }, @@ -44,6 +47,7 @@ "AccountId": { "base": null, "refs": { + "ResolverDnssecConfig$OwnerId": "

The owner account ID of the virtual private cloud (VPC) for a configuration for DNSSEC validation.

", "ResolverQueryLogConfig$OwnerId": "

The AWS account ID for the account that created the query logging configuration.

", "ResolverRule$OwnerId": "

When a rule is shared with another AWS account, the account ID of the account that the rule is shared with.

" } @@ -52,10 +56,10 @@ "base": null, "refs": { "GetResolverQueryLogConfigPolicyRequest$Arn": "

The ARN of the query logging configuration that you want to get the query logging policy for.

", - "GetResolverRulePolicyRequest$Arn": "

The ID of the Resolver rule policy that you want to get information about.

", + "GetResolverRulePolicyRequest$Arn": "

The ID of the Resolver rule that you want to get the Resolver rule policy for.

", "ListTagsForResourceRequest$ResourceArn": "

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

", "PutResolverQueryLogConfigPolicyRequest$Arn": "

The Amazon Resource Name (ARN) of the account that you want to share rules with.

", - "PutResolverRulePolicyRequest$Arn": "

The Amazon Resource Name (ARN) of the account that you want to share rules with.

", + "PutResolverRulePolicyRequest$Arn": "

The Amazon Resource Name (ARN) of the rule that you want to share with another account.

", "ResolverEndpoint$Arn": "

The ARN (Amazon Resource Name) for the Resolver endpoint.

", "ResolverQueryLogConfig$Arn": "

The ARN for the query logging configuration.

", "ResolverRule$Arn": "

The ARN (Amazon Resource Name) for the Resolver rule specified by Id.

", @@ -239,7 +243,7 @@ } }, "Filter": { - "base": "

For Resolver list operations (ListResolverEndpoints, ListResolverRules, ListResolverRuleAssociations, ListResolverQueryLogConfigs, and ListResolverQueryLogConfigAssociations), an optional specification to return a subset of objects.

To filter objects, such as Resolver endpoints or Resolver rules, you specify Name and Values. For example, to list only inbound Resolver endpoints, specify Direction for Name and specify INBOUND for Values.

", + "base": "

For Resolver list operations (ListResolverEndpoints, ListResolverRules, ListResolverRuleAssociations, ListResolverQueryLogConfigs, ListResolverQueryLogConfigAssociations), and ListResolverDnssecConfigs), an optional specification to return a subset of objects.

To filter objects, such as Resolver endpoints or Resolver rules, you specify Name and Values. For example, to list only inbound Resolver endpoints, specify Direction for Name and specify INBOUND for Values.

", "refs": { "Filters$member": null } @@ -247,7 +251,7 @@ "FilterName": { "base": null, "refs": { - "Filter$Name": "

The name of the parameter that you want to use to filter objects.

The valid values for Name depend on the action that you're including the filter in, ListResolverEndpoints, ListResolverRules, ListResolverRuleAssociations, ListResolverQueryLogConfigs, or ListResolverQueryLogConfigAssociations.

In early versions of Resolver, values for Name were listed as uppercase, with underscore (_) delimiters. For example, CreatorRequestId was originally listed as CREATOR_REQUEST_ID. Uppercase values for Name are still supported.

ListResolverEndpoints

Valid values for Name include the following:

ListResolverRules

Valid values for Name include the following:

ListResolverRuleAssociations

Valid values for Name include the following:

ListResolverQueryLogConfigs

Valid values for Name include the following:

ListResolverQueryLogConfigAssociations

Valid values for Name include the following:

" + "Filter$Name": "

The name of the parameter that you want to use to filter objects.

The valid values for Name depend on the action that you're including the filter in, ListResolverEndpoints, ListResolverRules, ListResolverRuleAssociations, ListResolverQueryLogConfigs, or ListResolverQueryLogConfigAssociations.

In early versions of Resolver, values for Name were listed as uppercase, with underscore (_) delimiters. For example, CreatorRequestId was originally listed as CREATOR_REQUEST_ID. Uppercase values for Name are still supported.

ListResolverEndpoints

Valid values for Name include the following:

ListResolverRules

Valid values for Name include the following:

ListResolverRuleAssociations

Valid values for Name include the following:

ListResolverQueryLogConfigs

Valid values for Name include the following:

ListResolverQueryLogConfigAssociations

Valid values for Name include the following:

" } }, "FilterValue": { @@ -265,6 +269,7 @@ "Filters": { "base": null, "refs": { + "ListResolverDnssecConfigsRequest$Filters": "

An optional specification to return a subset of objects.

", "ListResolverEndpointsRequest$Filters": "

An optional specification to return a subset of Resolver endpoints, such as all inbound Resolver endpoints.

If you submit a second or subsequent ListResolverEndpoints request and specify the NextToken parameter, you must use the same values for Filters, if any, as in the previous request.

", "ListResolverQueryLogConfigAssociationsRequest$Filters": "

An optional specification to return a subset of query logging associations.

If you submit a second or subsequent ListResolverQueryLogConfigAssociations request and specify the NextToken parameter, you must use the same values for Filters, if any, as in the previous request.

", "ListResolverQueryLogConfigsRequest$Filters": "

An optional specification to return a subset of query logging configurations.

If you submit a second or subsequent ListResolverQueryLogConfigs request and specify the NextToken parameter, you must use the same values for Filters, if any, as in the previous request.

", @@ -272,6 +277,16 @@ "ListResolverRulesRequest$Filters": "

An optional specification to return a subset of Resolver rules, such as all Resolver rules that are associated with the same Resolver endpoint.

If you submit a second or subsequent ListResolverRules request and specify the NextToken parameter, you must use the same values for Filters, if any, as in the previous request.

" } }, + "GetResolverDnssecConfigRequest": { + "base": null, + "refs": { + } + }, + "GetResolverDnssecConfigResponse": { + "base": null, + "refs": { + } + }, "GetResolverEndpointRequest": { "base": null, "refs": { @@ -429,6 +444,16 @@ "refs": { } }, + "ListResolverDnssecConfigsRequest": { + "base": null, + "refs": { + } + }, + "ListResolverDnssecConfigsResponse": { + "base": null, + "refs": { + } + }, "ListResolverEndpointIpAddressesRequest": { "base": null, "refs": { @@ -502,6 +527,7 @@ "MaxResults": { "base": null, "refs": { + "ListResolverDnssecConfigsRequest$MaxResults": "

Optional: An integer that specifies the maximum number of DNSSEC configuration results that you want Amazon Route 53 to return. If you don't specify a value for MaxResults, Route 53 returns up to 100 configuration per page.

", "ListResolverEndpointIpAddressesRequest$MaxResults": "

The maximum number of IP addresses that you want to return in the response to a ListResolverEndpointIpAddresses request. If you don't specify a value for MaxResults, Resolver returns up to 100 IP addresses.

", "ListResolverEndpointIpAddressesResponse$MaxResults": "

The value that you specified for MaxResults in the request.

", "ListResolverEndpointsRequest$MaxResults": "

The maximum number of Resolver endpoints that you want to return in the response to a ListResolverEndpoints request. If you don't specify a value for MaxResults, Resolver returns up to 100 Resolver endpoints.

", @@ -531,6 +557,8 @@ "NextToken": { "base": null, "refs": { + "ListResolverDnssecConfigsRequest$NextToken": "

(Optional) If the current AWS account has more than MaxResults DNSSEC configurations, use NextToken to get the second and subsequent pages of results.

For the first ListResolverDnssecConfigs request, omit this value.

For the second and subsequent requests, get the value of NextToken from the previous response and specify that value for NextToken in the request.

", + "ListResolverDnssecConfigsResponse$NextToken": "

If a response includes the last of the DNSSEC configurations that are associated with the current AWS account, NextToken doesn't appear in the response.

If a response doesn't include the last of the configurations, you can get more configurations by submitting another ListResolverDnssecConfigs request. Get the value of NextToken that Amazon Route 53 returned in the previous response and include it in NextToken in the next request.

", "ListResolverEndpointIpAddressesRequest$NextToken": "

For the first ListResolverEndpointIpAddresses request, omit this value.

If the specified Resolver endpoint has more than MaxResults IP addresses, you can submit another ListResolverEndpointIpAddresses request to get the next group of IP addresses. In the next request, specify the value of NextToken from the previous response.

", "ListResolverEndpointIpAddressesResponse$NextToken": "

If the specified endpoint has more than MaxResults IP addresses, you can submit another ListResolverEndpointIpAddresses request to get the next group of IP addresses. In the next request, specify the value of NextToken from the previous response.

", "ListResolverEndpointsRequest$NextToken": "

For the first ListResolverEndpoints request, omit this value.

If you have more than MaxResults Resolver endpoints, you can submit another ListResolverEndpoints request to get the next group of Resolver endpoints. In the next request, specify the value of NextToken from the previous response.

", @@ -573,6 +601,26 @@ "refs": { } }, + "ResolverDNSSECValidationStatus": { + "base": null, + "refs": { + "ResolverDnssecConfig$ValidationStatus": "

The validation status for a DNSSEC configuration. The status can be one of the following:

" + } + }, + "ResolverDnssecConfig": { + "base": "

A complex type that contains information about a configuration for DNSSEC validation.

", + "refs": { + "GetResolverDnssecConfigResponse$ResolverDNSSECConfig": "

The information about a configuration for DNSSEC validation.

", + "ResolverDnssecConfigList$member": null, + "UpdateResolverDnssecConfigResponse$ResolverDNSSECConfig": "

A complex type that contains settings for the specified DNSSEC configuration.

" + } + }, + "ResolverDnssecConfigList": { + "base": null, + "refs": { + "ListResolverDnssecConfigsResponse$ResolverDnssecConfigs": "

An array that contains one ResolverDnssecConfig element for each configuration for DNSSEC validation that is associated with the current AWS account.

" + } + }, "ResolverEndpoint": { "base": "

In the response to a CreateResolverEndpoint, DeleteResolverEndpoint, GetResolverEndpoint, ListResolverEndpoints, or UpdateResolverEndpoint request, a complex type that contains settings for an existing inbound or outbound Resolver endpoint.

", "refs": { @@ -712,8 +760,8 @@ "ResolverRulePolicy": { "base": null, "refs": { - "GetResolverRulePolicyResponse$ResolverRulePolicy": "

Information about the Resolver rule policy that you specified in a GetResolverRulePolicy request.

", - "PutResolverRulePolicyRequest$ResolverRulePolicy": "

An AWS Identity and Access Management policy statement that lists the rules that you want to share with another AWS account and the operations that you want the account to be able to perform. You can specify the following operations in the Actions section of the statement:

In the Resource section of the statement, you specify the ARNs for the rules that you want to share with the account that you specified in Arn.

" + "GetResolverRulePolicyResponse$ResolverRulePolicy": "

The Resolver rule policy for the rule that you specified in a GetResolverRulePolicy request.

", + "PutResolverRulePolicyRequest$ResolverRulePolicy": "

An AWS Identity and Access Management policy statement that lists the rules that you want to share with another AWS account and the operations that you want the account to be able to perform. You can specify the following operations in the Action section of the statement:

In the Resource section of the statement, specify the ARN for the rule that you want to share with another account. Specify the same ARN that you specified in Arn.

" } }, "ResolverRuleStatus": { @@ -750,6 +798,7 @@ "DisassociateResolverQueryLogConfigRequest$ResourceId": "

The ID of the Amazon VPC that you want to disassociate from a specified query logging configuration.

", "DisassociateResolverRuleRequest$VPCId": "

The ID of the VPC that you want to disassociate the Resolver rule from.

", "DisassociateResolverRuleRequest$ResolverRuleId": "

The ID of the Resolver rule that you want to disassociate from the specified VPC.

", + "GetResolverDnssecConfigRequest$ResourceId": "

The ID of the virtual private cloud (VPC) for the DNSSEC validation status.

", "GetResolverEndpointRequest$ResolverEndpointId": "

The ID of the Resolver endpoint that you want to get information about.

", "GetResolverQueryLogConfigAssociationRequest$ResolverQueryLogConfigAssociationId": "

The ID of the Resolver query logging configuration association that you want to get information about.

", "GetResolverQueryLogConfigRequest$ResolverQueryLogConfigId": "

The ID of the Resolver query logging configuration that you want to get information about.

", @@ -758,6 +807,8 @@ "IpAddressResponse$IpId": "

The ID of one IP address.

", "IpAddressUpdate$IpId": "

Only when removing an IP address from a Resolver endpoint: The ID of the IP address that you want to remove. To get this ID, use GetResolverEndpoint.

", "ListResolverEndpointIpAddressesRequest$ResolverEndpointId": "

The ID of the Resolver endpoint that you want to get IP addresses for.

", + "ResolverDnssecConfig$Id": "

The ID for a configuration for DNSSEC validation.

", + "ResolverDnssecConfig$ResourceId": "

The ID of the virtual private cloud (VPC) that you're configuring the DNSSEC validation status for.

", "ResolverEndpoint$Id": "

The ID of the Resolver endpoint.

", "ResolverEndpoint$HostVPCId": "

The ID of the VPC that you want to create the Resolver endpoint in.

", "ResolverQueryLogConfig$Id": "

The ID for the query logging configuration.

", @@ -771,6 +822,7 @@ "ResolverRuleAssociation$VPCId": "

The ID of the VPC that you associated the Resolver rule with.

", "ResolverRuleConfig$ResolverEndpointId": "

The ID of the new outbound Resolver endpoint that you want to use to route DNS queries to the IP addresses that you specify in TargetIps.

", "SecurityGroupIds$member": null, + "UpdateResolverDnssecConfigRequest$ResourceId": "

The ID of the virtual private cloud (VPC) that you're updating the DNSSEC validation status for.

", "UpdateResolverEndpointRequest$ResolverEndpointId": "

The ID of the Resolver endpoint that you want to update.

", "UpdateResolverRuleRequest$ResolverRuleId": "

The ID of the Resolver rule that you want to update.

" } @@ -951,6 +1003,16 @@ "refs": { } }, + "UpdateResolverDnssecConfigRequest": { + "base": null, + "refs": { + } + }, + "UpdateResolverDnssecConfigResponse": { + "base": null, + "refs": { + } + }, "UpdateResolverEndpointRequest": { "base": null, "refs": { @@ -970,6 +1032,12 @@ "base": null, "refs": { } + }, + "Validation": { + "base": null, + "refs": { + "UpdateResolverDnssecConfigRequest$Validation": "

The new value that you are specifying for DNSSEC validation for the VPC. The value can be ENABLE or DISABLE. Be aware that it can take time for a validation status change to be completed.

" + } } } } diff --git a/models/apis/route53resolver/2018-04-01/paginators-1.json b/models/apis/route53resolver/2018-04-01/paginators-1.json index 4084b7aa0f..0ba9052153 100644 --- a/models/apis/route53resolver/2018-04-01/paginators-1.json +++ b/models/apis/route53resolver/2018-04-01/paginators-1.json @@ -1,5 +1,11 @@ { "pagination": { + "ListResolverDnssecConfigs": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ResolverDnssecConfigs" + }, "ListResolverEndpointIpAddresses": { "input_token": "NextToken", "output_token": "NextToken", diff --git a/models/apis/servicecatalog/2015-12-10/api-2.json b/models/apis/servicecatalog/2015-12-10/api-2.json index 9ea094adfd..14a73ed1b3 100644 --- a/models/apis/servicecatalog/2015-12-10/api-2.json +++ b/models/apis/servicecatalog/2015-12-10/api-2.json @@ -413,6 +413,19 @@ {"shape":"OperationNotSupportedException"} ] }, + "DescribePortfolioShares":{ + "name":"DescribePortfolioShares", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribePortfolioSharesInput"}, + "output":{"shape":"DescribePortfolioSharesOutput"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidParametersException"} + ] + }, "DescribeProduct":{ "name":"DescribeProduct", "http":{ @@ -1063,6 +1076,21 @@ {"shape":"TagOptionNotMigratedException"} ] }, + "UpdatePortfolioShare":{ + "name":"UpdatePortfolioShare", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdatePortfolioShareInput"}, + "output":{"shape":"UpdatePortfolioShareOutput"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"InvalidParametersException"}, + {"shape":"OperationNotSupportedException"}, + {"shape":"InvalidStateException"} + ] + }, "UpdateProduct":{ "name":"UpdateProduct", "http":{ @@ -1325,6 +1353,7 @@ "FailedServiceActionAssociations":{"shape":"FailedServiceActionAssociations"} } }, + "Boolean":{"type":"boolean"}, "BudgetDetail":{ "type":"structure", "members":{ @@ -1500,7 +1529,8 @@ "AcceptLanguage":{"shape":"AcceptLanguage"}, "PortfolioId":{"shape":"Id"}, "AccountId":{"shape":"AccountId"}, - "OrganizationNode":{"shape":"OrganizationNode"} + "OrganizationNode":{"shape":"OrganizationNode"}, + "ShareTagOptions":{"shape":"Boolean"} } }, "CreatePortfolioShareOutput":{ @@ -1829,12 +1859,42 @@ "ShareDetails":{"shape":"ShareDetails"} } }, + "DescribePortfolioShareType":{ + "type":"string", + "enum":[ + "ACCOUNT", + "ORGANIZATION", + "ORGANIZATIONAL_UNIT", + "ORGANIZATION_MEMBER_ACCOUNT" + ] + }, + "DescribePortfolioSharesInput":{ + "type":"structure", + "required":[ + "PortfolioId", + "Type" + ], + "members":{ + "PortfolioId":{"shape":"Id"}, + "Type":{"shape":"DescribePortfolioShareType"}, + "PageToken":{"shape":"PageToken"}, + "PageSize":{"shape":"PageSizeMax100"} + } + }, + "DescribePortfolioSharesOutput":{ + "type":"structure", + "members":{ + "NextPageToken":{"shape":"PageToken"}, + "PortfolioShareDetails":{"shape":"PortfolioShareDetails"} + } + }, "DescribeProductAsAdminInput":{ "type":"structure", "members":{ "AcceptLanguage":{"shape":"AcceptLanguage"}, "Id":{"shape":"Id"}, - "Name":{"shape":"ProductViewName"} + "Name":{"shape":"ProductViewName"}, + "SourcePortfolioId":{"shape":"Id"} } }, "DescribeProductAsAdminOutput":{ @@ -2695,6 +2755,10 @@ "member":{"shape":"NotificationArn"}, "max":5 }, + "NullableBoolean":{ + "type":"boolean", + "box":true + }, "OperationNotSupportedException":{ "type":"structure", "members":{ @@ -2735,6 +2799,7 @@ "max":60 }, "OutputValue":{"type":"string"}, + "Owner":{"type":"string"}, "PageSize":{ "type":"integer", "max":20, @@ -2798,6 +2863,19 @@ "min":1 }, "PortfolioName":{"type":"string"}, + "PortfolioShareDetail":{ + "type":"structure", + "members":{ + "PrincipalId":{"shape":"Id"}, + "Type":{"shape":"DescribePortfolioShareType"}, + "Accepted":{"shape":"Boolean"}, + "ShareTagOptions":{"shape":"Boolean"} + } + }, + "PortfolioShareDetails":{ + "type":"list", + "member":{"shape":"PortfolioShareDetail"} + }, "PortfolioShareType":{ "type":"string", "enum":[ @@ -3836,7 +3914,8 @@ "Key":{"shape":"TagOptionKey"}, "Value":{"shape":"TagOptionValue"}, "Active":{"shape":"TagOptionActive"}, - "Id":{"shape":"TagOptionId"} + "Id":{"shape":"TagOptionId"}, + "Owner":{"shape":"Owner"} } }, "TagOptionDetails":{ @@ -3952,6 +4031,24 @@ "Tags":{"shape":"Tags"} } }, + "UpdatePortfolioShareInput":{ + "type":"structure", + "required":["PortfolioId"], + "members":{ + "AcceptLanguage":{"shape":"AcceptLanguage"}, + "PortfolioId":{"shape":"Id"}, + "AccountId":{"shape":"AccountId"}, + "OrganizationNode":{"shape":"OrganizationNode"}, + "ShareTagOptions":{"shape":"NullableBoolean"} + } + }, + "UpdatePortfolioShareOutput":{ + "type":"structure", + "members":{ + "PortfolioShareToken":{"shape":"Id"}, + "Status":{"shape":"ShareStatus"} + } + }, "UpdateProductInput":{ "type":"structure", "required":["Id"], diff --git a/models/apis/servicecatalog/2015-12-10/docs-2.json b/models/apis/servicecatalog/2015-12-10/docs-2.json index 2268b3d78e..4323493975 100644 --- a/models/apis/servicecatalog/2015-12-10/docs-2.json +++ b/models/apis/servicecatalog/2015-12-10/docs-2.json @@ -13,10 +13,10 @@ "CopyProduct": "

Copies the specified source product to the specified target product or a new product.

You can copy a product to the same account or another account. You can copy a product to the same region or another region.

This operation is performed asynchronously. To track the progress of the operation, use DescribeCopyProductStatus.

", "CreateConstraint": "

Creates a constraint.

A delegated admin is authorized to invoke this command.

", "CreatePortfolio": "

Creates a portfolio.

A delegated admin is authorized to invoke this command.

", - "CreatePortfolioShare": "

Shares the specified portfolio with the specified account or organization node. Shares to an organization node can only be created by the management account of an organization or by a delegated administrator. You can share portfolios to an organization, an organizational unit, or a specific account.

Note that if a delegated admin is de-registered, they can no longer create portfolio shares.

AWSOrganizationsAccess must be enabled in order to create a portfolio share to an organization node.

You can't share a shared resource. This includes portfolios that contain a shared product.

", - "CreateProduct": "

Creates a product.

A delegated admin is authorized to invoke this command.

", + "CreatePortfolioShare": "

Shares the specified portfolio with the specified account or organization node. Shares to an organization node can only be created by the management account of an organization or by a delegated administrator. You can share portfolios to an organization, an organizational unit, or a specific account.

Note that if a delegated admin is de-registered, they can no longer create portfolio shares.

AWSOrganizationsAccess must be enabled in order to create a portfolio share to an organization node.

You can't share a shared resource, including portfolios that contain a shared product.

If the portfolio share with the specified account or organization node already exists, this action will have no effect and will not return an error. To update an existing share, you must use the UpdatePortfolioShare API instead.

", + "CreateProduct": "

Creates a product.

A delegated admin is authorized to invoke this command.

The user or role that performs this operation must have the cloudformation:GetTemplate IAM policy permission. This policy permission is required when using the ImportFromPhysicalId template source in the information data section.

", "CreateProvisionedProductPlan": "

Creates a plan. A plan includes the list of resources to be created (when provisioning a new product) or modified (when updating a provisioned product) when the plan is executed.

You can create one plan per provisioned product. To create a plan for an existing provisioned product, the product status must be AVAILBLE or TAINTED.

To view the resource changes in the change set, use DescribeProvisionedProductPlan. To create or modify the provisioned product, use ExecuteProvisionedProductPlan.

", - "CreateProvisioningArtifact": "

Creates a provisioning artifact (also known as a version) for the specified product.

You cannot create a provisioning artifact for a product that was shared with you.

", + "CreateProvisioningArtifact": "

Creates a provisioning artifact (also known as a version) for the specified product.

You cannot create a provisioning artifact for a product that was shared with you.

The user or role that performs this operation must have the cloudformation:GetTemplate IAM policy permission. This policy permission is required when using the ImportFromPhysicalId template source in the information data section.

", "CreateServiceAction": "

Creates a self-service action.

", "CreateTagOption": "

Creates a TagOption.

", "DeleteConstraint": "

Deletes the specified constraint.

A delegated admin is authorized to invoke this command.

", @@ -31,6 +31,7 @@ "DescribeCopyProductStatus": "

Gets the status of the specified copy product operation.

", "DescribePortfolio": "

Gets information about the specified portfolio.

A delegated admin is authorized to invoke this command.

", "DescribePortfolioShareStatus": "

Gets the status of the specified portfolio share operation. This API can only be called by the management account in the organization or by a delegated admin.

", + "DescribePortfolioShares": "

Returns a summary of each of the portfolio shares that were created for the specified portfolio.

You can use this API to determine which accounts or organizational nodes this portfolio have been shared, whether the recipient entity has imported the share, and whether TagOptions are included with the share.

The PortfolioId and Type parameters are both required.

", "DescribeProduct": "

Gets information about the specified product.

", "DescribeProductAsAdmin": "

Gets information about the specified product. This operation is run with administrator access.

", "DescribeProductView": "

Gets information about the specified product.

", @@ -53,7 +54,7 @@ "ExecuteProvisionedProductServiceAction": "

Executes a self-service action against a provisioned product.

", "GetAWSOrganizationsAccessStatus": "

Get the Access Status for AWS Organization portfolio share feature. This API can only be called by the management account in the organization or by a delegated admin.

", "GetProvisionedProductOutputs": "

This API takes either a ProvisonedProductId or a ProvisionedProductName, along with a list of one or more output keys, and responds with the key/value pairs of those outputs.

", - "ImportAsProvisionedProduct": "

Requests the import of a resource as a Service Catalog provisioned product that is associated to a Service Catalog product and provisioning artifact. Once imported all supported Service Catalog governance actions are supported on the provisioned product.

Resource import only supports CloudFormation stack ARNs. CloudFormation StackSets and non-root nested stacks are not supported.

The CloudFormation stack must have one of the following statuses to be imported: CREATE_COMPLETE, UPDATE_COMPLETE, UPDATE_ROLLBACK_COMPLETE, IMPORT_COMPLETE, IMPORT_ROLLBACK_COMPLETE.

Import of the resource requires that the CloudFormation stack template matches the associated Service Catalog product provisioning artifact.

", + "ImportAsProvisionedProduct": "

Requests the import of a resource as a Service Catalog provisioned product that is associated to a Service Catalog product and provisioning artifact. Once imported, all supported Service Catalog governance actions are supported on the provisioned product.

Resource import only supports CloudFormation stack ARNs. CloudFormation StackSets and non-root nested stacks are not supported.

The CloudFormation stack must have one of the following statuses to be imported: CREATE_COMPLETE, UPDATE_COMPLETE, UPDATE_ROLLBACK_COMPLETE, IMPORT_COMPLETE, IMPORT_ROLLBACK_COMPLETE.

Import of the resource requires that the CloudFormation stack template matches the associated Service Catalog product provisioning artifact.

The user or role that performs this operation must have the cloudformation:GetTemplate and cloudformation:DescribeStacks IAM policy permissions.

", "ListAcceptedPortfolioShares": "

Lists all portfolios for which sharing was accepted by this account.

", "ListBudgetsForResource": "

Lists all the budgets associated to the specified resource.

", "ListConstraintsForPortfolio": "

Lists the constraints for the specified portfolio and product.

", @@ -81,6 +82,7 @@ "TerminateProvisionedProduct": "

Terminates the specified provisioned product.

This operation does not delete any records associated with the provisioned product.

You can check the status of this request using DescribeRecord.

", "UpdateConstraint": "

Updates the specified constraint.

", "UpdatePortfolio": "

Updates the specified portfolio.

You cannot update a product that was shared with you.

", + "UpdatePortfolioShare": "

Updates the specified portfolio share. You can use this API to enable or disable TagOptions sharing for an existing portfolio share.

The portfolio share cannot be updated if the CreatePortfolioShare operation is IN_PROGRESS, as the share is not available to recipient entities. In this case, you must wait for the portfolio share to be COMPLETED.

You must provide the accountId or organization node in the input, but not both.

If the portfolio is shared to both an external account and an organization node, and both shares need to be updated, you must invoke UpdatePortfolioShare separately for each share type.

This API cannot be used for removing the portfolio share. You must use DeletePortfolioShare API for that action.

", "UpdateProduct": "

Updates the specified product.

", "UpdateProvisionedProduct": "

Requests updates to the configuration of the specified provisioned product.

If there are tags associated with the object, they cannot be updated or added. Depending on the specific updates requested, this operation can update with no interruption, with some interruption, or replace the provisioned product entirely.

You can check the status of this request using DescribeRecord.

", "UpdateProvisionedProductProperties": "

Requests updates to the properties of the specified provisioned product.

", @@ -158,6 +160,7 @@ "TerminateProvisionedProductInput$AcceptLanguage": "

The language code.

", "UpdateConstraintInput$AcceptLanguage": "

The language code.

", "UpdatePortfolioInput$AcceptLanguage": "

The language code.

", + "UpdatePortfolioShareInput$AcceptLanguage": "

The language code.

", "UpdateProductInput$AcceptLanguage": "

The language code.

", "UpdateProvisionedProductInput$AcceptLanguage": "

The language code.

", "UpdateProvisionedProductPropertiesInput$AcceptLanguage": "

The language code.

", @@ -212,7 +215,8 @@ "Namespaces$member": null, "StackInstance$Account": "

The name of the AWS account that the stack instance is associated with.

", "StackSetAccounts$member": null, - "SuccessfulShares$member": null + "SuccessfulShares$member": null, + "UpdatePortfolioShareInput$AccountId": "

The AWS Account Id of the recipient account. This field is required when updating an external account to account type share.

" } }, "AccountIds": { @@ -324,6 +328,14 @@ "refs": { } }, + "Boolean": { + "base": null, + "refs": { + "CreatePortfolioShareInput$ShareTagOptions": "

Enables or disables TagOptions sharing when creating the portfolio share. If this flag is not provided, TagOptions sharing is disabled.

", + "PortfolioShareDetail$Accepted": "

Indicates whether the shared portfolio is imported by the recipient account. If the recipient is in an organization node, the share is automatically imported, and the field is always set to true.

", + "PortfolioShareDetail$ShareTagOptions": "

Indicates whether TagOptions sharing is enabled or disabled for the portfolio share.

" + } + }, "BudgetDetail": { "base": "

Information about a budget.

", "refs": { @@ -683,6 +695,23 @@ "refs": { } }, + "DescribePortfolioShareType": { + "base": null, + "refs": { + "DescribePortfolioSharesInput$Type": "

The type of portfolio share to summarize. This field acts as a filter on the type of portfolio share, which can be one of the following:

1. ACCOUNT - Represents an external account to account share.

2. ORGANIZATION - Represents a share to an organization. This share is available to every account in the organization.

3. ORGANIZATIONAL_UNIT - Represents a share to an organizational unit.

4. ORGANIZATION_MEMBER_ACCOUNT - Represents a share to an account in the organization.

", + "PortfolioShareDetail$Type": "

The type of the portfolio share.

" + } + }, + "DescribePortfolioSharesInput": { + "base": null, + "refs": { + } + }, + "DescribePortfolioSharesOutput": { + "base": null, + "refs": { + } + }, "DescribeProductAsAdminInput": { "base": null, "refs": { @@ -1052,7 +1081,9 @@ "DescribePortfolioShareStatusInput$PortfolioShareToken": "

The token for the portfolio share operation. This token is returned either by CreatePortfolioShare or by DeletePortfolioShare.

", "DescribePortfolioShareStatusOutput$PortfolioShareToken": "

The token for the portfolio share operation. For example, share-6v24abcdefghi.

", "DescribePortfolioShareStatusOutput$PortfolioId": "

The portfolio identifier.

", + "DescribePortfolioSharesInput$PortfolioId": "

The unique identifier of the portfolio for which shares will be retrieved.

", "DescribeProductAsAdminInput$Id": "

The product identifier.

", + "DescribeProductAsAdminInput$SourcePortfolioId": "

The unique identifier of the shared portfolio that the specified product is associated with.

You can provide this parameter to retrieve the shared TagOptions associated with the product. If this parameter is provided and if TagOptions sharing is enabled in the portfolio share, the API returns both local and shared TagOptions associated with the product. Otherwise only local TagOptions will be returned.

", "DescribeProductInput$Id": "

The product identifier.

", "DescribeProductViewInput$Id": "

The product view identifier.

", "DescribeProvisionedProductInput$Id": "

The provisioned product identifier. You must provide the name or ID, but not both.

If you do not provide a name or ID, or you provide both name and ID, an InvalidParametersException will occur.

", @@ -1100,6 +1131,7 @@ "ListServiceActionsForProvisioningArtifactInput$ProvisioningArtifactId": "

The identifier of the provisioning artifact. For example, pa-4abcdjnxjj6ne.

", "ListStackInstancesForProvisionedProductInput$ProvisionedProductId": "

The identifier of the provisioned product.

", "PortfolioDetail$Id": "

The portfolio identifier.

", + "PortfolioShareDetail$PrincipalId": "

The identifier of the recipient entity that received the portfolio share. The recipient entities can be one of the following:

1. An external account.

2. An organziation member account.

3. An organzational unit (OU).

4. The organization itself. (This shares with every account in the organization).

", "ProductViewSummary$Id": "

The product view identifier.

", "ProductViewSummary$ProductId": "

The product identifier.

", "ProvisionProductInput$ProductId": "

The product identifier. You must provide the name or ID, but not both.

", @@ -1140,6 +1172,8 @@ "TerminateProvisionedProductInput$ProvisionedProductId": "

The identifier of the provisioned product. You cannot specify both ProvisionedProductName and ProvisionedProductId.

", "UpdateConstraintInput$Id": "

The identifier of the constraint.

", "UpdatePortfolioInput$Id": "

The portfolio identifier.

", + "UpdatePortfolioShareInput$PortfolioId": "

The unique identifier of the portfolio for which the share will be updated.

", + "UpdatePortfolioShareOutput$PortfolioShareToken": "

The token that tracks the status of the UpdatePortfolioShare operation for external account to account or organizational type sharing.

", "UpdateProductInput$Id": "

The product identifier.

", "UpdateProvisionedProductInput$ProvisionedProductId": "

The identifier of the provisioned product. You must provide the name or ID, but not both.

", "UpdateProvisionedProductInput$ProductId": "

The identifier of the product. You must provide the name or ID, but not both.

", @@ -1478,6 +1512,12 @@ "ProvisionedProductPlanDetails$NotificationArns": "

Passed to CloudFormation. The SNS topic ARNs to which to publish stack-related events.

" } }, + "NullableBoolean": { + "base": null, + "refs": { + "UpdatePortfolioShareInput$ShareTagOptions": "

A flag to enable or disable TagOptions sharing for the portfolio share. If this field is not provided, the current state of TagOptions sharing on the portfolio share will not be modified.

" + } + }, "OperationNotSupportedException": { "base": "

The operation is not supported.

", "refs": { @@ -1488,7 +1528,8 @@ "refs": { "CreatePortfolioShareInput$OrganizationNode": "

The organization node to whom you are going to share. If OrganizationNode is passed in, PortfolioShare will be created for the node an ListOrganizationPortfolioAccessd its children (when applies), and a PortfolioShareToken will be returned in the output in order for the administrator to monitor the status of the PortfolioShare creation process.

", "DeletePortfolioShareInput$OrganizationNode": "

The organization node to whom you are going to stop sharing.

", - "OrganizationNodes$member": null + "OrganizationNodes$member": null, + "UpdatePortfolioShareInput$OrganizationNode": null } }, "OrganizationNodeType": { @@ -1536,6 +1577,12 @@ "RecordOutput$OutputValue": "

The output value.

" } }, + "Owner": { + "base": null, + "refs": { + "TagOptionDetail$Owner": "

The AWS account Id of the owner account that created the TagOption.

" + } + }, "PageSize": { "base": null, "refs": { @@ -1566,12 +1613,15 @@ "PageSizeMax100": { "base": null, "refs": { + "DescribePortfolioSharesInput$PageSize": "

The maximum number of items to return with this call.

", "ListPortfolioAccessInput$PageSize": "

The maximum number of items to return with this call.

" } }, "PageToken": { "base": null, "refs": { + "DescribePortfolioSharesInput$PageToken": "

The page token for the next set of results. To retrieve the first set of results, use null.

", + "DescribePortfolioSharesOutput$NextPageToken": "

The page token to use to retrieve the next set of results. If there are no additional results, this value is null.

", "DescribeProvisionedProductPlanInput$PageToken": "

The page token for the next set of results. To retrieve the first set of results, use null.

", "DescribeProvisionedProductPlanOutput$NextPageToken": "

The page token to use to retrieve the next set of results. If there are no additional results, this value is null.

", "DescribeRecordInput$PageToken": "

The page token for the next set of results. To retrieve the first set of results, use null.

", @@ -1712,6 +1762,18 @@ "LaunchPathSummary$Name": "

The name of the portfolio to which the user was assigned.

" } }, + "PortfolioShareDetail": { + "base": "

Information about the portfolio share.

", + "refs": { + "PortfolioShareDetails$member": null + } + }, + "PortfolioShareDetails": { + "base": null, + "refs": { + "DescribePortfolioSharesOutput$PortfolioShareDetails": "

Summaries about each of the portfolio shares.

" + } + }, "PortfolioShareType": { "base": null, "refs": { @@ -2136,9 +2198,9 @@ "ProvisioningArtifactInfo": { "base": null, "refs": { - "CreateProvisioningArtifactOutput$Info": "

The URL of the CloudFormation template in Amazon S3, in JSON format.

", + "CreateProvisioningArtifactOutput$Info": "

Specify the template source with one of the following options, but not both. Keys accepted: [ LoadTemplateFromURL, ImportFromPhysicalId ].

The URL of the CloudFormation template in Amazon S3, in JSON format.

LoadTemplateFromURL

Use the URL of the CloudFormation template in Amazon S3 in JSON format.

ImportFromPhysicalId

Use the physical id of the resource that contains the template; currently supports CloudFormation stack ARN.

", "DescribeProvisioningArtifactOutput$Info": "

The URL of the CloudFormation template in Amazon S3.

", - "ProvisioningArtifactProperties$Info": "

The URL of the CloudFormation template in Amazon S3. Specify the URL in JSON format as follows:

\"LoadTemplateFromURL\": \"https://s3.amazonaws.com/cf-templates-ozkq9d3hgiq2-us-east-1/...\"

", + "ProvisioningArtifactProperties$Info": "

Specify the template source with one of the following options, but not both. Keys accepted: [ LoadTemplateFromURL, ImportFromPhysicalId ]

The URL of the CloudFormation template in Amazon S3. Specify the URL in JSON format as follows:

\"LoadTemplateFromURL\": \"https://s3.amazonaws.com/cf-templates-ozkq9d3hgiq2-us-east-1/...\"

ImportFromPhysicalId: The physical id of the resource that contains the template. Currently only supports CloudFormation stack arn. Specify the physical id in JSON format as follows: ImportFromPhysicalId: “arn:aws:cloudformation:[us-east-1]:[accountId]:stack/[StackName]/[resourceId]

", "ProvisioningArtifactSummary$ProvisioningArtifactMetadata": "

The metadata for the provisioning artifact. This is used with AWS Marketplace products.

", "UpdateProvisioningArtifactOutput$Info": "

The URL of the CloudFormation template in Amazon S3.

" } @@ -2210,8 +2272,8 @@ "ProvisioningArtifactProperties": { "base": "

Information about a provisioning artifact (also known as a version) for a product.

", "refs": { - "CreateProductInput$ProvisioningArtifactParameters": "

The configuration of the provisioning artifact. The info field accepts ImportFromPhysicalID.

", - "CreateProvisioningArtifactInput$Parameters": "

The configuration for the provisioning artifact. The info field accepts ImportFromPhysicalID.

" + "CreateProductInput$ProvisioningArtifactParameters": "

The configuration of the provisioning artifact.

", + "CreateProvisioningArtifactInput$Parameters": "

The configuration for the provisioning artifact.

" } }, "ProvisioningArtifactPropertyName": { @@ -2277,7 +2339,7 @@ } }, "ProvisioningPreferences": { - "base": "

The user-defined preferences that will be applied when updating a provisioned product. Not all preferences are applicable to all provisioned product types.

", + "base": "

The user-defined preferences that will be applied when updating a provisioned product. Not all preferences are applicable to all provisioned product type

One or more AWS accounts that will have access to the provisioned product.

Applicable only to a CFN_STACKSET provisioned product type.

The AWS accounts specified should be within the list of accounts in the STACKSET constraint. To get the list of accounts in the STACKSET constraint, use the DescribeProvisioningParameters operation.

If no values are specified, the default value is all accounts from the STACKSET constraint.

", "refs": { "ProvisionProductInput$ProvisioningPreferences": "

An object that contains information about the provisioning preferences for a stack set.

" } @@ -2504,7 +2566,7 @@ "RetainPhysicalResources": { "base": null, "refs": { - "TerminateProvisionedProductInput$RetainPhysicalResources": "

When this boolean parameter is set to true, the TerminateProvisionedProduct API deletes the Service Catalog provisioned product. However, it does not remove the CloudFormation stack, stack set, or the underlying resources of the deleted provisioned product. The default value is false.

" + "TerminateProvisionedProductInput$RetainPhysicalResources": "

When this boolean parameter is set to true, the TerminateProvisionedProduct API deletes the Service Catalog provisioned product. However, it does not remove the CloudFormation stack, stack set, or the underlying resources of the deleted provisioned product. The default value is false.

" } }, "RoleArn": { @@ -2689,7 +2751,8 @@ "ShareStatus": { "base": null, "refs": { - "DescribePortfolioShareStatusOutput$Status": "

Status of the portfolio share operation.

" + "DescribePortfolioShareStatusOutput$Status": "

Status of the portfolio share operation.

", + "UpdatePortfolioShareOutput$Status": "

The status of UpdatePortfolioShare operation. You can also obtain the operation status using DescribePortfolioShareStatus API.

" } }, "SortField": { @@ -2740,7 +2803,7 @@ "base": null, "refs": { "ProvisioningArtifactPreferences$StackSetAccounts": "

One or more AWS accounts where stack instances are deployed from the stack set. These accounts can be scoped in ProvisioningPreferences$StackSetAccounts and UpdateProvisioningPreferences$StackSetAccounts.

Applicable only to a CFN_STACKSET provisioned product type.

", - "ProvisioningPreferences$StackSetAccounts": "

One or more AWS accounts that will have access to the provisioned product.

Applicable only to a CFN_STACKSET provisioned product type.

The AWS accounts specified should be within the list of accounts in the STACKSET constraint. To get the list of accounts in the STACKSET constraint, use the DescribeProvisioningParameters operation.

If no values are specified, the default value is all accounts from the STACKSET constraint.

", + "ProvisioningPreferences$StackSetAccounts": "

One or more AWS accounts where the provisioned product will be available.

Applicable only to a CFN_STACKSET provisioned product type.

The specified accounts should be within the list of accounts from the STACKSET constraint. To get the list of accounts in the STACKSET constraint, use the DescribeProvisioningParameters operation.

If no values are specified, the default value is all acounts from the STACKSET constraint.

", "UpdateProvisioningPreferences$StackSetAccounts": "

One or more AWS accounts that will have access to the provisioned product.

Applicable only to a CFN_STACKSET provisioned product type.

The AWS accounts specified should be within the list of accounts in the STACKSET constraint. To get the list of accounts in the STACKSET constraint, use the DescribeProvisioningParameters operation.

If no values are specified, the default value is all accounts from the STACKSET constraint.

" } }, @@ -2835,7 +2898,7 @@ "SupportUrl": { "base": null, "refs": { - "CreateProductInput$SupportUrl": "

The contact URL for product support.

", + "CreateProductInput$SupportUrl": "

The contact URL for product support.

^https?:\\/\\// / is the pattern used to validate SupportUrl.

", "ProductViewSummary$SupportUrl": "

The URL information to obtain support for this Product.

", "UpdateProductInput$SupportUrl": "

The updated support URL for the product.

" } @@ -2999,6 +3062,16 @@ "refs": { } }, + "UpdatePortfolioShareInput": { + "base": null, + "refs": { + } + }, + "UpdatePortfolioShareOutput": { + "base": null, + "refs": { + } + }, "UpdateProductInput": { "base": null, "refs": { diff --git a/models/apis/servicecatalog/2015-12-10/paginators-1.json b/models/apis/servicecatalog/2015-12-10/paginators-1.json index 1ce142e023..f62592efd3 100644 --- a/models/apis/servicecatalog/2015-12-10/paginators-1.json +++ b/models/apis/servicecatalog/2015-12-10/paginators-1.json @@ -1,5 +1,10 @@ { "pagination": { + "DescribePortfolioShares": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "limit_key": "PageSize" + }, "GetProvisionedProductOutputs": { "input_token": "PageToken", "output_token": "NextPageToken", diff --git a/models/apis/sqs/2012-11-05/api-2.json b/models/apis/sqs/2012-11-05/api-2.json index 472f042182..54b129a840 100644 --- a/models/apis/sqs/2012-11-05/api-2.json +++ b/models/apis/sqs/2012-11-05/api-2.json @@ -857,7 +857,9 @@ "FifoQueue", "ContentBasedDeduplication", "KmsMasterKeyId", - "KmsDataKeyReusePeriodSeconds" + "KmsDataKeyReusePeriodSeconds", + "DeduplicationScope", + "FifoThroughputLimit" ] }, "QueueDeletedRecently":{ diff --git a/models/apis/sqs/2012-11-05/docs-2.json b/models/apis/sqs/2012-11-05/docs-2.json index 56609e2dc8..2700277307 100644 --- a/models/apis/sqs/2012-11-05/docs-2.json +++ b/models/apis/sqs/2012-11-05/docs-2.json @@ -2,26 +2,26 @@ "version": "2.0", "service": "

Welcome to the Amazon Simple Queue Service API Reference.

Amazon Simple Queue Service (Amazon SQS) is a reliable, highly-scalable hosted queue for storing messages as they travel between applications or microservices. Amazon SQS moves data between distributed application components and helps you decouple these components.

For information on the permissions you need to use this API, see Identity and access management in the Amazon Simple Queue Service Developer Guide.

You can use AWS SDKs to access Amazon SQS using your favorite programming language. The SDKs perform tasks such as the following automatically:

Additional Information

", "operations": { - "AddPermission": "

Adds a permission to a queue for a specific principal. This allows sharing access to the queue.

When you create a queue, you have full control access rights for the queue. Only you, the owner of the queue, can grant or deny permissions to the queue. For more information about these permissions, see Allow Developers to Write Messages to a Shared Queue in the Amazon Simple Queue Service Developer Guide.

  • AddPermission generates a policy for you. You can use SetQueueAttributes to upload your policy. For more information, see Using Custom Policies with the Amazon SQS Access Policy Language in the Amazon Simple Queue Service Developer Guide.

  • An Amazon SQS policy can have a maximum of 7 actions.

  • To remove the ability to change queue permissions, you must deny permission to the AddPermission, RemovePermission, and SetQueueAttributes actions in your IAM policy.

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&AttributeName.1=first

&AttributeName.2=second

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

", + "AddPermission": "

Adds a permission to a queue for a specific principal. This allows sharing access to the queue.

When you create a queue, you have full control access rights for the queue. Only you, the owner of the queue, can grant or deny permissions to the queue. For more information about these permissions, see Allow Developers to Write Messages to a Shared Queue in the Amazon Simple Queue Service Developer Guide.

  • AddPermission generates a policy for you. You can use SetQueueAttributes to upload your policy. For more information, see Using Custom Policies with the Amazon SQS Access Policy Language in the Amazon Simple Queue Service Developer Guide.

  • An Amazon SQS policy can have a maximum of 7 actions.

  • To remove the ability to change queue permissions, you must deny permission to the AddPermission, RemovePermission, and SetQueueAttributes actions in your IAM policy.

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&AttributeName.1=first

&AttributeName.2=second

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

", "ChangeMessageVisibility": "

Changes the visibility timeout of a specified message in a queue to a new value. The default visibility timeout for a message is 30 seconds. The minimum is 0 seconds. The maximum is 12 hours. For more information, see Visibility Timeout in the Amazon Simple Queue Service Developer Guide.

For example, you have a message with a visibility timeout of 5 minutes. After 3 minutes, you call ChangeMessageVisibility with a timeout of 10 minutes. You can continue to call ChangeMessageVisibility to extend the visibility timeout to the maximum allowed time. If you try to extend the visibility timeout beyond the maximum, your request is rejected.

An Amazon SQS message has three basic states:

  1. Sent to a queue by a producer.

  2. Received from the queue by a consumer.

  3. Deleted from the queue.

A message is considered to be stored after it is sent to a queue by a producer, but not yet received from the queue by a consumer (that is, between states 1 and 2). There is no limit to the number of stored messages. A message is considered to be in flight after it is received from a queue by a consumer, but not yet deleted from the queue (that is, between states 2 and 3). There is a limit to the number of inflight messages.

Limits that apply to inflight messages are unrelated to the unlimited number of stored messages.

For most standard queues (depending on queue traffic and message backlog), there can be a maximum of approximately 120,000 inflight messages (received from a queue by a consumer, but not yet deleted from the queue). If you reach this limit, Amazon SQS returns the OverLimit error message. To avoid reaching the limit, you should delete messages from the queue after they're processed. You can also increase the number of queues you use to process your messages. To request a limit increase, file a support request.

For FIFO queues, there can be a maximum of 20,000 inflight messages (received from a queue by a consumer, but not yet deleted from the queue). If you reach this limit, Amazon SQS returns no error messages.

If you attempt to set the VisibilityTimeout to a value greater than the maximum time left, Amazon SQS returns an error. Amazon SQS doesn't automatically recalculate and increase the timeout to the maximum remaining time.

Unlike with a queue, when you change the visibility timeout for a specific message the timeout value is applied immediately but isn't saved in memory for that message. If you don't delete a message after it is received, the visibility timeout for the message reverts to the original timeout value (not to the value you set using the ChangeMessageVisibility action) the next time the message is received.

", "ChangeMessageVisibilityBatch": "

Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&AttributeName.1=first

&AttributeName.2=second

", - "CreateQueue": "

Creates a new standard or FIFO queue. You can pass one or more attributes in the request. Keep the following in mind:

To successfully create a new queue, you must provide a queue name that adheres to the limits related to queues and is unique within the scope of your queues.

After you create a queue, you must wait at least one second after the queue is created to be able to use the queue.

To get the queue URL, use the GetQueueUrl action. GetQueueUrl requires only the QueueName parameter. be aware of existing queue names:

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&AttributeName.1=first

&AttributeName.2=second

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

", + "CreateQueue": "

Creates a new standard or FIFO queue. You can pass one or more attributes in the request. Keep the following in mind:

To successfully create a new queue, you must provide a queue name that adheres to the limits related to queues and is unique within the scope of your queues.

After you create a queue, you must wait at least one second after the queue is created to be able to use the queue.

To get the queue URL, use the GetQueueUrl action. GetQueueUrl requires only the QueueName parameter. be aware of existing queue names:

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&AttributeName.1=first

&AttributeName.2=second

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

", "DeleteMessage": "

Deletes the specified message from the specified queue. To select the message to delete, use the ReceiptHandle of the message (not the MessageId which you receive when you send the message). Amazon SQS can delete a message from a queue even if a visibility timeout setting causes the message to be locked by another consumer. Amazon SQS automatically deletes messages left in a queue longer than the retention period configured for the queue.

The ReceiptHandle is associated with a specific instance of receiving a message. If you receive a message more than once, the ReceiptHandle is different each time you receive a message. When you use the DeleteMessage action, you must provide the most recently received ReceiptHandle for the message (otherwise, the request succeeds, but the message might not be deleted).

For standard queues, it is possible to receive a message even after you delete it. This might happen on rare occasions if one of the servers which stores a copy of the message is unavailable when you send the request to delete the message. The copy remains on the server and might be returned to you during a subsequent receive request. You should ensure that your application is idempotent, so that receiving a message more than once does not cause issues.

", "DeleteMessageBatch": "

Deletes up to ten messages from the specified queue. This is a batch version of DeleteMessage. The result of the action on each message is reported individually in the response.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&AttributeName.1=first

&AttributeName.2=second

", - "DeleteQueue": "

Deletes the queue specified by the QueueUrl, regardless of the queue's contents.

Be careful with the DeleteQueue action: When you delete a queue, any messages in the queue are no longer available.

When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after 60 seconds the queue and the message you sent no longer exist.

When you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

", + "DeleteQueue": "

Deletes the queue specified by the QueueUrl, regardless of the queue's contents.

Be careful with the DeleteQueue action: When you delete a queue, any messages in the queue are no longer available.

When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after 60 seconds the queue and the message you sent no longer exist.

When you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

", "GetQueueAttributes": "

Gets attributes for the specified queue.

To determine whether a queue is FIFO, you can check whether QueueName ends with the .fifo suffix.

", "GetQueueUrl": "

Returns the URL of an existing Amazon SQS queue.

To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission to access the queue. For more information about shared queue access, see AddPermission or see Allow Developers to Write Messages to a Shared Queue in the Amazon Simple Queue Service Developer Guide.

", "ListDeadLetterSourceQueues": "

Returns a list of your queues that have the RedrivePolicy queue attribute configured with a dead-letter queue.

The ListDeadLetterSourceQueues methods supports pagination. Set parameter MaxResults in the request to specify the maximum number of results to be returned in the response. If you do not set MaxResults, the response includes a maximum of 1,000 results. If you set MaxResults and there are additional results to display, the response includes a value for NextToken. Use NextToken as a parameter in your next request to ListDeadLetterSourceQueues to receive the next page of results.

For more information about using dead-letter queues, see Using Amazon SQS Dead-Letter Queues in the Amazon Simple Queue Service Developer Guide.

", - "ListQueueTags": "

List all cost allocation tags added to the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

", - "ListQueues": "

Returns a list of your queues in the current region. The response includes a maximum of 1,000 results. If you specify a value for the optional QueueNamePrefix parameter, only queues with a name that begins with the specified value are returned.

The listQueues methods supports pagination. Set parameter MaxResults in the request to specify the maximum number of results to be returned in the response. If you do not set MaxResults, the response includes a maximum of 1,000 results. If you set MaxResults and there are additional results to display, the response includes a value for NextToken. Use NextToken as a parameter in your next request to listQueues to receive the next page of results.

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

", + "ListQueueTags": "

List all cost allocation tags added to the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

", + "ListQueues": "

Returns a list of your queues in the current region. The response includes a maximum of 1,000 results. If you specify a value for the optional QueueNamePrefix parameter, only queues with a name that begins with the specified value are returned.

The listQueues methods supports pagination. Set parameter MaxResults in the request to specify the maximum number of results to be returned in the response. If you do not set MaxResults, the response includes a maximum of 1,000 results. If you set MaxResults and there are additional results to display, the response includes a value for NextToken. Use NextToken as a parameter in your next request to listQueues to receive the next page of results.

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

", "PurgeQueue": "

Deletes the messages in a queue specified by the QueueURL parameter.

When you use the PurgeQueue action, you can't retrieve any messages deleted from a queue.

The message deletion process takes up to 60 seconds. We recommend waiting for 60 seconds regardless of your queue's size.

Messages sent to the queue before you call PurgeQueue might be received but are deleted within the next minute.

Messages sent to the queue after you call PurgeQueue might be deleted while the queue is being purged.

", "ReceiveMessage": "

Retrieves one or more messages (up to 10), from the specified queue. Using the WaitTimeSeconds parameter enables long-poll support. For more information, see Amazon SQS Long Polling in the Amazon Simple Queue Service Developer Guide.

Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call. Thus, only the messages on the sampled machines are returned. If the number of messages in the queue is small (fewer than 1,000), you most likely get fewer messages than you requested per ReceiveMessage call. If the number of messages in the queue is extremely small, you might not receive any messages in a particular ReceiveMessage response. If this happens, repeat the request.

For each message returned, the response includes the following:

The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon Simple Queue Service Developer Guide.

You can provide the VisibilityTimeout parameter in your request. The parameter is applied to the messages that Amazon SQS returns in the response. If you don't include the parameter, the overall visibility timeout for the queue is used for the returned messages. For more information, see Visibility Timeout in the Amazon Simple Queue Service Developer Guide.

A message that isn't deleted or a message whose visibility isn't extended before the visibility timeout expires counts as a failed receive. Depending on the configuration of the queue, the message might be sent to the dead-letter queue.

In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.

", - "RemovePermission": "

Revokes any permissions in the queue policy that matches the specified Label parameter.

  • Only the owner of a queue can remove permissions from it.

  • Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

  • To remove the ability to change queue permissions, you must deny permission to the AddPermission, RemovePermission, and SetQueueAttributes actions in your IAM policy.

", + "RemovePermission": "

Revokes any permissions in the queue policy that matches the specified Label parameter.

  • Only the owner of a queue can remove permissions from it.

  • Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

  • To remove the ability to change queue permissions, you must deny permission to the AddPermission, RemovePermission, and SetQueueAttributes actions in your IAM policy.

", "SendMessage": "

Delivers a message to the specified queue.

A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed:

#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF

Any characters not included in this list will be rejected. For more information, see the W3C specification for characters.

", "SendMessageBatch": "

Delivers up to ten messages to the specified queue. This is a batch version of SendMessage. For a FIFO queue, multiple messages within a single batch are enqueued in the order they are sent.

The result of sending each message is reported individually in the response. Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

The maximum allowed individual message size and the maximum total payload size (the sum of the individual lengths of all of the batched messages) are both 256 KB (262,144 bytes).

A message can include only XML, JSON, and unformatted text. The following Unicode characters are allowed:

#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF

Any characters not included in this list will be rejected. For more information, see the W3C specification for characters.

If you don't specify the DelaySeconds parameter for an entry, Amazon SQS uses the default value for the queue.

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&AttributeName.1=first

&AttributeName.2=second

", - "SetQueueAttributes": "

Sets the value of one or more queue attributes. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the Amazon SQS system. Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes.

  • In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.

  • Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

  • To remove the ability to change queue permissions, you must deny permission to the AddPermission, RemovePermission, and SetQueueAttributes actions in your IAM policy.

", - "TagQueue": "

Add cost allocation tags to the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

When you use queue tags, keep the following guidelines in mind:

For a full list of tag restrictions, see Limits Related to Queues in the Amazon Simple Queue Service Developer Guide.

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

", - "UntagQueue": "

Remove cost allocation tags from the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

" + "SetQueueAttributes": "

Sets the value of one or more queue attributes. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the Amazon SQS system. Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes.

  • In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.

  • Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

  • To remove the ability to change queue permissions, you must deny permission to the AddPermission, RemovePermission, and SetQueueAttributes actions in your IAM policy.

", + "TagQueue": "

Add cost allocation tags to the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

When you use queue tags, keep the following guidelines in mind:

For a full list of tag restrictions, see Limits Related to Queues in the Amazon Simple Queue Service Developer Guide.

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

", + "UntagQueue": "

Remove cost allocation tags from the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

" }, "shapes": { "AWSAccountIdList": { @@ -44,7 +44,7 @@ "AttributeNameList": { "base": null, "refs": { - "GetQueueAttributesRequest$AttributeNames": "

A list of attributes for which to retrieve information.

In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.

The following attributes are supported:

The ApproximateNumberOfMessagesDelayed, ApproximateNumberOfMessagesNotVisible, and ApproximateNumberOfMessagesVisible metrics may not achieve consistency until at least 1 minute after the producers stop sending messages. This period is required for the queue metadata to reach eventual consistency.

The following attributes apply only to server-side-encryption:

The following attributes apply only to FIFO (first-in-first-out) queues:

", + "GetQueueAttributesRequest$AttributeNames": "

A list of attributes for which to retrieve information.

In the future, new attributes might be added. If you write code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.

The following attributes are supported:

The ApproximateNumberOfMessagesDelayed, ApproximateNumberOfMessagesNotVisible, and ApproximateNumberOfMessagesVisible metrics may not achieve consistency until at least 1 minute after the producers stop sending messages. This period is required for the queue metadata to reach eventual consistency.

The following attributes apply only to server-side-encryption:

The following attributes apply only to FIFO (first-in-first-out) queues:

Preview: High throughput for FIFO queues

High throughput for Amazon SQS FIFO queues is in preview release and is subject to change. This feature provides a high number of transactions per second (TPS) for messages in FIFO queues. For information on throughput quotas, see Quotas related to messages in the Amazon Simple Queue Service Developer Guide.

This preview includes two new attributes:

To enable high throughput for FIFO queues, do the following:

If you set these attributes to anything other than the values shown for enabling high throughput, standard throughput is in effect and deduplication occurs as specified.

This preview is available in the following AWS Regions:

For more information about high throughput for FIFO queues, see Preview: High throughput for FIFO queues in the Amazon Simple Queue Service Developer Guide.

", "ReceiveMessageRequest$AttributeNames": "

A list of attributes that need to be returned along with each message. These attributes include:

" } }, @@ -372,9 +372,9 @@ "QueueAttributeMap": { "base": null, "refs": { - "CreateQueueRequest$Attributes": "

A map of attributes with their corresponding values.

The following lists the names, descriptions, and values of the special request parameters that the CreateQueue action uses:

The following attributes apply only to server-side-encryption:

The following attributes apply only to FIFO (first-in-first-out) queues:

", + "CreateQueueRequest$Attributes": "

A map of attributes with their corresponding values.

The following lists the names, descriptions, and values of the special request parameters that the CreateQueue action uses:

The following attributes apply only to server-side-encryption:

The following attributes apply only to FIFO (first-in-first-out) queues:

Preview: High throughput for FIFO queues

High throughput for Amazon SQS FIFO queues is in preview release and is subject to change. This feature provides a high number of transactions per second (TPS) for messages in FIFO queues. For information on throughput quotas, see Quotas related to messages in the Amazon Simple Queue Service Developer Guide.

This preview includes two new attributes:

To enable high throughput for FIFO queues, do the following:

If you set these attributes to anything other than the values shown for enabling high throughput, standard throughput is in effect and deduplication occurs as specified.

This preview is available in the following AWS Regions:

For more information about high throughput for FIFO queues, see Preview: High throughput for FIFO queues in the Amazon Simple Queue Service Developer Guide.

", "GetQueueAttributesResult$Attributes": "

A map of attributes to their respective values.

", - "SetQueueAttributesRequest$Attributes": "

A map of attributes to set.

The following lists the names, descriptions, and values of the special request parameters that the SetQueueAttributes action uses:

The following attributes apply only to server-side-encryption:

The following attribute applies only to FIFO (first-in-first-out) queues:

" + "SetQueueAttributesRequest$Attributes": "

A map of attributes to set.

The following lists the names, descriptions, and values of the special request parameters that the SetQueueAttributes action uses:

The following attributes apply only to server-side-encryption:

The following attribute applies only to FIFO (first-in-first-out) queues:

Preview: High throughput for FIFO queues

High throughput for Amazon SQS FIFO queues is in preview release and is subject to change. This feature provides a high number of transactions per second (TPS) for messages in FIFO queues. For information on throughput quotas, see Quotas related to messages in the Amazon Simple Queue Service Developer Guide.

This preview includes two new attributes:

To enable high throughput for FIFO queues, do the following:

If you set these attributes to anything other than the values shown for enabling high throughput, standard throughput is in effect and deduplication occurs as specified.

This preview is available in the following AWS Regions:

For more information about high throughput for FIFO queues, see Preview: High throughput for FIFO queues in the Amazon Simple Queue Service Developer Guide.

" } }, "QueueAttributeName": { @@ -574,7 +574,7 @@ "TagMap": { "base": null, "refs": { - "CreateQueueRequest$tags": "

Add cost allocation tags to the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

When you use queue tags, keep the following guidelines in mind:

For a full list of tag restrictions, see Limits Related to Queues in the Amazon Simple Queue Service Developer Guide.

To be able to tag a queue on creation, you must have the sqs:CreateQueue and sqs:TagQueue permissions.

Cross-account permissions don't apply to this action. For more information, see Grant Cross-Account Permissions to a Role and a User Name in the Amazon Simple Queue Service Developer Guide.

", + "CreateQueueRequest$tags": "

Add cost allocation tags to the specified Amazon SQS queue. For an overview, see Tagging Your Amazon SQS Queues in the Amazon Simple Queue Service Developer Guide.

When you use queue tags, keep the following guidelines in mind:

For a full list of tag restrictions, see Limits Related to Queues in the Amazon Simple Queue Service Developer Guide.

To be able to tag a queue on creation, you must have the sqs:CreateQueue and sqs:TagQueue permissions.

Cross-account permissions don't apply to this action. For more information, see Grant cross-account permissions to a role and a user name in the Amazon Simple Queue Service Developer Guide.

", "ListQueueTagsResult$Tags": "

The list of all tags added to the specified queue.

", "TagQueueRequest$Tags": "

The list of tags to be added to the specified queue.

" } diff --git a/models/endpoints/endpoints.json b/models/endpoints/endpoints.json index 1771c86b7d..afef4b477b 100644 --- a/models/endpoints/endpoints.json +++ b/models/endpoints/endpoints.json @@ -714,6 +714,30 @@ "eu-west-1" : { }, "eu-west-2" : { }, "eu-west-3" : { }, + "fips-us-east-1" : { + "credentialScope" : { + "region" : "us-east-1" + }, + "hostname" : "athena-fips.us-east-1.amazonaws.com" + }, + "fips-us-east-2" : { + "credentialScope" : { + "region" : "us-east-2" + }, + "hostname" : "athena-fips.us-east-2.amazonaws.com" + }, + "fips-us-west-1" : { + "credentialScope" : { + "region" : "us-west-1" + }, + "hostname" : "athena-fips.us-west-1.amazonaws.com" + }, + "fips-us-west-2" : { + "credentialScope" : { + "region" : "us-west-2" + }, + "hostname" : "athena-fips.us-west-2.amazonaws.com" + }, "me-south-1" : { }, "sa-east-1" : { }, "us-east-1" : { }, @@ -9283,6 +9307,11 @@ } } }, + "secretsmanager" : { + "endpoints" : { + "us-iso-east-1" : { } + } + }, "snowball" : { "endpoints" : { "us-iso-east-1" : { } diff --git a/service/configservice/api.go b/service/configservice/api.go index 8c05a4146b..a844295b83 100644 --- a/service/configservice/api.go +++ b/service/configservice/api.go @@ -3067,10 +3067,6 @@ func (c *ConfigService) DescribeOrganizationConfigRuleStatusesRequest(input *Des // // Provides organization config rule deployment status for an organization. // -// Only a master account and a delegated administrator account can call this -// API. When calling this API with a delegated administrator, you must ensure -// AWS Organizations ListDelegatedAdministrator permissions are added. -// // The status is not considered successful until organization config rule is // successfully deployed in all the member accounts with an exception of excluded // accounts. @@ -3174,10 +3170,6 @@ func (c *ConfigService) DescribeOrganizationConfigRulesRequest(input *DescribeOr // // Returns a list of organization config rules. // -// Only a master account and a delegated administrator account can call this -// API. When calling this API with a delegated administrator, you must ensure -// AWS Organizations ListDelegatedAdministrator permissions are added. -// // When you specify the limit and the next token, you receive a paginated response. // Limit and next token are not applicable if you specify organization config // rule names. It is only applicable, when you request all the organization @@ -3277,10 +3269,6 @@ func (c *ConfigService) DescribeOrganizationConformancePackStatusesRequest(input // // Provides organization conformance pack deployment status for an organization. // -// Only a master account and a delegated administrator account can call this -// API. When calling this API with a delegated administrator, you must ensure -// AWS Organizations ListDelegatedAdministrator permissions are added. -// // The status is not considered successful until organization conformance pack // is successfully deployed in all the member accounts with an exception of // excluded accounts. @@ -3388,10 +3376,6 @@ func (c *ConfigService) DescribeOrganizationConformancePacksRequest(input *Descr // // Returns a list of organization conformance packs. // -// Only a master account and a delegated administrator account can call this -// API. When calling this API with a delegated administrator, you must ensure -// AWS Organizations ListDelegatedAdministrator permissions are added. -// // When you specify the limit and the next token, you receive a paginated response. // // Limit and next token are not applicable if you specify organization conformance @@ -5051,10 +5035,6 @@ func (c *ConfigService) GetOrganizationConfigRuleDetailedStatusRequest(input *Ge // Returns detailed status for each member account within an organization for // a given organization config rule. // -// Only a master account and a delegated administrator account can call this -// API. When calling this API with a delegated administrator, you must ensure -// AWS Organizations ListDelegatedAdministrator permissions are added. -// // 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. @@ -5150,10 +5130,6 @@ func (c *ConfigService) GetOrganizationConformancePackDetailedStatusRequest(inpu // Returns detailed status for each member account within an organization for // a given organization conformance pack. // -// Only a master account and a delegated administrator account can call this -// API. When calling this API with a delegated administrator, you must ensure -// AWS Organizations ListDelegatedAdministrator permissions are added. -// // 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. @@ -6471,6 +6447,89 @@ func (c *ConfigService) PutEvaluationsWithContext(ctx aws.Context, input *PutEva return out, req.Send() } +const opPutExternalEvaluation = "PutExternalEvaluation" + +// PutExternalEvaluationRequest generates a "aws/request.Request" representing the +// client's request for the PutExternalEvaluation 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 PutExternalEvaluation for more information on using the PutExternalEvaluation +// 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 PutExternalEvaluationRequest method. +// req, resp := client.PutExternalEvaluationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/PutExternalEvaluation +func (c *ConfigService) PutExternalEvaluationRequest(input *PutExternalEvaluationInput) (req *request.Request, output *PutExternalEvaluationOutput) { + op := &request.Operation{ + Name: opPutExternalEvaluation, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &PutExternalEvaluationInput{} + } + + output = &PutExternalEvaluationOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// PutExternalEvaluation API operation for AWS Config. +// +// 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 AWS Config's +// API operation PutExternalEvaluation for usage and error information. +// +// Returned Error Types: +// * NoSuchConfigRuleException +// One or more AWS Config rules in the request are invalid. Verify that the +// rule names are correct and try again. +// +// * InvalidParameterValueException +// One or more of the specified parameters are invalid. Verify that your parameters +// are valid and try again. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/PutExternalEvaluation +func (c *ConfigService) PutExternalEvaluation(input *PutExternalEvaluationInput) (*PutExternalEvaluationOutput, error) { + req, out := c.PutExternalEvaluationRequest(input) + return out, req.Send() +} + +// PutExternalEvaluationWithContext is the same as PutExternalEvaluation with the addition of +// the ability to pass a context and additional request options. +// +// See PutExternalEvaluation 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 *ConfigService) PutExternalEvaluationWithContext(ctx aws.Context, input *PutExternalEvaluationInput, opts ...request.Option) (*PutExternalEvaluationOutput, error) { + req, out := c.PutExternalEvaluationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opPutOrganizationConfigRule = "PutOrganizationConfigRule" // PutOrganizationConfigRuleRequest generates a "aws/request.Request" representing the @@ -6874,6 +6933,10 @@ func (c *ConfigService) PutRemediationConfigurationsRequest(input *PutRemediatio // If you make backward incompatible changes to the SSM document, you must call // this again to ensure the remediations can run. // +// This API does not support adding remediation configurations for service-linked +// AWS Config Rules such as Organization Config rules, the rules deployed by +// conformance packs, and rules deployed by AWS Security Hub. +// // 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. @@ -6970,7 +7033,7 @@ func (c *ConfigService) PutRemediationExceptionsRequest(input *PutRemediationExc // PutRemediationExceptions API operation for AWS Config. // // A remediation exception is when a specific resource is no longer considered -// for auto-remediation. This API adds a new exception or updates an exisiting +// for auto-remediation. This API adds a new exception or updates an existing // exception for a specific resource with a specific AWS Config rule. // // AWS Config generates a remediation exception when a problem occurs executing @@ -9865,7 +9928,7 @@ type ConfigurationItem struct { // The 12-digit AWS account ID associated with the resource. AccountId *string `locationName:"accountId" type:"string"` - // accoun + // Amazon Resource Name (ARN) associated with the resource. Arn *string `locationName:"arn" type:"string"` // The Availability Zone associated with the resource. @@ -10312,11 +10375,14 @@ type ConformancePackDetail struct { // AWS service that created the conformance pack. CreatedBy *string `min:"1" type:"string"` - // Conformance pack template that is used to create a pack. The delivery bucket - // name should start with awsconfigconforms. For example: "Resource": "arn:aws:s3:::your_bucket_name/*". + // Amazon S3 bucket where AWS Config stores conformance pack templates. + // + // This field is optional. DeliveryS3Bucket *string `type:"string"` // The prefix for the Amazon S3 bucket. + // + // This field is optional. DeliveryS3KeyPrefix *string `type:"string"` // Last time when conformation pack update was requested. @@ -14097,6 +14163,95 @@ func (s *ExecutionControls) SetSsmControls(v *SsmControls) *ExecutionControls { return s } +type ExternalEvaluation struct { + _ struct{} `type:"structure"` + + Annotation *string `min:"1" type:"string"` + + // ComplianceResourceId is a required field + ComplianceResourceId *string `min:"1" type:"string" required:"true"` + + // ComplianceResourceType is a required field + ComplianceResourceType *string `min:"1" type:"string" required:"true"` + + // ComplianceType is a required field + ComplianceType *string `type:"string" required:"true" enum:"ComplianceType"` + + // OrderingTimestamp is a required field + OrderingTimestamp *time.Time `type:"timestamp" required:"true"` +} + +// String returns the string representation +func (s ExternalEvaluation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExternalEvaluation) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ExternalEvaluation) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ExternalEvaluation"} + if s.Annotation != nil && len(*s.Annotation) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Annotation", 1)) + } + if s.ComplianceResourceId == nil { + invalidParams.Add(request.NewErrParamRequired("ComplianceResourceId")) + } + if s.ComplianceResourceId != nil && len(*s.ComplianceResourceId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ComplianceResourceId", 1)) + } + if s.ComplianceResourceType == nil { + invalidParams.Add(request.NewErrParamRequired("ComplianceResourceType")) + } + if s.ComplianceResourceType != nil && len(*s.ComplianceResourceType) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ComplianceResourceType", 1)) + } + if s.ComplianceType == nil { + invalidParams.Add(request.NewErrParamRequired("ComplianceType")) + } + if s.OrderingTimestamp == nil { + invalidParams.Add(request.NewErrParamRequired("OrderingTimestamp")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAnnotation sets the Annotation field's value. +func (s *ExternalEvaluation) SetAnnotation(v string) *ExternalEvaluation { + s.Annotation = &v + return s +} + +// SetComplianceResourceId sets the ComplianceResourceId field's value. +func (s *ExternalEvaluation) SetComplianceResourceId(v string) *ExternalEvaluation { + s.ComplianceResourceId = &v + return s +} + +// SetComplianceResourceType sets the ComplianceResourceType field's value. +func (s *ExternalEvaluation) SetComplianceResourceType(v string) *ExternalEvaluation { + s.ComplianceResourceType = &v + return s +} + +// SetComplianceType sets the ComplianceType field's value. +func (s *ExternalEvaluation) SetComplianceType(v string) *ExternalEvaluation { + s.ComplianceType = &v + return s +} + +// SetOrderingTimestamp sets the OrderingTimestamp field's value. +func (s *ExternalEvaluation) SetOrderingTimestamp(v time.Time) *ExternalEvaluation { + s.OrderingTimestamp = &v + return s +} + // List of each of the failed delete remediation exceptions with specific reasons. type FailedDeleteRemediationExceptionsBatch struct { _ struct{} `type:"structure"` @@ -16678,9 +16833,9 @@ type ListAggregateDiscoveredResourcesInput struct { // Filters the results based on the ResourceFilters object. Filters *ResourceFilters `type:"structure"` - // The maximum number of resource identifiers returned on each page. The default - // is 100. You cannot specify a number greater than 100. If you specify 0, AWS - // Config uses the default. + // The maximum number of resource identifiers returned on each page. You cannot + // specify a number greater than 100. If you specify 0, AWS Config uses the + // default. Limit *int64 `type:"integer"` // The nextToken string returned on a previous page that you use to get the @@ -18835,11 +18990,14 @@ type OrganizationConformancePack struct { // A list of ConformancePackInputParameter objects. ConformancePackInputParameters []*ConformancePackInputParameter `type:"list"` - // Location of an Amazon S3 bucket where AWS Config can deliver evaluation results - // and conformance pack template that is used to create a pack. + // Amazon S3 bucket where AWS Config stores conformance pack templates. + // + // This field is optional. DeliveryS3Bucket *string `type:"string"` // Any folder structure you want to add to an Amazon S3 bucket. + // + // This field is optional. DeliveryS3KeyPrefix *string `type:"string"` // A comma-separated list of accounts excluded from organization conformance @@ -19990,10 +20148,14 @@ type PutConformancePackInput struct { // ConformancePackName is a required field ConformancePackName *string `min:"1" type:"string" required:"true"` - // AWS Config stores intermediate files while processing conformance pack template. + // Amazon S3 bucket where AWS Config stores conformance pack templates. + // + // This field is optional. DeliveryS3Bucket *string `type:"string"` // The prefix for the Amazon S3 bucket. + // + // This field is optional. DeliveryS3KeyPrefix *string `type:"string"` // A string containing full conformance pack template body. Structure containing @@ -20270,6 +20432,76 @@ func (s *PutEvaluationsOutput) SetFailedEvaluations(v []*Evaluation) *PutEvaluat return s } +type PutExternalEvaluationInput struct { + _ struct{} `type:"structure"` + + // ConfigRuleName is a required field + ConfigRuleName *string `min:"1" type:"string" required:"true"` + + // ExternalEvaluation is a required field + ExternalEvaluation *ExternalEvaluation `type:"structure" required:"true"` +} + +// String returns the string representation +func (s PutExternalEvaluationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutExternalEvaluationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutExternalEvaluationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutExternalEvaluationInput"} + if s.ConfigRuleName == nil { + invalidParams.Add(request.NewErrParamRequired("ConfigRuleName")) + } + if s.ConfigRuleName != nil && len(*s.ConfigRuleName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ConfigRuleName", 1)) + } + if s.ExternalEvaluation == nil { + invalidParams.Add(request.NewErrParamRequired("ExternalEvaluation")) + } + if s.ExternalEvaluation != nil { + if err := s.ExternalEvaluation.Validate(); err != nil { + invalidParams.AddNested("ExternalEvaluation", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetConfigRuleName sets the ConfigRuleName field's value. +func (s *PutExternalEvaluationInput) SetConfigRuleName(v string) *PutExternalEvaluationInput { + s.ConfigRuleName = &v + return s +} + +// SetExternalEvaluation sets the ExternalEvaluation field's value. +func (s *PutExternalEvaluationInput) SetExternalEvaluation(v *ExternalEvaluation) *PutExternalEvaluationInput { + s.ExternalEvaluation = v + return s +} + +type PutExternalEvaluationOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s PutExternalEvaluationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutExternalEvaluationOutput) GoString() string { + return s.String() +} + type PutOrganizationConfigRuleInput struct { _ struct{} `type:"structure"` @@ -20378,15 +20610,14 @@ type PutOrganizationConformancePackInput struct { // A list of ConformancePackInputParameter objects. ConformancePackInputParameters []*ConformancePackInputParameter `type:"list"` - // Location of an Amazon S3 bucket where AWS Config can deliver evaluation results. - // AWS Config stores intermediate files while processing conformance pack template. + // Amazon S3 bucket where AWS Config stores conformance pack templates. // - // The delivery bucket name should start with awsconfigconforms. For example: - // "Resource": "arn:aws:s3:::your_bucket_name/*". For more information, see - // Permissions for cross account bucket access (https://docs.aws.amazon.com/config/latest/developerguide/conformance-pack-organization-apis.html). + // This field is optional. DeliveryS3Bucket *string `type:"string"` // The prefix for the Amazon S3 bucket. + // + // This field is optional. DeliveryS3KeyPrefix *string `type:"string"` // A list of AWS accounts to be excluded from an organization conformance pack @@ -21100,7 +21331,7 @@ type RemediationConfiguration struct { // The maximum number of failed attempts for auto-remediation. If you do not // select a number, the default is 5. // - // For example, if you specify MaximumAutomaticAttempts as 5 with RetryAttemptsSeconds + // For example, if you specify MaximumAutomaticAttempts as 5 with RetryAttemptSeconds // as 50 seconds, AWS Config will put a RemediationException on your behalf // for the failing resource after the 5th failed attempt within 50 seconds. MaximumAutomaticAttempts *int64 `min:"1" type:"integer"` @@ -21114,7 +21345,7 @@ type RemediationConfiguration struct { // Maximum time in seconds that AWS Config runs auto-remediation. If you do // not select a number, the default is 60 seconds. // - // For example, if you specify RetryAttemptsSeconds as 50 seconds and MaximumAutomaticAttempts + // For example, if you specify RetryAttemptSeconds as 50 seconds and MaximumAutomaticAttempts // as 5, AWS Config will run auto-remediations 5 times within 50 seconds before // throwing an exception. RetryAttemptSeconds *int64 `min:"1" type:"long"` diff --git a/service/configservice/configserviceiface/interface.go b/service/configservice/configserviceiface/interface.go index e299b33180..dfdeeaaab7 100644 --- a/service/configservice/configserviceiface/interface.go +++ b/service/configservice/configserviceiface/interface.go @@ -329,6 +329,10 @@ type ConfigServiceAPI interface { PutEvaluationsWithContext(aws.Context, *configservice.PutEvaluationsInput, ...request.Option) (*configservice.PutEvaluationsOutput, error) PutEvaluationsRequest(*configservice.PutEvaluationsInput) (*request.Request, *configservice.PutEvaluationsOutput) + PutExternalEvaluation(*configservice.PutExternalEvaluationInput) (*configservice.PutExternalEvaluationOutput, error) + PutExternalEvaluationWithContext(aws.Context, *configservice.PutExternalEvaluationInput, ...request.Option) (*configservice.PutExternalEvaluationOutput, error) + PutExternalEvaluationRequest(*configservice.PutExternalEvaluationInput) (*request.Request, *configservice.PutExternalEvaluationOutput) + PutOrganizationConfigRule(*configservice.PutOrganizationConfigRuleInput) (*configservice.PutOrganizationConfigRuleOutput, error) PutOrganizationConfigRuleWithContext(aws.Context, *configservice.PutOrganizationConfigRuleInput, ...request.Option) (*configservice.PutOrganizationConfigRuleOutput, error) PutOrganizationConfigRuleRequest(*configservice.PutOrganizationConfigRuleInput) (*request.Request, *configservice.PutOrganizationConfigRuleOutput) diff --git a/service/dlm/api.go b/service/dlm/api.go index 8062b5e9cd..f1a22ce39d 100644 --- a/service/dlm/api.go +++ b/service/dlm/api.go @@ -707,6 +707,69 @@ func (c *DLM) UpdateLifecyclePolicyWithContext(ctx aws.Context, input *UpdateLif return out, req.Send() } +// Specifies an action for an event-based policy. +type Action struct { + _ struct{} `type:"structure"` + + // The rule for copying shared snapshots across Regions. + // + // CrossRegionCopy is a required field + CrossRegionCopy []*CrossRegionCopyAction `type:"list" required:"true"` + + // A descriptive name for the action. + // + // Name is a required field + Name *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s Action) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Action) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Action) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Action"} + if s.CrossRegionCopy == nil { + invalidParams.Add(request.NewErrParamRequired("CrossRegionCopy")) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.CrossRegionCopy != nil { + for i, v := range s.CrossRegionCopy { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CrossRegionCopy", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCrossRegionCopy sets the CrossRegionCopy field's value. +func (s *Action) SetCrossRegionCopy(v []*CrossRegionCopyAction) *Action { + s.CrossRegionCopy = v + return s +} + +// SetName sets the Name field's value. +func (s *Action) SetName(v string) *Action { + s.Name = &v + return s +} + type CreateLifecyclePolicyInput struct { _ struct{} `type:"structure"` @@ -906,6 +969,78 @@ func (s *CreateRule) SetTimes(v []*string) *CreateRule { return s } +// Specifies a rule for copying shared snapshots across Regions. +type CrossRegionCopyAction struct { + _ struct{} `type:"structure"` + + // The encryption settings for the copied snapshot. + // + // EncryptionConfiguration is a required field + EncryptionConfiguration *EncryptionConfiguration `type:"structure" required:"true"` + + // Specifies the retention rule for cross-Region snapshot copies. + RetainRule *CrossRegionCopyRetainRule `type:"structure"` + + // The target Region. + // + // Target is a required field + Target *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CrossRegionCopyAction) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CrossRegionCopyAction) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CrossRegionCopyAction) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CrossRegionCopyAction"} + if s.EncryptionConfiguration == nil { + invalidParams.Add(request.NewErrParamRequired("EncryptionConfiguration")) + } + if s.Target == nil { + invalidParams.Add(request.NewErrParamRequired("Target")) + } + if s.EncryptionConfiguration != nil { + if err := s.EncryptionConfiguration.Validate(); err != nil { + invalidParams.AddNested("EncryptionConfiguration", err.(request.ErrInvalidParams)) + } + } + if s.RetainRule != nil { + if err := s.RetainRule.Validate(); err != nil { + invalidParams.AddNested("RetainRule", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEncryptionConfiguration sets the EncryptionConfiguration field's value. +func (s *CrossRegionCopyAction) SetEncryptionConfiguration(v *EncryptionConfiguration) *CrossRegionCopyAction { + s.EncryptionConfiguration = v + return s +} + +// SetRetainRule sets the RetainRule field's value. +func (s *CrossRegionCopyAction) SetRetainRule(v *CrossRegionCopyRetainRule) *CrossRegionCopyAction { + s.RetainRule = v + return s +} + +// SetTarget sets the Target field's value. +func (s *CrossRegionCopyAction) SetTarget(v string) *CrossRegionCopyAction { + s.Target = &v + return s +} + // Specifies the retention rule for cross-Region snapshot copies. type CrossRegionCopyRetainRule struct { _ struct{} `type:"structure"` @@ -1098,6 +1233,190 @@ func (s DeleteLifecyclePolicyOutput) GoString() string { return s.String() } +// Specifies the encryption settings for shared snapshots that are copied across +// Regions. +type EncryptionConfiguration struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the AWS KMS customer master key (CMK) to + // use for EBS encryption. If this parameter is not specified, your AWS managed + // CMK for EBS is used. + CmkArn *string `type:"string"` + + // To encrypt a copy of an unencrypted snapshot when encryption by default is + // not enabled, enable encryption using this parameter. Copies of encrypted + // snapshots are encrypted, even if this parameter is false or when encryption + // by default is not enabled. + // + // Encrypted is a required field + Encrypted *bool `type:"boolean" required:"true"` +} + +// String returns the string representation +func (s EncryptionConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EncryptionConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EncryptionConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EncryptionConfiguration"} + if s.Encrypted == nil { + invalidParams.Add(request.NewErrParamRequired("Encrypted")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCmkArn sets the CmkArn field's value. +func (s *EncryptionConfiguration) SetCmkArn(v string) *EncryptionConfiguration { + s.CmkArn = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *EncryptionConfiguration) SetEncrypted(v bool) *EncryptionConfiguration { + s.Encrypted = &v + return s +} + +// Specifies an event that triggers an event-based policy. +type EventParameters struct { + _ struct{} `type:"structure"` + + // The snapshot description that can trigger the policy. The description pattern + // is specified using a regular expression. The policy runs only if a snapshot + // with a description that matches the specified pattern is shared with your + // account. + // + // For example, specifying ^.*Created for policy: policy-1234567890abcdef0.*$ + // configures the policy to run only if snapshots created by policy policy-1234567890abcdef0 + // are shared with your account. + // + // DescriptionRegex is a required field + DescriptionRegex *string `type:"string" required:"true"` + + // The type of event. Currently, only snapshot sharing events are supported. + // + // EventType is a required field + EventType *string `type:"string" required:"true" enum:"EventTypeValues"` + + // The IDs of the AWS accounts that can trigger policy by sharing snapshots + // with your account. The policy only runs if one of the specified AWS accounts + // shares a snapshot with your account. + // + // SnapshotOwner is a required field + SnapshotOwner []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s EventParameters) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EventParameters) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EventParameters) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EventParameters"} + if s.DescriptionRegex == nil { + invalidParams.Add(request.NewErrParamRequired("DescriptionRegex")) + } + if s.EventType == nil { + invalidParams.Add(request.NewErrParamRequired("EventType")) + } + if s.SnapshotOwner == nil { + invalidParams.Add(request.NewErrParamRequired("SnapshotOwner")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescriptionRegex sets the DescriptionRegex field's value. +func (s *EventParameters) SetDescriptionRegex(v string) *EventParameters { + s.DescriptionRegex = &v + return s +} + +// SetEventType sets the EventType field's value. +func (s *EventParameters) SetEventType(v string) *EventParameters { + s.EventType = &v + return s +} + +// SetSnapshotOwner sets the SnapshotOwner field's value. +func (s *EventParameters) SetSnapshotOwner(v []*string) *EventParameters { + s.SnapshotOwner = v + return s +} + +// Specifies an event that triggers an event-based policy. +type EventSource struct { + _ struct{} `type:"structure"` + + // Information about the event. + Parameters *EventParameters `type:"structure"` + + // The source of the event. Currently only managed AWS CloudWatch Events rules + // are supported. + // + // Type is a required field + Type *string `type:"string" required:"true" enum:"EventSourceValues"` +} + +// String returns the string representation +func (s EventSource) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EventSource) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EventSource) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EventSource"} + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + if s.Parameters != nil { + if err := s.Parameters.Validate(); err != nil { + invalidParams.AddNested("Parameters", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetParameters sets the Parameters field's value. +func (s *EventSource) SetParameters(v *EventParameters) *EventSource { + s.Parameters = v + return s +} + +// SetType sets the Type field's value. +func (s *EventSource) SetType(v string) *EventSource { + s.Type = &v + return s +} + // Specifies a rule for enabling fast snapshot restore. You can enable fast // snapshot restore based on either a count or a time interval. type FastRestoreRule struct { @@ -1772,7 +2091,7 @@ type Parameters struct { // Applies to AMI lifecycle policies only. Indicates whether targeted instances // are rebooted when the lifecycle policy runs. true indicates that targeted // instances are not rebooted when the policy runs. false indicates that target - // instances are rebooted when the policy runs. The default is true (instance + // instances are rebooted when the policy runs. The default is true (instances // are not rebooted). NoReboot *bool `type:"boolean"` } @@ -1803,24 +2122,55 @@ func (s *Parameters) SetNoReboot(v bool) *Parameters { type PolicyDetails struct { _ struct{} `type:"structure"` - // A set of optional parameters for the policy. + // The actions to be performed when the event-based policy is triggered. You + // can specify only one action per policy. + // + // This parameter is required for event-based policies only. If you are creating + // a snapshot or AMI policy, omit this parameter. + Actions []*Action `min:"1" type:"list"` + + // The event that triggers the event-based policy. + // + // This parameter is required for event-based policies only. If you are creating + // a snapshot or AMI policy, omit this parameter. + EventSource *EventSource `type:"structure"` + + // A set of optional parameters for snapshot and AMI lifecycle policies. + // + // This parameter is required for snapshot and AMI policies only. If you are + // creating an event-based policy, omit this parameter. Parameters *Parameters `type:"structure"` // The valid target resource types and actions a policy can manage. Specify // EBS_SNAPSHOT_MANAGEMENT to create a lifecycle policy that manages the lifecycle // of Amazon EBS snapshots. Specify IMAGE_MANAGEMENT to create a lifecycle policy - // that manages the lifecycle of EBS-backed AMIs. The default is EBS_SNAPSHOT_MANAGEMENT. + // that manages the lifecycle of EBS-backed AMIs. Specify EVENT_BASED_POLICY + // to create an event-based policy that performs specific actions when a defined + // event occurs in your AWS account. + // + // The default is EBS_SNAPSHOT_MANAGEMENT. PolicyType *string `type:"string" enum:"PolicyTypeValues"` - // The resource type. Use VOLUME to create snapshots of individual volumes or - // use INSTANCE to create multi-volume snapshots from the volumes for an instance. + // The target resource type for snapshot and AMI lifecycle policies. Use VOLUME + // to create snapshots of individual volumes or use INSTANCE to create multi-volume + // snapshots from the volumes for an instance. + // + // This parameter is required for snapshot and AMI policies only. If you are + // creating an event-based policy, omit this parameter. ResourceTypes []*string `min:"1" type:"list"` - // The schedules of policy-defined actions. A policy can have up to four schedules - // - one mandatory schedule and up to three optional schedules. + // The schedules of policy-defined actions for snapshot and AMI lifecycle policies. + // A policy can have up to four schedules—one mandatory schedule and up to + // three optional schedules. + // + // This parameter is required for snapshot and AMI policies only. If you are + // creating an event-based policy, omit this parameter. Schedules []*Schedule `min:"1" type:"list"` // The single tag that identifies targeted resources for this policy. + // + // This parameter is required for snapshot and AMI policies only. If you are + // creating an event-based policy, omit this parameter. TargetTags []*Tag `min:"1" type:"list"` } @@ -1837,6 +2187,9 @@ func (s PolicyDetails) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *PolicyDetails) Validate() error { invalidParams := request.ErrInvalidParams{Context: "PolicyDetails"} + if s.Actions != nil && len(s.Actions) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Actions", 1)) + } if s.ResourceTypes != nil && len(s.ResourceTypes) < 1 { invalidParams.Add(request.NewErrParamMinLen("ResourceTypes", 1)) } @@ -1846,6 +2199,21 @@ func (s *PolicyDetails) Validate() error { if s.TargetTags != nil && len(s.TargetTags) < 1 { invalidParams.Add(request.NewErrParamMinLen("TargetTags", 1)) } + if s.Actions != nil { + for i, v := range s.Actions { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams)) + } + } + } + if s.EventSource != nil { + if err := s.EventSource.Validate(); err != nil { + invalidParams.AddNested("EventSource", err.(request.ErrInvalidParams)) + } + } if s.Schedules != nil { for i, v := range s.Schedules { if v == nil { @@ -1873,6 +2241,18 @@ func (s *PolicyDetails) Validate() error { return nil } +// SetActions sets the Actions field's value. +func (s *PolicyDetails) SetActions(v []*Action) *PolicyDetails { + s.Actions = v + return s +} + +// SetEventSource sets the EventSource field's value. +func (s *PolicyDetails) SetEventSource(v *EventSource) *PolicyDetails { + s.EventSource = v + return s +} + // SetParameters sets the Parameters field's value. func (s *PolicyDetails) SetParameters(v *Parameters) *PolicyDetails { s.Parameters = v @@ -2027,7 +2407,7 @@ func (s *RetainRule) SetIntervalUnit(v string) *RetainRule { return s } -// Specifies a backup schedule. +// Specifies a backup schedule for a snapshot or AMI lifecycle policy. type Schedule struct { _ struct{} `type:"structure"` @@ -2050,6 +2430,9 @@ type Schedule struct { // The retention rule. RetainRule *RetainRule `type:"structure"` + // The rule for sharing snapshots with other AWS accounts. + ShareRules []*ShareRule `type:"list"` + // The tags to apply to policy-created resources. These user-defined tags are // in addition to the AWS-added lifecycle tags. TagsToAdd []*Tag `type:"list"` @@ -2099,6 +2482,16 @@ func (s *Schedule) Validate() error { invalidParams.AddNested("RetainRule", err.(request.ErrInvalidParams)) } } + if s.ShareRules != nil { + for i, v := range s.ShareRules { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ShareRules", i), err.(request.ErrInvalidParams)) + } + } + } if s.TagsToAdd != nil { for i, v := range s.TagsToAdd { if v == nil { @@ -2162,6 +2555,12 @@ func (s *Schedule) SetRetainRule(v *RetainRule) *Schedule { return s } +// SetShareRules sets the ShareRules field's value. +func (s *Schedule) SetShareRules(v []*ShareRule) *Schedule { + s.ShareRules = v + return s +} + // SetTagsToAdd sets the TagsToAdd field's value. func (s *Schedule) SetTagsToAdd(v []*Tag) *Schedule { s.TagsToAdd = v @@ -2174,6 +2573,70 @@ func (s *Schedule) SetVariableTags(v []*Tag) *Schedule { return s } +// Specifies a rule for sharing snapshots across AWS accounts. +type ShareRule struct { + _ struct{} `type:"structure"` + + // The IDs of the AWS accounts with which to share the snapshots. + // + // TargetAccounts is a required field + TargetAccounts []*string `min:"1" type:"list" required:"true"` + + // The period after which snapshots that are shared with other AWS accounts + // are automatically unshared. + UnshareInterval *int64 `min:"1" type:"integer"` + + // The unit of time for the automatic unsharing interval. + UnshareIntervalUnit *string `type:"string" enum:"RetentionIntervalUnitValues"` +} + +// String returns the string representation +func (s ShareRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ShareRule) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ShareRule) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ShareRule"} + if s.TargetAccounts == nil { + invalidParams.Add(request.NewErrParamRequired("TargetAccounts")) + } + if s.TargetAccounts != nil && len(s.TargetAccounts) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetAccounts", 1)) + } + if s.UnshareInterval != nil && *s.UnshareInterval < 1 { + invalidParams.Add(request.NewErrParamMinValue("UnshareInterval", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetTargetAccounts sets the TargetAccounts field's value. +func (s *ShareRule) SetTargetAccounts(v []*string) *ShareRule { + s.TargetAccounts = v + return s +} + +// SetUnshareInterval sets the UnshareInterval field's value. +func (s *ShareRule) SetUnshareInterval(v int64) *ShareRule { + s.UnshareInterval = &v + return s +} + +// SetUnshareIntervalUnit sets the UnshareIntervalUnit field's value. +func (s *ShareRule) SetUnshareIntervalUnit(v string) *ShareRule { + s.UnshareIntervalUnit = &v + return s +} + // Specifies a tag for a resource. type Tag struct { _ struct{} `type:"structure"` @@ -2469,6 +2932,30 @@ func (s UpdateLifecyclePolicyOutput) GoString() string { return s.String() } +const ( + // EventSourceValuesManagedCwe is a EventSourceValues enum value + EventSourceValuesManagedCwe = "MANAGED_CWE" +) + +// EventSourceValues_Values returns all elements of the EventSourceValues enum +func EventSourceValues_Values() []string { + return []string{ + EventSourceValuesManagedCwe, + } +} + +const ( + // EventTypeValuesShareSnapshot is a EventTypeValues enum value + EventTypeValuesShareSnapshot = "shareSnapshot" +) + +// EventTypeValues_Values returns all elements of the EventTypeValues enum +func EventTypeValues_Values() []string { + return []string{ + EventTypeValuesShareSnapshot, + } +} + const ( // GettablePolicyStateValuesEnabled is a GettablePolicyStateValues enum value GettablePolicyStateValuesEnabled = "ENABLED" @@ -2507,6 +2994,9 @@ const ( // PolicyTypeValuesImageManagement is a PolicyTypeValues enum value PolicyTypeValuesImageManagement = "IMAGE_MANAGEMENT" + + // PolicyTypeValuesEventBasedPolicy is a PolicyTypeValues enum value + PolicyTypeValuesEventBasedPolicy = "EVENT_BASED_POLICY" ) // PolicyTypeValues_Values returns all elements of the PolicyTypeValues enum @@ -2514,6 +3004,7 @@ func PolicyTypeValues_Values() []string { return []string{ PolicyTypeValuesEbsSnapshotManagement, PolicyTypeValuesImageManagement, + PolicyTypeValuesEventBasedPolicy, } } diff --git a/service/ec2/api.go b/service/ec2/api.go index a3bff97b6e..e5f8bd426e 100644 --- a/service/ec2/api.go +++ b/service/ec2/api.go @@ -123712,6 +123712,30 @@ const ( // InstanceTypeC6gd16xlarge is a InstanceType enum value InstanceTypeC6gd16xlarge = "c6gd.16xlarge" + // InstanceTypeC6gnMedium is a InstanceType enum value + InstanceTypeC6gnMedium = "c6gn.medium" + + // InstanceTypeC6gnLarge is a InstanceType enum value + InstanceTypeC6gnLarge = "c6gn.large" + + // InstanceTypeC6gnXlarge is a InstanceType enum value + InstanceTypeC6gnXlarge = "c6gn.xlarge" + + // InstanceTypeC6gn2xlarge is a InstanceType enum value + InstanceTypeC6gn2xlarge = "c6gn.2xlarge" + + // InstanceTypeC6gn4xlarge is a InstanceType enum value + InstanceTypeC6gn4xlarge = "c6gn.4xlarge" + + // InstanceTypeC6gn8xlarge is a InstanceType enum value + InstanceTypeC6gn8xlarge = "c6gn.8xlarge" + + // InstanceTypeC6gn12xlarge is a InstanceType enum value + InstanceTypeC6gn12xlarge = "c6gn.12xlarge" + + // InstanceTypeC6gn16xlarge is a InstanceType enum value + InstanceTypeC6gn16xlarge = "c6gn.16xlarge" + // InstanceTypeCc14xlarge is a InstanceType enum value InstanceTypeCc14xlarge = "cc1.4xlarge" @@ -124421,6 +124445,14 @@ func InstanceType_Values() []string { InstanceTypeC6gd8xlarge, InstanceTypeC6gd12xlarge, InstanceTypeC6gd16xlarge, + InstanceTypeC6gnMedium, + InstanceTypeC6gnLarge, + InstanceTypeC6gnXlarge, + InstanceTypeC6gn2xlarge, + InstanceTypeC6gn4xlarge, + InstanceTypeC6gn8xlarge, + InstanceTypeC6gn12xlarge, + InstanceTypeC6gn16xlarge, InstanceTypeCc14xlarge, InstanceTypeCc28xlarge, InstanceTypeG22xlarge, diff --git a/service/imagebuilder/api.go b/service/imagebuilder/api.go index 34775d297a..6074830866 100644 --- a/service/imagebuilder/api.go +++ b/service/imagebuilder/api.go @@ -233,6 +233,121 @@ func (c *Imagebuilder) CreateComponentWithContext(ctx aws.Context, input *Create return out, req.Send() } +const opCreateContainerRecipe = "CreateContainerRecipe" + +// CreateContainerRecipeRequest generates a "aws/request.Request" representing the +// client's request for the CreateContainerRecipe 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 CreateContainerRecipe for more information on using the CreateContainerRecipe +// 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 CreateContainerRecipeRequest method. +// req, resp := client.CreateContainerRecipeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateContainerRecipe +func (c *Imagebuilder) CreateContainerRecipeRequest(input *CreateContainerRecipeInput) (req *request.Request, output *CreateContainerRecipeOutput) { + op := &request.Operation{ + Name: opCreateContainerRecipe, + HTTPMethod: "PUT", + HTTPPath: "/CreateContainerRecipe", + } + + if input == nil { + input = &CreateContainerRecipeInput{} + } + + output = &CreateContainerRecipeOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateContainerRecipe API operation for EC2 Image Builder. +// +// Creates a new container recipe. Container recipes define how images are configured, +// tested, and assessed. +// +// 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 EC2 Image Builder's +// API operation CreateContainerRecipe for usage and error information. +// +// Returned Error Types: +// * ServiceException +// This exception is thrown when the service encounters an unrecoverable exception. +// +// * ClientException +// These errors are usually caused by a client action, such as using an action +// or resource on behalf of a user that doesn't have permissions to use the +// action or resource, or specifying an invalid resource identifier. +// +// * ServiceUnavailableException +// The service is unable to process your request at this time. +// +// * InvalidRequestException +// You have made a request for an action that is not supported by the service. +// +// * IdempotentParameterMismatchException +// You have specified a client token for an operation using parameter values +// that differ from a previous request that used the same client token. +// +// * ForbiddenException +// You are not authorized to perform the requested operation. +// +// * CallRateLimitExceededException +// You have exceeded the permitted request rate for the specific operation. +// +// * InvalidVersionNumberException +// Your version number is out of bounds or does not follow the required syntax. +// +// * ResourceInUseException +// The resource that you are trying to operate on is currently in use. Review +// the message details and retry later. +// +// * ResourceAlreadyExistsException +// The resource that you are trying to create already exists. +// +// * ServiceQuotaExceededException +// You have exceeded the number of permitted resources or operations for this +// service. For service quotas, see EC2 Image Builder endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder). +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/CreateContainerRecipe +func (c *Imagebuilder) CreateContainerRecipe(input *CreateContainerRecipeInput) (*CreateContainerRecipeOutput, error) { + req, out := c.CreateContainerRecipeRequest(input) + return out, req.Send() +} + +// CreateContainerRecipeWithContext is the same as CreateContainerRecipe with the addition of +// the ability to pass a context and additional request options. +// +// See CreateContainerRecipe 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 *Imagebuilder) CreateContainerRecipeWithContext(ctx aws.Context, input *CreateContainerRecipeInput, opts ...request.Option) (*CreateContainerRecipeOutput, error) { + req, out := c.CreateContainerRecipeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateDistributionConfiguration = "CreateDistributionConfiguration" // CreateDistributionConfigurationRequest generates a "aws/request.Request" representing the @@ -897,6 +1012,106 @@ func (c *Imagebuilder) DeleteComponentWithContext(ctx aws.Context, input *Delete return out, req.Send() } +const opDeleteContainerRecipe = "DeleteContainerRecipe" + +// DeleteContainerRecipeRequest generates a "aws/request.Request" representing the +// client's request for the DeleteContainerRecipe 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 DeleteContainerRecipe for more information on using the DeleteContainerRecipe +// 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 DeleteContainerRecipeRequest method. +// req, resp := client.DeleteContainerRecipeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteContainerRecipe +func (c *Imagebuilder) DeleteContainerRecipeRequest(input *DeleteContainerRecipeInput) (req *request.Request, output *DeleteContainerRecipeOutput) { + op := &request.Operation{ + Name: opDeleteContainerRecipe, + HTTPMethod: "DELETE", + HTTPPath: "/DeleteContainerRecipe", + } + + if input == nil { + input = &DeleteContainerRecipeInput{} + } + + output = &DeleteContainerRecipeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteContainerRecipe API operation for EC2 Image Builder. +// +// Deletes a container recipe. +// +// 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 EC2 Image Builder's +// API operation DeleteContainerRecipe for usage and error information. +// +// Returned Error Types: +// * ServiceException +// This exception is thrown when the service encounters an unrecoverable exception. +// +// * ClientException +// These errors are usually caused by a client action, such as using an action +// or resource on behalf of a user that doesn't have permissions to use the +// action or resource, or specifying an invalid resource identifier. +// +// * ServiceUnavailableException +// The service is unable to process your request at this time. +// +// * InvalidRequestException +// You have made a request for an action that is not supported by the service. +// +// * ForbiddenException +// You are not authorized to perform the requested operation. +// +// * CallRateLimitExceededException +// You have exceeded the permitted request rate for the specific operation. +// +// * ResourceDependencyException +// You have attempted to mutate or delete a resource with a dependency that +// prohibits this action. See the error message for more details. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/DeleteContainerRecipe +func (c *Imagebuilder) DeleteContainerRecipe(input *DeleteContainerRecipeInput) (*DeleteContainerRecipeOutput, error) { + req, out := c.DeleteContainerRecipeRequest(input) + return out, req.Send() +} + +// DeleteContainerRecipeWithContext is the same as DeleteContainerRecipe with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteContainerRecipe 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 *Imagebuilder) DeleteContainerRecipeWithContext(ctx aws.Context, input *DeleteContainerRecipeInput, opts ...request.Option) (*DeleteContainerRecipeOutput, error) { + req, out := c.DeleteContainerRecipeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteDistributionConfiguration = "DeleteDistributionConfiguration" // DeleteDistributionConfigurationRequest generates a "aws/request.Request" representing the @@ -1587,58 +1802,58 @@ func (c *Imagebuilder) GetComponentPolicyWithContext(ctx aws.Context, input *Get return out, req.Send() } -const opGetDistributionConfiguration = "GetDistributionConfiguration" +const opGetContainerRecipe = "GetContainerRecipe" -// GetDistributionConfigurationRequest generates a "aws/request.Request" representing the -// client's request for the GetDistributionConfiguration operation. The "output" return +// GetContainerRecipeRequest generates a "aws/request.Request" representing the +// client's request for the GetContainerRecipe 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 GetDistributionConfiguration for more information on using the GetDistributionConfiguration +// See GetContainerRecipe for more information on using the GetContainerRecipe // 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 GetDistributionConfigurationRequest method. -// req, resp := client.GetDistributionConfigurationRequest(params) +// // Example sending a request using the GetContainerRecipeRequest method. +// req, resp := client.GetContainerRecipeRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetDistributionConfiguration -func (c *Imagebuilder) GetDistributionConfigurationRequest(input *GetDistributionConfigurationInput) (req *request.Request, output *GetDistributionConfigurationOutput) { +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipe +func (c *Imagebuilder) GetContainerRecipeRequest(input *GetContainerRecipeInput) (req *request.Request, output *GetContainerRecipeOutput) { op := &request.Operation{ - Name: opGetDistributionConfiguration, + Name: opGetContainerRecipe, HTTPMethod: "GET", - HTTPPath: "/GetDistributionConfiguration", + HTTPPath: "/GetContainerRecipe", } if input == nil { - input = &GetDistributionConfigurationInput{} + input = &GetContainerRecipeInput{} } - output = &GetDistributionConfigurationOutput{} + output = &GetContainerRecipeOutput{} req = c.newRequest(op, input, output) return } -// GetDistributionConfiguration API operation for EC2 Image Builder. +// GetContainerRecipe API operation for EC2 Image Builder. // -// Gets a distribution configuration. +// Retrieves a container recipe. // // 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 EC2 Image Builder's -// API operation GetDistributionConfiguration for usage and error information. +// API operation GetContainerRecipe for usage and error information. // // Returned Error Types: // * ServiceException @@ -1661,176 +1876,174 @@ func (c *Imagebuilder) GetDistributionConfigurationRequest(input *GetDistributio // * CallRateLimitExceededException // You have exceeded the permitted request rate for the specific operation. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetDistributionConfiguration -func (c *Imagebuilder) GetDistributionConfiguration(input *GetDistributionConfigurationInput) (*GetDistributionConfigurationOutput, error) { - req, out := c.GetDistributionConfigurationRequest(input) +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipe +func (c *Imagebuilder) GetContainerRecipe(input *GetContainerRecipeInput) (*GetContainerRecipeOutput, error) { + req, out := c.GetContainerRecipeRequest(input) return out, req.Send() } -// GetDistributionConfigurationWithContext is the same as GetDistributionConfiguration with the addition of +// GetContainerRecipeWithContext is the same as GetContainerRecipe with the addition of // the ability to pass a context and additional request options. // -// See GetDistributionConfiguration for details on how to use this API operation. +// See GetContainerRecipe 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 *Imagebuilder) GetDistributionConfigurationWithContext(ctx aws.Context, input *GetDistributionConfigurationInput, opts ...request.Option) (*GetDistributionConfigurationOutput, error) { - req, out := c.GetDistributionConfigurationRequest(input) +func (c *Imagebuilder) GetContainerRecipeWithContext(ctx aws.Context, input *GetContainerRecipeInput, opts ...request.Option) (*GetContainerRecipeOutput, error) { + req, out := c.GetContainerRecipeRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } -const opGetImage = "GetImage" +const opGetContainerRecipePolicy = "GetContainerRecipePolicy" -// GetImageRequest generates a "aws/request.Request" representing the -// client's request for the GetImage operation. The "output" return +// GetContainerRecipePolicyRequest generates a "aws/request.Request" representing the +// client's request for the GetContainerRecipePolicy 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 GetImage for more information on using the GetImage +// See GetContainerRecipePolicy for more information on using the GetContainerRecipePolicy // 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 GetImageRequest method. -// req, resp := client.GetImageRequest(params) +// // Example sending a request using the GetContainerRecipePolicyRequest method. +// req, resp := client.GetContainerRecipePolicyRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImage -func (c *Imagebuilder) GetImageRequest(input *GetImageInput) (req *request.Request, output *GetImageOutput) { +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipePolicy +func (c *Imagebuilder) GetContainerRecipePolicyRequest(input *GetContainerRecipePolicyInput) (req *request.Request, output *GetContainerRecipePolicyOutput) { op := &request.Operation{ - Name: opGetImage, + Name: opGetContainerRecipePolicy, HTTPMethod: "GET", - HTTPPath: "/GetImage", + HTTPPath: "/GetContainerRecipePolicy", } if input == nil { - input = &GetImageInput{} + input = &GetContainerRecipePolicyInput{} } - output = &GetImageOutput{} + output = &GetContainerRecipePolicyOutput{} req = c.newRequest(op, input, output) return } -// GetImage API operation for EC2 Image Builder. +// GetContainerRecipePolicy API operation for EC2 Image Builder. // -// Gets an image. +// Retrieves the policy for a container recipe. // // 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 EC2 Image Builder's -// API operation GetImage for usage and error information. +// API operation GetContainerRecipePolicy for usage and error information. // // Returned Error Types: // * ServiceException // This exception is thrown when the service encounters an unrecoverable exception. // -// * ClientException -// These errors are usually caused by a client action, such as using an action -// or resource on behalf of a user that doesn't have permissions to use the -// action or resource, or specifying an invalid resource identifier. -// // * ServiceUnavailableException // The service is unable to process your request at this time. // // * InvalidRequestException // You have made a request for an action that is not supported by the service. // +// * ResourceNotFoundException +// At least one of the resources referenced by your request does not exist. +// // * ForbiddenException // You are not authorized to perform the requested operation. // // * CallRateLimitExceededException // You have exceeded the permitted request rate for the specific operation. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImage -func (c *Imagebuilder) GetImage(input *GetImageInput) (*GetImageOutput, error) { - req, out := c.GetImageRequest(input) +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetContainerRecipePolicy +func (c *Imagebuilder) GetContainerRecipePolicy(input *GetContainerRecipePolicyInput) (*GetContainerRecipePolicyOutput, error) { + req, out := c.GetContainerRecipePolicyRequest(input) return out, req.Send() } -// GetImageWithContext is the same as GetImage with the addition of +// GetContainerRecipePolicyWithContext is the same as GetContainerRecipePolicy with the addition of // the ability to pass a context and additional request options. // -// See GetImage for details on how to use this API operation. +// See GetContainerRecipePolicy 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 *Imagebuilder) GetImageWithContext(ctx aws.Context, input *GetImageInput, opts ...request.Option) (*GetImageOutput, error) { - req, out := c.GetImageRequest(input) +func (c *Imagebuilder) GetContainerRecipePolicyWithContext(ctx aws.Context, input *GetContainerRecipePolicyInput, opts ...request.Option) (*GetContainerRecipePolicyOutput, error) { + req, out := c.GetContainerRecipePolicyRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } -const opGetImagePipeline = "GetImagePipeline" +const opGetDistributionConfiguration = "GetDistributionConfiguration" -// GetImagePipelineRequest generates a "aws/request.Request" representing the -// client's request for the GetImagePipeline operation. The "output" return +// GetDistributionConfigurationRequest generates a "aws/request.Request" representing the +// client's request for the GetDistributionConfiguration 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 GetImagePipeline for more information on using the GetImagePipeline +// See GetDistributionConfiguration for more information on using the GetDistributionConfiguration // 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 GetImagePipelineRequest method. -// req, resp := client.GetImagePipelineRequest(params) +// // Example sending a request using the GetDistributionConfigurationRequest method. +// req, resp := client.GetDistributionConfigurationRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePipeline -func (c *Imagebuilder) GetImagePipelineRequest(input *GetImagePipelineInput) (req *request.Request, output *GetImagePipelineOutput) { +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetDistributionConfiguration +func (c *Imagebuilder) GetDistributionConfigurationRequest(input *GetDistributionConfigurationInput) (req *request.Request, output *GetDistributionConfigurationOutput) { op := &request.Operation{ - Name: opGetImagePipeline, + Name: opGetDistributionConfiguration, HTTPMethod: "GET", - HTTPPath: "/GetImagePipeline", + HTTPPath: "/GetDistributionConfiguration", } if input == nil { - input = &GetImagePipelineInput{} + input = &GetDistributionConfigurationInput{} } - output = &GetImagePipelineOutput{} + output = &GetDistributionConfigurationOutput{} req = c.newRequest(op, input, output) return } -// GetImagePipeline API operation for EC2 Image Builder. +// GetDistributionConfiguration API operation for EC2 Image Builder. // -// Gets an image pipeline. +// Gets a distribution configuration. // // 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 EC2 Image Builder's -// API operation GetImagePipeline for usage and error information. +// API operation GetDistributionConfiguration for usage and error information. // // Returned Error Types: // * ServiceException @@ -1853,9 +2066,201 @@ func (c *Imagebuilder) GetImagePipelineRequest(input *GetImagePipelineInput) (re // * CallRateLimitExceededException // You have exceeded the permitted request rate for the specific operation. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePipeline -func (c *Imagebuilder) GetImagePipeline(input *GetImagePipelineInput) (*GetImagePipelineOutput, error) { - req, out := c.GetImagePipelineRequest(input) +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetDistributionConfiguration +func (c *Imagebuilder) GetDistributionConfiguration(input *GetDistributionConfigurationInput) (*GetDistributionConfigurationOutput, error) { + req, out := c.GetDistributionConfigurationRequest(input) + return out, req.Send() +} + +// GetDistributionConfigurationWithContext is the same as GetDistributionConfiguration with the addition of +// the ability to pass a context and additional request options. +// +// See GetDistributionConfiguration 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 *Imagebuilder) GetDistributionConfigurationWithContext(ctx aws.Context, input *GetDistributionConfigurationInput, opts ...request.Option) (*GetDistributionConfigurationOutput, error) { + req, out := c.GetDistributionConfigurationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetImage = "GetImage" + +// GetImageRequest generates a "aws/request.Request" representing the +// client's request for the GetImage 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 GetImage for more information on using the GetImage +// 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 GetImageRequest method. +// req, resp := client.GetImageRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImage +func (c *Imagebuilder) GetImageRequest(input *GetImageInput) (req *request.Request, output *GetImageOutput) { + op := &request.Operation{ + Name: opGetImage, + HTTPMethod: "GET", + HTTPPath: "/GetImage", + } + + if input == nil { + input = &GetImageInput{} + } + + output = &GetImageOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetImage API operation for EC2 Image Builder. +// +// Gets an image. +// +// 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 EC2 Image Builder's +// API operation GetImage for usage and error information. +// +// Returned Error Types: +// * ServiceException +// This exception is thrown when the service encounters an unrecoverable exception. +// +// * ClientException +// These errors are usually caused by a client action, such as using an action +// or resource on behalf of a user that doesn't have permissions to use the +// action or resource, or specifying an invalid resource identifier. +// +// * ServiceUnavailableException +// The service is unable to process your request at this time. +// +// * InvalidRequestException +// You have made a request for an action that is not supported by the service. +// +// * ForbiddenException +// You are not authorized to perform the requested operation. +// +// * CallRateLimitExceededException +// You have exceeded the permitted request rate for the specific operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImage +func (c *Imagebuilder) GetImage(input *GetImageInput) (*GetImageOutput, error) { + req, out := c.GetImageRequest(input) + return out, req.Send() +} + +// GetImageWithContext is the same as GetImage with the addition of +// the ability to pass a context and additional request options. +// +// See GetImage 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 *Imagebuilder) GetImageWithContext(ctx aws.Context, input *GetImageInput, opts ...request.Option) (*GetImageOutput, error) { + req, out := c.GetImageRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opGetImagePipeline = "GetImagePipeline" + +// GetImagePipelineRequest generates a "aws/request.Request" representing the +// client's request for the GetImagePipeline 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 GetImagePipeline for more information on using the GetImagePipeline +// 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 GetImagePipelineRequest method. +// req, resp := client.GetImagePipelineRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePipeline +func (c *Imagebuilder) GetImagePipelineRequest(input *GetImagePipelineInput) (req *request.Request, output *GetImagePipelineOutput) { + op := &request.Operation{ + Name: opGetImagePipeline, + HTTPMethod: "GET", + HTTPPath: "/GetImagePipeline", + } + + if input == nil { + input = &GetImagePipelineInput{} + } + + output = &GetImagePipelineOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetImagePipeline API operation for EC2 Image Builder. +// +// Gets an image pipeline. +// +// 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 EC2 Image Builder's +// API operation GetImagePipeline for usage and error information. +// +// Returned Error Types: +// * ServiceException +// This exception is thrown when the service encounters an unrecoverable exception. +// +// * ClientException +// These errors are usually caused by a client action, such as using an action +// or resource on behalf of a user that doesn't have permissions to use the +// action or resource, or specifying an invalid resource identifier. +// +// * ServiceUnavailableException +// The service is unable to process your request at this time. +// +// * InvalidRequestException +// You have made a request for an action that is not supported by the service. +// +// * ForbiddenException +// You are not authorized to perform the requested operation. +// +// * CallRateLimitExceededException +// You have exceeded the permitted request rate for the specific operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/GetImagePipeline +func (c *Imagebuilder) GetImagePipeline(input *GetImagePipelineInput) (*GetImagePipelineOutput, error) { + req, out := c.GetImagePipelineRequest(input) return out, req.Send() } @@ -2680,37 +3085,37 @@ func (c *Imagebuilder) ListComponentsPagesWithContext(ctx aws.Context, input *Li return p.Err() } -const opListDistributionConfigurations = "ListDistributionConfigurations" +const opListContainerRecipes = "ListContainerRecipes" -// ListDistributionConfigurationsRequest generates a "aws/request.Request" representing the -// client's request for the ListDistributionConfigurations operation. The "output" return +// ListContainerRecipesRequest generates a "aws/request.Request" representing the +// client's request for the ListContainerRecipes 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 ListDistributionConfigurations for more information on using the ListDistributionConfigurations +// See ListContainerRecipes for more information on using the ListContainerRecipes // 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 ListDistributionConfigurationsRequest method. -// req, resp := client.ListDistributionConfigurationsRequest(params) +// // Example sending a request using the ListContainerRecipesRequest method. +// req, resp := client.ListContainerRecipesRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListDistributionConfigurations -func (c *Imagebuilder) ListDistributionConfigurationsRequest(input *ListDistributionConfigurationsInput) (req *request.Request, output *ListDistributionConfigurationsOutput) { +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListContainerRecipes +func (c *Imagebuilder) ListContainerRecipesRequest(input *ListContainerRecipesInput) (req *request.Request, output *ListContainerRecipesOutput) { op := &request.Operation{ - Name: opListDistributionConfigurations, + Name: opListContainerRecipes, HTTPMethod: "POST", - HTTPPath: "/ListDistributionConfigurations", + HTTPPath: "/ListContainerRecipes", Paginator: &request.Paginator{ InputTokens: []string{"nextToken"}, OutputTokens: []string{"nextToken"}, @@ -2720,24 +3125,24 @@ func (c *Imagebuilder) ListDistributionConfigurationsRequest(input *ListDistribu } if input == nil { - input = &ListDistributionConfigurationsInput{} + input = &ListContainerRecipesInput{} } - output = &ListDistributionConfigurationsOutput{} + output = &ListContainerRecipesOutput{} req = c.newRequest(op, input, output) return } -// ListDistributionConfigurations API operation for EC2 Image Builder. +// ListContainerRecipes API operation for EC2 Image Builder. // -// Returns a list of distribution configurations. +// Returns a list of container recipes. // // 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 EC2 Image Builder's -// API operation ListDistributionConfigurations for usage and error information. +// API operation ListContainerRecipes for usage and error information. // // Returned Error Types: // * ServiceException @@ -2763,65 +3168,65 @@ func (c *Imagebuilder) ListDistributionConfigurationsRequest(input *ListDistribu // * CallRateLimitExceededException // You have exceeded the permitted request rate for the specific operation. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListDistributionConfigurations -func (c *Imagebuilder) ListDistributionConfigurations(input *ListDistributionConfigurationsInput) (*ListDistributionConfigurationsOutput, error) { - req, out := c.ListDistributionConfigurationsRequest(input) +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListContainerRecipes +func (c *Imagebuilder) ListContainerRecipes(input *ListContainerRecipesInput) (*ListContainerRecipesOutput, error) { + req, out := c.ListContainerRecipesRequest(input) return out, req.Send() } -// ListDistributionConfigurationsWithContext is the same as ListDistributionConfigurations with the addition of +// ListContainerRecipesWithContext is the same as ListContainerRecipes with the addition of // the ability to pass a context and additional request options. // -// See ListDistributionConfigurations for details on how to use this API operation. +// See ListContainerRecipes 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 *Imagebuilder) ListDistributionConfigurationsWithContext(ctx aws.Context, input *ListDistributionConfigurationsInput, opts ...request.Option) (*ListDistributionConfigurationsOutput, error) { - req, out := c.ListDistributionConfigurationsRequest(input) +func (c *Imagebuilder) ListContainerRecipesWithContext(ctx aws.Context, input *ListContainerRecipesInput, opts ...request.Option) (*ListContainerRecipesOutput, error) { + req, out := c.ListContainerRecipesRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } -// ListDistributionConfigurationsPages iterates over the pages of a ListDistributionConfigurations operation, +// ListContainerRecipesPages iterates over the pages of a ListContainerRecipes operation, // calling the "fn" function with the response data for each page. To stop // iterating, return false from the fn function. // -// See ListDistributionConfigurations method for more information on how to use this operation. +// See ListContainerRecipes method for more information on how to use this operation. // // Note: This operation can generate multiple requests to a service. // -// // Example iterating over at most 3 pages of a ListDistributionConfigurations operation. +// // Example iterating over at most 3 pages of a ListContainerRecipes operation. // pageNum := 0 -// err := client.ListDistributionConfigurationsPages(params, -// func(page *imagebuilder.ListDistributionConfigurationsOutput, lastPage bool) bool { +// err := client.ListContainerRecipesPages(params, +// func(page *imagebuilder.ListContainerRecipesOutput, lastPage bool) bool { // pageNum++ // fmt.Println(page) // return pageNum <= 3 // }) // -func (c *Imagebuilder) ListDistributionConfigurationsPages(input *ListDistributionConfigurationsInput, fn func(*ListDistributionConfigurationsOutput, bool) bool) error { - return c.ListDistributionConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn) +func (c *Imagebuilder) ListContainerRecipesPages(input *ListContainerRecipesInput, fn func(*ListContainerRecipesOutput, bool) bool) error { + return c.ListContainerRecipesPagesWithContext(aws.BackgroundContext(), input, fn) } -// ListDistributionConfigurationsPagesWithContext same as ListDistributionConfigurationsPages except +// ListContainerRecipesPagesWithContext same as ListContainerRecipesPages except // it takes a Context and allows setting request options on the pages. // // 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 *Imagebuilder) ListDistributionConfigurationsPagesWithContext(ctx aws.Context, input *ListDistributionConfigurationsInput, fn func(*ListDistributionConfigurationsOutput, bool) bool, opts ...request.Option) error { +func (c *Imagebuilder) ListContainerRecipesPagesWithContext(ctx aws.Context, input *ListContainerRecipesInput, fn func(*ListContainerRecipesOutput, bool) bool, opts ...request.Option) error { p := request.Pagination{ NewRequest: func() (*request.Request, error) { - var inCpy *ListDistributionConfigurationsInput + var inCpy *ListContainerRecipesInput if input != nil { tmp := *input inCpy = &tmp } - req, _ := c.ListDistributionConfigurationsRequest(inCpy) + req, _ := c.ListContainerRecipesRequest(inCpy) req.SetContext(ctx) req.ApplyOptions(opts...) return req, nil @@ -2829,7 +3234,7 @@ func (c *Imagebuilder) ListDistributionConfigurationsPagesWithContext(ctx aws.Co } for p.Next() { - if !fn(p.Page().(*ListDistributionConfigurationsOutput), !p.HasNextPage()) { + if !fn(p.Page().(*ListContainerRecipesOutput), !p.HasNextPage()) { break } } @@ -2837,37 +3242,37 @@ func (c *Imagebuilder) ListDistributionConfigurationsPagesWithContext(ctx aws.Co return p.Err() } -const opListImageBuildVersions = "ListImageBuildVersions" +const opListDistributionConfigurations = "ListDistributionConfigurations" -// ListImageBuildVersionsRequest generates a "aws/request.Request" representing the -// client's request for the ListImageBuildVersions operation. The "output" return +// ListDistributionConfigurationsRequest generates a "aws/request.Request" representing the +// client's request for the ListDistributionConfigurations 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 ListImageBuildVersions for more information on using the ListImageBuildVersions +// See ListDistributionConfigurations for more information on using the ListDistributionConfigurations // 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 ListImageBuildVersionsRequest method. -// req, resp := client.ListImageBuildVersionsRequest(params) +// // Example sending a request using the ListDistributionConfigurationsRequest method. +// req, resp := client.ListDistributionConfigurationsRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // -// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageBuildVersions -func (c *Imagebuilder) ListImageBuildVersionsRequest(input *ListImageBuildVersionsInput) (req *request.Request, output *ListImageBuildVersionsOutput) { +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListDistributionConfigurations +func (c *Imagebuilder) ListDistributionConfigurationsRequest(input *ListDistributionConfigurationsInput) (req *request.Request, output *ListDistributionConfigurationsOutput) { op := &request.Operation{ - Name: opListImageBuildVersions, + Name: opListDistributionConfigurations, HTTPMethod: "POST", - HTTPPath: "/ListImageBuildVersions", + HTTPPath: "/ListDistributionConfigurations", Paginator: &request.Paginator{ InputTokens: []string{"nextToken"}, OutputTokens: []string{"nextToken"}, @@ -2877,17 +3282,174 @@ func (c *Imagebuilder) ListImageBuildVersionsRequest(input *ListImageBuildVersio } if input == nil { - input = &ListImageBuildVersionsInput{} + input = &ListDistributionConfigurationsInput{} } - output = &ListImageBuildVersionsOutput{} + output = &ListDistributionConfigurationsOutput{} req = c.newRequest(op, input, output) return } -// ListImageBuildVersions API operation for EC2 Image Builder. +// ListDistributionConfigurations API operation for EC2 Image Builder. // -// Returns a list of image build versions. +// Returns a list of distribution configurations. +// +// 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 EC2 Image Builder's +// API operation ListDistributionConfigurations for usage and error information. +// +// Returned Error Types: +// * ServiceException +// This exception is thrown when the service encounters an unrecoverable exception. +// +// * ClientException +// These errors are usually caused by a client action, such as using an action +// or resource on behalf of a user that doesn't have permissions to use the +// action or resource, or specifying an invalid resource identifier. +// +// * ServiceUnavailableException +// The service is unable to process your request at this time. +// +// * InvalidRequestException +// You have made a request for an action that is not supported by the service. +// +// * InvalidPaginationTokenException +// You have provided an invalid pagination token in your request. +// +// * ForbiddenException +// You are not authorized to perform the requested operation. +// +// * CallRateLimitExceededException +// You have exceeded the permitted request rate for the specific operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListDistributionConfigurations +func (c *Imagebuilder) ListDistributionConfigurations(input *ListDistributionConfigurationsInput) (*ListDistributionConfigurationsOutput, error) { + req, out := c.ListDistributionConfigurationsRequest(input) + return out, req.Send() +} + +// ListDistributionConfigurationsWithContext is the same as ListDistributionConfigurations with the addition of +// the ability to pass a context and additional request options. +// +// See ListDistributionConfigurations 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 *Imagebuilder) ListDistributionConfigurationsWithContext(ctx aws.Context, input *ListDistributionConfigurationsInput, opts ...request.Option) (*ListDistributionConfigurationsOutput, error) { + req, out := c.ListDistributionConfigurationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListDistributionConfigurationsPages iterates over the pages of a ListDistributionConfigurations operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListDistributionConfigurations method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListDistributionConfigurations operation. +// pageNum := 0 +// err := client.ListDistributionConfigurationsPages(params, +// func(page *imagebuilder.ListDistributionConfigurationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *Imagebuilder) ListDistributionConfigurationsPages(input *ListDistributionConfigurationsInput, fn func(*ListDistributionConfigurationsOutput, bool) bool) error { + return c.ListDistributionConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListDistributionConfigurationsPagesWithContext same as ListDistributionConfigurationsPages except +// it takes a Context and allows setting request options on the pages. +// +// 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 *Imagebuilder) ListDistributionConfigurationsPagesWithContext(ctx aws.Context, input *ListDistributionConfigurationsInput, fn func(*ListDistributionConfigurationsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListDistributionConfigurationsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListDistributionConfigurationsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListDistributionConfigurationsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListImageBuildVersions = "ListImageBuildVersions" + +// ListImageBuildVersionsRequest generates a "aws/request.Request" representing the +// client's request for the ListImageBuildVersions 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 ListImageBuildVersions for more information on using the ListImageBuildVersions +// 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 ListImageBuildVersionsRequest method. +// req, resp := client.ListImageBuildVersionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/ListImageBuildVersions +func (c *Imagebuilder) ListImageBuildVersionsRequest(input *ListImageBuildVersionsInput) (req *request.Request, output *ListImageBuildVersionsOutput) { + op := &request.Operation{ + Name: opListImageBuildVersions, + HTTPMethod: "POST", + HTTPPath: "/ListImageBuildVersions", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListImageBuildVersionsInput{} + } + + output = &ListImageBuildVersionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListImageBuildVersions API operation for EC2 Image Builder. +// +// Returns a list of image build versions. // // 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 @@ -3975,6 +4537,113 @@ func (c *Imagebuilder) PutComponentPolicyWithContext(ctx aws.Context, input *Put return out, req.Send() } +const opPutContainerRecipePolicy = "PutContainerRecipePolicy" + +// PutContainerRecipePolicyRequest generates a "aws/request.Request" representing the +// client's request for the PutContainerRecipePolicy 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 PutContainerRecipePolicy for more information on using the PutContainerRecipePolicy +// 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 PutContainerRecipePolicyRequest method. +// req, resp := client.PutContainerRecipePolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutContainerRecipePolicy +func (c *Imagebuilder) PutContainerRecipePolicyRequest(input *PutContainerRecipePolicyInput) (req *request.Request, output *PutContainerRecipePolicyOutput) { + op := &request.Operation{ + Name: opPutContainerRecipePolicy, + HTTPMethod: "PUT", + HTTPPath: "/PutContainerRecipePolicy", + } + + if input == nil { + input = &PutContainerRecipePolicyInput{} + } + + output = &PutContainerRecipePolicyOutput{} + req = c.newRequest(op, input, output) + return +} + +// PutContainerRecipePolicy API operation for EC2 Image Builder. +// +// Applies a policy to a container image. We recommend that you call the RAM +// API CreateResourceShare (https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html) +// to share resources. If you call the Image Builder API PutContainerImagePolicy, +// you must also call the RAM API PromoteResourceShareCreatedFromPolicy (https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html) +// in order for the resource to be visible to all principals with whom the resource +// is shared. +// +// 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 EC2 Image Builder's +// API operation PutContainerRecipePolicy for usage and error information. +// +// Returned Error Types: +// * ServiceException +// This exception is thrown when the service encounters an unrecoverable exception. +// +// * ClientException +// These errors are usually caused by a client action, such as using an action +// or resource on behalf of a user that doesn't have permissions to use the +// action or resource, or specifying an invalid resource identifier. +// +// * ServiceUnavailableException +// The service is unable to process your request at this time. +// +// * InvalidRequestException +// You have made a request for an action that is not supported by the service. +// +// * InvalidParameterValueException +// The value that you provided for the specified parameter is invalid. +// +// * ResourceNotFoundException +// At least one of the resources referenced by your request does not exist. +// +// * ForbiddenException +// You are not authorized to perform the requested operation. +// +// * CallRateLimitExceededException +// You have exceeded the permitted request rate for the specific operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02/PutContainerRecipePolicy +func (c *Imagebuilder) PutContainerRecipePolicy(input *PutContainerRecipePolicyInput) (*PutContainerRecipePolicyOutput, error) { + req, out := c.PutContainerRecipePolicyRequest(input) + return out, req.Send() +} + +// PutContainerRecipePolicyWithContext is the same as PutContainerRecipePolicy with the addition of +// the ability to pass a context and additional request options. +// +// See PutContainerRecipePolicy 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 *Imagebuilder) PutContainerRecipePolicyWithContext(ctx aws.Context, input *PutContainerRecipePolicyInput, opts ...request.Option) (*PutContainerRecipePolicyOutput, error) { + req, out := c.PutContainerRecipePolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opPutImagePolicy = "PutImagePolicy" // PutImagePolicyRequest generates a "aws/request.Request" representing the @@ -5563,20 +6232,371 @@ func (s *ComponentVersion) SetVersion(v string) *ComponentVersion { return s } -type CreateComponentInput struct { +// A container encapsulates the runtime environment for an application. +type Container struct { _ struct{} `type:"structure"` - // The change description of the component. Describes what change has been made - // in this version, or what makes this version different from other versions - // of this component. - ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"` + // A list of URIs for containers created in the context Region. + ImageUris []*string `locationName:"imageUris" type:"list"` - // The idempotency token of the component. - ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"` + // Containers and container images are Region-specific. This is the Region context + // for the container. + Region *string `locationName:"region" min:"1" type:"string"` +} - // The data of the component. Used to specify the data inline. Either data or - // uri can be used to specify the data within the component. - Data *string `locationName:"data" min:"1" type:"string"` +// String returns the string representation +func (s Container) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Container) GoString() string { + return s.String() +} + +// SetImageUris sets the ImageUris field's value. +func (s *Container) SetImageUris(v []*string) *Container { + s.ImageUris = v + return s +} + +// SetRegion sets the Region field's value. +func (s *Container) SetRegion(v string) *Container { + s.Region = &v + return s +} + +// Container distribution settings for encryption, licensing, and sharing in +// a specific Region. +type ContainerDistributionConfiguration struct { + _ struct{} `type:"structure"` + + // Tags that are attached to the container distribution configuration. + ContainerTags []*string `locationName:"containerTags" type:"list"` + + // The description of the container distribution configuration. + Description *string `locationName:"description" min:"1" type:"string"` + + // The destination repository for the container distribution configuration. + // + // TargetRepository is a required field + TargetRepository *TargetContainerRepository `locationName:"targetRepository" type:"structure" required:"true"` +} + +// String returns the string representation +func (s ContainerDistributionConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ContainerDistributionConfiguration) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ContainerDistributionConfiguration) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ContainerDistributionConfiguration"} + if s.Description != nil && len(*s.Description) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Description", 1)) + } + if s.TargetRepository == nil { + invalidParams.Add(request.NewErrParamRequired("TargetRepository")) + } + if s.TargetRepository != nil { + if err := s.TargetRepository.Validate(); err != nil { + invalidParams.AddNested("TargetRepository", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetContainerTags sets the ContainerTags field's value. +func (s *ContainerDistributionConfiguration) SetContainerTags(v []*string) *ContainerDistributionConfiguration { + s.ContainerTags = v + return s +} + +// SetDescription sets the Description field's value. +func (s *ContainerDistributionConfiguration) SetDescription(v string) *ContainerDistributionConfiguration { + s.Description = &v + return s +} + +// SetTargetRepository sets the TargetRepository field's value. +func (s *ContainerDistributionConfiguration) SetTargetRepository(v *TargetContainerRepository) *ContainerDistributionConfiguration { + s.TargetRepository = v + return s +} + +// A container recipe. +type ContainerRecipe struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe. + Arn *string `locationName:"arn" type:"string"` + + // Components for build and test that are included in the container recipe. + Components []*ComponentConfiguration `locationName:"components" min:"1" type:"list"` + + // Specifies the type of container, such as Docker. + ContainerType *string `locationName:"containerType" type:"string" enum:"ContainerType"` + + // The date when this container recipe was created. + DateCreated *string `locationName:"dateCreated" type:"string"` + + // The description of the container recipe. + Description *string `locationName:"description" min:"1" type:"string"` + + // Dockerfiles are text documents that are used to build Docker containers, + // and ensure that they contain all of the elements required by the application + // running inside. The template data consists of contextual variables where + // Image Builder places build information or scripts, based on your container + // image recipe. + DockerfileTemplateData *string `locationName:"dockerfileTemplateData" type:"string"` + + // A flag that indicates if the target container is encrypted. + Encrypted *bool `locationName:"encrypted" type:"boolean"` + + // Identifies which KMS key is used to encrypt the container image for distribution + // to the target Region. + KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"` + + // The name of the container recipe. + Name *string `locationName:"name" type:"string"` + + // The owner of the container recipe. + Owner *string `locationName:"owner" min:"1" type:"string"` + + // The source image for the container recipe. + ParentImage *string `locationName:"parentImage" min:"1" type:"string"` + + // The system platform for the container, such as Windows or Linux. + Platform *string `locationName:"platform" type:"string" enum:"Platform"` + + // Tags that are attached to the container recipe. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // The destination repository for the container image. + TargetRepository *TargetContainerRepository `locationName:"targetRepository" type:"structure"` + + // The semantic version of the container recipe (..). + Version *string `locationName:"version" type:"string"` + + // The working directory for use during build and test workflows. + WorkingDirectory *string `locationName:"workingDirectory" min:"1" type:"string"` +} + +// String returns the string representation +func (s ContainerRecipe) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ContainerRecipe) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *ContainerRecipe) SetArn(v string) *ContainerRecipe { + s.Arn = &v + return s +} + +// SetComponents sets the Components field's value. +func (s *ContainerRecipe) SetComponents(v []*ComponentConfiguration) *ContainerRecipe { + s.Components = v + return s +} + +// SetContainerType sets the ContainerType field's value. +func (s *ContainerRecipe) SetContainerType(v string) *ContainerRecipe { + s.ContainerType = &v + return s +} + +// SetDateCreated sets the DateCreated field's value. +func (s *ContainerRecipe) SetDateCreated(v string) *ContainerRecipe { + s.DateCreated = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ContainerRecipe) SetDescription(v string) *ContainerRecipe { + s.Description = &v + return s +} + +// SetDockerfileTemplateData sets the DockerfileTemplateData field's value. +func (s *ContainerRecipe) SetDockerfileTemplateData(v string) *ContainerRecipe { + s.DockerfileTemplateData = &v + return s +} + +// SetEncrypted sets the Encrypted field's value. +func (s *ContainerRecipe) SetEncrypted(v bool) *ContainerRecipe { + s.Encrypted = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ContainerRecipe) SetKmsKeyId(v string) *ContainerRecipe { + s.KmsKeyId = &v + return s +} + +// SetName sets the Name field's value. +func (s *ContainerRecipe) SetName(v string) *ContainerRecipe { + s.Name = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ContainerRecipe) SetOwner(v string) *ContainerRecipe { + s.Owner = &v + return s +} + +// SetParentImage sets the ParentImage field's value. +func (s *ContainerRecipe) SetParentImage(v string) *ContainerRecipe { + s.ParentImage = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ContainerRecipe) SetPlatform(v string) *ContainerRecipe { + s.Platform = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ContainerRecipe) SetTags(v map[string]*string) *ContainerRecipe { + s.Tags = v + return s +} + +// SetTargetRepository sets the TargetRepository field's value. +func (s *ContainerRecipe) SetTargetRepository(v *TargetContainerRepository) *ContainerRecipe { + s.TargetRepository = v + return s +} + +// SetVersion sets the Version field's value. +func (s *ContainerRecipe) SetVersion(v string) *ContainerRecipe { + s.Version = &v + return s +} + +// SetWorkingDirectory sets the WorkingDirectory field's value. +func (s *ContainerRecipe) SetWorkingDirectory(v string) *ContainerRecipe { + s.WorkingDirectory = &v + return s +} + +// A summary of a container recipe +type ContainerRecipeSummary struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe. + Arn *string `locationName:"arn" type:"string"` + + // Specifies the type of container, such as "Docker". + ContainerType *string `locationName:"containerType" type:"string" enum:"ContainerType"` + + // The date when this container recipe was created. + DateCreated *string `locationName:"dateCreated" type:"string"` + + // The name of the container recipe. + Name *string `locationName:"name" type:"string"` + + // The owner of the container recipe. + Owner *string `locationName:"owner" min:"1" type:"string"` + + // The source image for the container recipe. + ParentImage *string `locationName:"parentImage" min:"1" type:"string"` + + // The system platform for the container, such as Windows or Linux. + Platform *string `locationName:"platform" type:"string" enum:"Platform"` + + // Tags that are attached to the container recipe. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` +} + +// String returns the string representation +func (s ContainerRecipeSummary) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ContainerRecipeSummary) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *ContainerRecipeSummary) SetArn(v string) *ContainerRecipeSummary { + s.Arn = &v + return s +} + +// SetContainerType sets the ContainerType field's value. +func (s *ContainerRecipeSummary) SetContainerType(v string) *ContainerRecipeSummary { + s.ContainerType = &v + return s +} + +// SetDateCreated sets the DateCreated field's value. +func (s *ContainerRecipeSummary) SetDateCreated(v string) *ContainerRecipeSummary { + s.DateCreated = &v + return s +} + +// SetName sets the Name field's value. +func (s *ContainerRecipeSummary) SetName(v string) *ContainerRecipeSummary { + s.Name = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ContainerRecipeSummary) SetOwner(v string) *ContainerRecipeSummary { + s.Owner = &v + return s +} + +// SetParentImage sets the ParentImage field's value. +func (s *ContainerRecipeSummary) SetParentImage(v string) *ContainerRecipeSummary { + s.ParentImage = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *ContainerRecipeSummary) SetPlatform(v string) *ContainerRecipeSummary { + s.Platform = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ContainerRecipeSummary) SetTags(v map[string]*string) *ContainerRecipeSummary { + s.Tags = v + return s +} + +type CreateComponentInput struct { + _ struct{} `type:"structure"` + + // The change description of the component. Describes what change has been made + // in this version, or what makes this version different from other versions + // of this component. + ChangeDescription *string `locationName:"changeDescription" min:"1" type:"string"` + + // The idempotency token of the component. + ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"` + + // The data of the component. Used to specify the data inline. Either data or + // uri can be used to specify the data within the component. + Data *string `locationName:"data" min:"1" type:"string"` // The description of the component. Describes the contents of the component. Description *string `locationName:"description" min:"1" type:"string"` @@ -5673,103 +6693,381 @@ func (s *CreateComponentInput) SetChangeDescription(v string) *CreateComponentIn } // SetClientToken sets the ClientToken field's value. -func (s *CreateComponentInput) SetClientToken(v string) *CreateComponentInput { +func (s *CreateComponentInput) SetClientToken(v string) *CreateComponentInput { + s.ClientToken = &v + return s +} + +// SetData sets the Data field's value. +func (s *CreateComponentInput) SetData(v string) *CreateComponentInput { + s.Data = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *CreateComponentInput) SetDescription(v string) *CreateComponentInput { + s.Description = &v + return s +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *CreateComponentInput) SetKmsKeyId(v string) *CreateComponentInput { + s.KmsKeyId = &v + return s +} + +// SetName sets the Name field's value. +func (s *CreateComponentInput) SetName(v string) *CreateComponentInput { + s.Name = &v + return s +} + +// SetPlatform sets the Platform field's value. +func (s *CreateComponentInput) SetPlatform(v string) *CreateComponentInput { + s.Platform = &v + return s +} + +// SetSemanticVersion sets the SemanticVersion field's value. +func (s *CreateComponentInput) SetSemanticVersion(v string) *CreateComponentInput { + s.SemanticVersion = &v + return s +} + +// SetSupportedOsVersions sets the SupportedOsVersions field's value. +func (s *CreateComponentInput) SetSupportedOsVersions(v []*string) *CreateComponentInput { + s.SupportedOsVersions = v + return s +} + +// SetTags sets the Tags field's value. +func (s *CreateComponentInput) SetTags(v map[string]*string) *CreateComponentInput { + s.Tags = v + return s +} + +// SetUri sets the Uri field's value. +func (s *CreateComponentInput) SetUri(v string) *CreateComponentInput { + s.Uri = &v + return s +} + +type CreateComponentOutput struct { + _ struct{} `type:"structure"` + + // The idempotency token used to make this request idempotent. + ClientToken *string `locationName:"clientToken" min:"1" type:"string"` + + // The Amazon Resource Name (ARN) of the component that was created by this + // request. + ComponentBuildVersionArn *string `locationName:"componentBuildVersionArn" type:"string"` + + // The request ID that uniquely identifies this request. + RequestId *string `locationName:"requestId" min:"1" type:"string"` +} + +// String returns the string representation +func (s CreateComponentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateComponentOutput) GoString() string { + return s.String() +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateComponentOutput) SetClientToken(v string) *CreateComponentOutput { + s.ClientToken = &v + return s +} + +// SetComponentBuildVersionArn sets the ComponentBuildVersionArn field's value. +func (s *CreateComponentOutput) SetComponentBuildVersionArn(v string) *CreateComponentOutput { + s.ComponentBuildVersionArn = &v + return s +} + +// SetRequestId sets the RequestId field's value. +func (s *CreateComponentOutput) SetRequestId(v string) *CreateComponentOutput { + s.RequestId = &v + return s +} + +type CreateContainerRecipeInput struct { + _ struct{} `type:"structure"` + + // The client token used to make this request idempotent. + ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"` + + // Components for build and test that are included in the container recipe. + // + // Components is a required field + Components []*ComponentConfiguration `locationName:"components" min:"1" type:"list" required:"true"` + + // The type of container to create. + // + // ContainerType is a required field + ContainerType *string `locationName:"containerType" type:"string" required:"true" enum:"ContainerType"` + + // The description of the container recipe. + Description *string `locationName:"description" min:"1" type:"string"` + + // The Dockerfile template used to build your image as an inline data blob. + // + // DockerfileTemplateData is a required field + DockerfileTemplateData *string `locationName:"dockerfileTemplateData" min:"1" type:"string" required:"true"` + + // The S3 URI for the Dockerfile that will be used to build your container image. + DockerfileTemplateUri *string `locationName:"dockerfileTemplateUri" type:"string"` + + // Specifies the operating system version for the source image. + ImageOsVersionOverride *string `locationName:"imageOsVersionOverride" min:"1" type:"string"` + + // Identifies which KMS key is used to encrypt the container image. + KmsKeyId *string `locationName:"kmsKeyId" min:"1" type:"string"` + + // The name of the container recipe. + // + // Name is a required field + Name *string `locationName:"name" type:"string" required:"true"` + + // The source image for the container recipe. + // + // ParentImage is a required field + ParentImage *string `locationName:"parentImage" min:"1" type:"string" required:"true"` + + // Specifies the operating system platform when you use a custom source image. + PlatformOverride *string `locationName:"platformOverride" type:"string" enum:"Platform"` + + // The semantic version of the container recipe (..). + // + // SemanticVersion is a required field + SemanticVersion *string `locationName:"semanticVersion" type:"string" required:"true"` + + // Tags that are attached to the container recipe. + Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + + // The destination repository for the container image. + // + // TargetRepository is a required field + TargetRepository *TargetContainerRepository `locationName:"targetRepository" type:"structure" required:"true"` + + // The working directory for use during build and test workflows. + WorkingDirectory *string `locationName:"workingDirectory" min:"1" type:"string"` +} + +// String returns the string representation +func (s CreateContainerRecipeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateContainerRecipeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateContainerRecipeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateContainerRecipeInput"} + if s.ClientToken != nil && len(*s.ClientToken) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1)) + } + if s.Components == nil { + invalidParams.Add(request.NewErrParamRequired("Components")) + } + if s.Components != nil && len(s.Components) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Components", 1)) + } + if s.ContainerType == nil { + invalidParams.Add(request.NewErrParamRequired("ContainerType")) + } + if s.Description != nil && len(*s.Description) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Description", 1)) + } + if s.DockerfileTemplateData == nil { + invalidParams.Add(request.NewErrParamRequired("DockerfileTemplateData")) + } + if s.DockerfileTemplateData != nil && len(*s.DockerfileTemplateData) < 1 { + invalidParams.Add(request.NewErrParamMinLen("DockerfileTemplateData", 1)) + } + if s.ImageOsVersionOverride != nil && len(*s.ImageOsVersionOverride) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ImageOsVersionOverride", 1)) + } + if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1)) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.ParentImage == nil { + invalidParams.Add(request.NewErrParamRequired("ParentImage")) + } + if s.ParentImage != nil && len(*s.ParentImage) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ParentImage", 1)) + } + if s.SemanticVersion == nil { + invalidParams.Add(request.NewErrParamRequired("SemanticVersion")) + } + if s.Tags != nil && len(s.Tags) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) + } + if s.TargetRepository == nil { + invalidParams.Add(request.NewErrParamRequired("TargetRepository")) + } + if s.WorkingDirectory != nil && len(*s.WorkingDirectory) < 1 { + invalidParams.Add(request.NewErrParamMinLen("WorkingDirectory", 1)) + } + if s.Components != nil { + for i, v := range s.Components { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Components", i), err.(request.ErrInvalidParams)) + } + } + } + if s.TargetRepository != nil { + if err := s.TargetRepository.Validate(); err != nil { + invalidParams.AddNested("TargetRepository", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateContainerRecipeInput) SetClientToken(v string) *CreateContainerRecipeInput { s.ClientToken = &v return s } -// SetData sets the Data field's value. -func (s *CreateComponentInput) SetData(v string) *CreateComponentInput { - s.Data = &v +// SetComponents sets the Components field's value. +func (s *CreateContainerRecipeInput) SetComponents(v []*ComponentConfiguration) *CreateContainerRecipeInput { + s.Components = v + return s +} + +// SetContainerType sets the ContainerType field's value. +func (s *CreateContainerRecipeInput) SetContainerType(v string) *CreateContainerRecipeInput { + s.ContainerType = &v return s } // SetDescription sets the Description field's value. -func (s *CreateComponentInput) SetDescription(v string) *CreateComponentInput { +func (s *CreateContainerRecipeInput) SetDescription(v string) *CreateContainerRecipeInput { s.Description = &v return s } +// SetDockerfileTemplateData sets the DockerfileTemplateData field's value. +func (s *CreateContainerRecipeInput) SetDockerfileTemplateData(v string) *CreateContainerRecipeInput { + s.DockerfileTemplateData = &v + return s +} + +// SetDockerfileTemplateUri sets the DockerfileTemplateUri field's value. +func (s *CreateContainerRecipeInput) SetDockerfileTemplateUri(v string) *CreateContainerRecipeInput { + s.DockerfileTemplateUri = &v + return s +} + +// SetImageOsVersionOverride sets the ImageOsVersionOverride field's value. +func (s *CreateContainerRecipeInput) SetImageOsVersionOverride(v string) *CreateContainerRecipeInput { + s.ImageOsVersionOverride = &v + return s +} + // SetKmsKeyId sets the KmsKeyId field's value. -func (s *CreateComponentInput) SetKmsKeyId(v string) *CreateComponentInput { +func (s *CreateContainerRecipeInput) SetKmsKeyId(v string) *CreateContainerRecipeInput { s.KmsKeyId = &v return s } // SetName sets the Name field's value. -func (s *CreateComponentInput) SetName(v string) *CreateComponentInput { +func (s *CreateContainerRecipeInput) SetName(v string) *CreateContainerRecipeInput { s.Name = &v return s } -// SetPlatform sets the Platform field's value. -func (s *CreateComponentInput) SetPlatform(v string) *CreateComponentInput { - s.Platform = &v +// SetParentImage sets the ParentImage field's value. +func (s *CreateContainerRecipeInput) SetParentImage(v string) *CreateContainerRecipeInput { + s.ParentImage = &v return s } -// SetSemanticVersion sets the SemanticVersion field's value. -func (s *CreateComponentInput) SetSemanticVersion(v string) *CreateComponentInput { - s.SemanticVersion = &v +// SetPlatformOverride sets the PlatformOverride field's value. +func (s *CreateContainerRecipeInput) SetPlatformOverride(v string) *CreateContainerRecipeInput { + s.PlatformOverride = &v return s } -// SetSupportedOsVersions sets the SupportedOsVersions field's value. -func (s *CreateComponentInput) SetSupportedOsVersions(v []*string) *CreateComponentInput { - s.SupportedOsVersions = v +// SetSemanticVersion sets the SemanticVersion field's value. +func (s *CreateContainerRecipeInput) SetSemanticVersion(v string) *CreateContainerRecipeInput { + s.SemanticVersion = &v return s } // SetTags sets the Tags field's value. -func (s *CreateComponentInput) SetTags(v map[string]*string) *CreateComponentInput { +func (s *CreateContainerRecipeInput) SetTags(v map[string]*string) *CreateContainerRecipeInput { s.Tags = v return s } -// SetUri sets the Uri field's value. -func (s *CreateComponentInput) SetUri(v string) *CreateComponentInput { - s.Uri = &v +// SetTargetRepository sets the TargetRepository field's value. +func (s *CreateContainerRecipeInput) SetTargetRepository(v *TargetContainerRepository) *CreateContainerRecipeInput { + s.TargetRepository = v return s } -type CreateComponentOutput struct { +// SetWorkingDirectory sets the WorkingDirectory field's value. +func (s *CreateContainerRecipeInput) SetWorkingDirectory(v string) *CreateContainerRecipeInput { + s.WorkingDirectory = &v + return s +} + +type CreateContainerRecipeOutput struct { _ struct{} `type:"structure"` - // The idempotency token used to make this request idempotent. + // The client token used to make this request idempotent. ClientToken *string `locationName:"clientToken" min:"1" type:"string"` - // The Amazon Resource Name (ARN) of the component that was created by this - // request. - ComponentBuildVersionArn *string `locationName:"componentBuildVersionArn" type:"string"` + // Returns the Amazon Resource Name (ARN) of the container recipe that the request + // created. + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"` // The request ID that uniquely identifies this request. RequestId *string `locationName:"requestId" min:"1" type:"string"` } // String returns the string representation -func (s CreateComponentOutput) String() string { +func (s CreateContainerRecipeOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation -func (s CreateComponentOutput) GoString() string { +func (s CreateContainerRecipeOutput) GoString() string { return s.String() } // SetClientToken sets the ClientToken field's value. -func (s *CreateComponentOutput) SetClientToken(v string) *CreateComponentOutput { +func (s *CreateContainerRecipeOutput) SetClientToken(v string) *CreateContainerRecipeOutput { s.ClientToken = &v return s } -// SetComponentBuildVersionArn sets the ComponentBuildVersionArn field's value. -func (s *CreateComponentOutput) SetComponentBuildVersionArn(v string) *CreateComponentOutput { - s.ComponentBuildVersionArn = &v +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *CreateContainerRecipeOutput) SetContainerRecipeArn(v string) *CreateContainerRecipeOutput { + s.ContainerRecipeArn = &v return s } // SetRequestId sets the RequestId field's value. -func (s *CreateComponentOutput) SetRequestId(v string) *CreateComponentOutput { +func (s *CreateContainerRecipeOutput) SetRequestId(v string) *CreateContainerRecipeOutput { s.RequestId = &v return s } @@ -5920,6 +7218,10 @@ type CreateImageInput struct { // The idempotency token used to make this request idempotent. ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"` + // The Amazon Resource Name (ARN) of the container recipe that defines how images + // are configured and tested. + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"` + // The Amazon Resource Name (ARN) of the distribution configuration that defines // and configures the outputs of your pipeline. DistributionConfigurationArn *string `locationName:"distributionConfigurationArn" type:"string"` @@ -5932,9 +7234,7 @@ type CreateImageInput struct { // The Amazon Resource Name (ARN) of the image recipe that defines how images // are configured, tested, and assessed. - // - // ImageRecipeArn is a required field - ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string" required:"true"` + ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"` // The image tests configuration of the image. ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"` @@ -5965,9 +7265,6 @@ func (s *CreateImageInput) Validate() error { if s.ClientToken != nil && len(*s.ClientToken) < 1 { invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1)) } - if s.ImageRecipeArn == nil { - invalidParams.Add(request.NewErrParamRequired("ImageRecipeArn")) - } if s.InfrastructureConfigurationArn == nil { invalidParams.Add(request.NewErrParamRequired("InfrastructureConfigurationArn")) } @@ -5992,6 +7289,12 @@ func (s *CreateImageInput) SetClientToken(v string) *CreateImageInput { return s } +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *CreateImageInput) SetContainerRecipeArn(v string) *CreateImageInput { + s.ContainerRecipeArn = &v + return s +} + // SetDistributionConfigurationArn sets the DistributionConfigurationArn field's value. func (s *CreateImageInput) SetDistributionConfigurationArn(v string) *CreateImageInput { s.DistributionConfigurationArn = &v @@ -6075,6 +7378,10 @@ type CreateImagePipelineInput struct { // The idempotency token used to make this request idempotent. ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"` + // The Amazon Resource Name (ARN) of the container recipe that is used to configure + // images created by this container pipeline. + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"` + // The description of the image pipeline. Description *string `locationName:"description" min:"1" type:"string"` @@ -6090,9 +7397,7 @@ type CreateImagePipelineInput struct { // The Amazon Resource Name (ARN) of the image recipe that will be used to configure // images created by this image pipeline. - // - // ImageRecipeArn is a required field - ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string" required:"true"` + ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"` // The image test configuration of the image pipeline. ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"` @@ -6137,9 +7442,6 @@ func (s *CreateImagePipelineInput) Validate() error { if s.Description != nil && len(*s.Description) < 1 { invalidParams.Add(request.NewErrParamMinLen("Description", 1)) } - if s.ImageRecipeArn == nil { - invalidParams.Add(request.NewErrParamRequired("ImageRecipeArn")) - } if s.InfrastructureConfigurationArn == nil { invalidParams.Add(request.NewErrParamRequired("InfrastructureConfigurationArn")) } @@ -6172,6 +7474,12 @@ func (s *CreateImagePipelineInput) SetClientToken(v string) *CreateImagePipeline return s } +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *CreateImagePipelineInput) SetContainerRecipeArn(v string) *CreateImagePipelineInput { + s.ContainerRecipeArn = &v + return s +} + // SetDescription sets the Description field's value. func (s *CreateImagePipelineInput) SetDescription(v string) *CreateImagePipelineInput { s.Description = &v @@ -6781,6 +8089,76 @@ func (s *DeleteComponentOutput) SetRequestId(v string) *DeleteComponentOutput { return s } +type DeleteContainerRecipeInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe to delete. + // + // ContainerRecipeArn is a required field + ContainerRecipeArn *string `location:"querystring" locationName:"containerRecipeArn" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteContainerRecipeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteContainerRecipeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteContainerRecipeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteContainerRecipeInput"} + if s.ContainerRecipeArn == nil { + invalidParams.Add(request.NewErrParamRequired("ContainerRecipeArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *DeleteContainerRecipeInput) SetContainerRecipeArn(v string) *DeleteContainerRecipeInput { + s.ContainerRecipeArn = &v + return s +} + +type DeleteContainerRecipeOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe that was deleted. + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"` + + // The request ID that uniquely identifies this request. + RequestId *string `locationName:"requestId" min:"1" type:"string"` +} + +// String returns the string representation +func (s DeleteContainerRecipeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteContainerRecipeOutput) GoString() string { + return s.String() +} + +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *DeleteContainerRecipeOutput) SetContainerRecipeArn(v string) *DeleteContainerRecipeOutput { + s.ContainerRecipeArn = &v + return s +} + +// SetRequestId sets the RequestId field's value. +func (s *DeleteContainerRecipeOutput) SetRequestId(v string) *DeleteContainerRecipeOutput { + s.RequestId = &v + return s +} + type DeleteDistributionConfigurationInput struct { _ struct{} `type:"structure"` @@ -7140,6 +8518,10 @@ type Distribution struct { // The specific AMI settings (for example, launch permissions, AMI tags). AmiDistributionConfiguration *AmiDistributionConfiguration `locationName:"amiDistributionConfiguration" type:"structure"` + // Container distribution settings for encryption, licensing, and sharing in + // a specific Region. + ContainerDistributionConfiguration *ContainerDistributionConfiguration `locationName:"containerDistributionConfiguration" type:"structure"` + // The License Manager Configuration to associate with the AMI in the specified // Region. LicenseConfigurationArns []*string `locationName:"licenseConfigurationArns" min:"1" type:"list"` @@ -7177,6 +8559,11 @@ func (s *Distribution) Validate() error { invalidParams.AddNested("AmiDistributionConfiguration", err.(request.ErrInvalidParams)) } } + if s.ContainerDistributionConfiguration != nil { + if err := s.ContainerDistributionConfiguration.Validate(); err != nil { + invalidParams.AddNested("ContainerDistributionConfiguration", err.(request.ErrInvalidParams)) + } + } if invalidParams.Len() > 0 { return invalidParams @@ -7190,6 +8577,12 @@ func (s *Distribution) SetAmiDistributionConfiguration(v *AmiDistributionConfigu return s } +// SetContainerDistributionConfiguration sets the ContainerDistributionConfiguration field's value. +func (s *Distribution) SetContainerDistributionConfiguration(v *ContainerDistributionConfiguration) *Distribution { + s.ContainerDistributionConfiguration = v + return s +} + // SetLicenseConfigurationArns sets the LicenseConfigurationArns field's value. func (s *Distribution) SetLicenseConfigurationArns(v []*string) *Distribution { s.LicenseConfigurationArns = v @@ -7310,6 +8703,9 @@ type DistributionConfigurationSummary struct { // The name of the distribution configuration. Name *string `locationName:"name" type:"string"` + // A list of Regions where the container image is distributed to. + Regions []*string `locationName:"regions" type:"list"` + // The tags associated with the distribution configuration. Tags map[string]*string `locationName:"tags" min:"1" type:"map"` } @@ -7354,6 +8750,12 @@ func (s *DistributionConfigurationSummary) SetName(v string) *DistributionConfig return s } +// SetRegions sets the Regions field's value. +func (s *DistributionConfigurationSummary) SetRegions(v []*string) *DistributionConfigurationSummary { + s.Regions = v + return s +} + // SetTags sets the Tags field's value. func (s *DistributionConfigurationSummary) SetTags(v map[string]*string) *DistributionConfigurationSummary { s.Tags = v @@ -7706,6 +9108,147 @@ func (s *GetComponentPolicyOutput) SetRequestId(v string) *GetComponentPolicyOut return s } +type GetContainerRecipeInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe to retrieve. + // + // ContainerRecipeArn is a required field + ContainerRecipeArn *string `location:"querystring" locationName:"containerRecipeArn" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetContainerRecipeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetContainerRecipeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetContainerRecipeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetContainerRecipeInput"} + if s.ContainerRecipeArn == nil { + invalidParams.Add(request.NewErrParamRequired("ContainerRecipeArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *GetContainerRecipeInput) SetContainerRecipeArn(v string) *GetContainerRecipeInput { + s.ContainerRecipeArn = &v + return s +} + +type GetContainerRecipeOutput struct { + _ struct{} `type:"structure"` + + // The container recipe object that is returned. + ContainerRecipe *ContainerRecipe `locationName:"containerRecipe" type:"structure"` + + // The request ID that uniquely identifies this request. + RequestId *string `locationName:"requestId" min:"1" type:"string"` +} + +// String returns the string representation +func (s GetContainerRecipeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetContainerRecipeOutput) GoString() string { + return s.String() +} + +// SetContainerRecipe sets the ContainerRecipe field's value. +func (s *GetContainerRecipeOutput) SetContainerRecipe(v *ContainerRecipe) *GetContainerRecipeOutput { + s.ContainerRecipe = v + return s +} + +// SetRequestId sets the RequestId field's value. +func (s *GetContainerRecipeOutput) SetRequestId(v string) *GetContainerRecipeOutput { + s.RequestId = &v + return s +} + +type GetContainerRecipePolicyInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe for the policy being + // requested. + // + // ContainerRecipeArn is a required field + ContainerRecipeArn *string `location:"querystring" locationName:"containerRecipeArn" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetContainerRecipePolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetContainerRecipePolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetContainerRecipePolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetContainerRecipePolicyInput"} + if s.ContainerRecipeArn == nil { + invalidParams.Add(request.NewErrParamRequired("ContainerRecipeArn")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *GetContainerRecipePolicyInput) SetContainerRecipeArn(v string) *GetContainerRecipePolicyInput { + s.ContainerRecipeArn = &v + return s +} + +type GetContainerRecipePolicyOutput struct { + _ struct{} `type:"structure"` + + // The container recipe policy object that is returned. + Policy *string `locationName:"policy" min:"1" type:"string"` + + // The request ID that uniquely identifies this request. + RequestId *string `locationName:"requestId" min:"1" type:"string"` +} + +// String returns the string representation +func (s GetContainerRecipePolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetContainerRecipePolicyOutput) GoString() string { + return s.String() +} + +// SetPolicy sets the Policy field's value. +func (s *GetContainerRecipePolicyOutput) SetPolicy(v string) *GetContainerRecipePolicyOutput { + s.Policy = &v + return s +} + +// SetRequestId sets the RequestId field's value. +func (s *GetContainerRecipePolicyOutput) SetRequestId(v string) *GetContainerRecipePolicyOutput { + s.RequestId = &v + return s +} + type GetDistributionConfigurationInput struct { _ struct{} `type:"structure"` @@ -8265,6 +9808,9 @@ type Image struct { // The Amazon Resource Name (ARN) of the image. Arn *string `locationName:"arn" type:"string"` + // The container recipe used to create the container image type. + ContainerRecipe *ContainerRecipe `locationName:"containerRecipe" type:"structure"` + // The date on which this image was created. DateCreated *string `locationName:"dateCreated" type:"string"` @@ -8311,6 +9857,9 @@ type Image struct { // The tags of the image. Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + // Specifies whether this is an AMI or container image. + Type *string `locationName:"type" type:"string" enum:"ImageType"` + // The semantic version of the image. Version *string `locationName:"version" type:"string"` } @@ -8331,6 +9880,12 @@ func (s *Image) SetArn(v string) *Image { return s } +// SetContainerRecipe sets the ContainerRecipe field's value. +func (s *Image) SetContainerRecipe(v *ContainerRecipe) *Image { + s.ContainerRecipe = v + return s +} + // SetDateCreated sets the DateCreated field's value. func (s *Image) SetDateCreated(v string) *Image { s.DateCreated = &v @@ -8415,6 +9970,12 @@ func (s *Image) SetTags(v map[string]*string) *Image { return s } +// SetType sets the Type field's value. +func (s *Image) SetType(v string) *Image { + s.Type = &v + return s +} + // SetVersion sets the Version field's value. func (s *Image) SetVersion(v string) *Image { s.Version = &v @@ -8428,6 +9989,10 @@ type ImagePipeline struct { // The Amazon Resource Name (ARN) of the image pipeline. Arn *string `locationName:"arn" type:"string"` + // The Amazon Resource Name (ARN) of the container recipe that is used for this + // pipeline. + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"` + // The date on which this image pipeline was created. DateCreated *string `locationName:"dateCreated" type:"string"` @@ -8496,6 +10061,12 @@ func (s *ImagePipeline) SetArn(v string) *ImagePipeline { return s } +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *ImagePipeline) SetContainerRecipeArn(v string) *ImagePipeline { + s.ContainerRecipeArn = &v + return s +} + // SetDateCreated sets the DateCreated field's value. func (s *ImagePipeline) SetDateCreated(v string) *ImagePipeline { s.DateCreated = &v @@ -8620,6 +10191,10 @@ type ImageRecipe struct { // The tags of the image recipe. Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + // Specifies which type of image is created by the recipe - an AMI or a container + // image. + Type *string `locationName:"type" type:"string" enum:"ImageType"` + // The version of the image recipe. Version *string `locationName:"version" type:"string"` @@ -8697,6 +10272,12 @@ func (s *ImageRecipe) SetTags(v map[string]*string) *ImageRecipe { return s } +// SetType sets the Type field's value. +func (s *ImageRecipe) SetType(v string) *ImageRecipe { + s.Type = &v + return s +} + // SetVersion sets the Version field's value. func (s *ImageRecipe) SetVersion(v string) *ImageRecipe { s.Version = &v @@ -8852,6 +10433,9 @@ type ImageSummary struct { // The tags of the image. Tags map[string]*string `locationName:"tags" min:"1" type:"map"` + // Specifies whether this is an AMI or container image. + Type *string `locationName:"type" type:"string" enum:"ImageType"` + // The version of the image. Version *string `locationName:"version" type:"string"` } @@ -8920,6 +10504,12 @@ func (s *ImageSummary) SetTags(v map[string]*string) *ImageSummary { return s } +// SetType sets the Type field's value. +func (s *ImageSummary) SetType(v string) *ImageSummary { + s.Type = &v + return s +} + // SetVersion sets the Version field's value. func (s *ImageSummary) SetVersion(v string) *ImageSummary { s.Version = &v @@ -8995,6 +10585,9 @@ type ImageVersion struct { // The platform of the image semantic version. Platform *string `locationName:"platform" type:"string" enum:"Platform"` + // Specifies whether this is an AMI or container image. + Type *string `locationName:"type" type:"string" enum:"ImageType"` + // The semantic version of the image semantic version. Version *string `locationName:"version" type:"string"` } @@ -9045,6 +10638,12 @@ func (s *ImageVersion) SetPlatform(v string) *ImageVersion { return s } +// SetType sets the Type field's value. +func (s *ImageVersion) SetType(v string) *ImageVersion { + s.Type = &v + return s +} + // SetVersion sets the Version field's value. func (s *ImageVersion) SetVersion(v string) *ImageVersion { s.Version = &v @@ -10075,6 +11674,9 @@ func (s *ListComponentBuildVersionsOutput) SetRequestId(v string) *ListComponent type ListComponentsInput struct { _ struct{} `type:"structure"` + // Returns the list of component build versions for the specified semantic version. + ByName *bool `locationName:"byName" type:"boolean"` + // The filters. Filters []*Filter `locationName:"filters" min:"1" type:"list"` @@ -10131,6 +11733,12 @@ func (s *ListComponentsInput) Validate() error { return nil } +// SetByName sets the ByName field's value. +func (s *ListComponentsInput) SetByName(v bool) *ListComponentsInput { + s.ByName = &v + return s +} + // SetFilters sets the Filters field's value. func (s *ListComponentsInput) SetFilters(v []*Filter) *ListComponentsInput { s.Filters = v @@ -10198,6 +11806,133 @@ func (s *ListComponentsOutput) SetRequestId(v string) *ListComponentsOutput { return s } +type ListContainerRecipesInput struct { + _ struct{} `type:"structure"` + + // Request filters that are used to narrow the list of container images that + // are returned. + Filters []*Filter `locationName:"filters" min:"1" type:"list"` + + // The maximum number of results to return in the list. + MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"` + + // Provides a token for pagination, which determines where to begin the next + // set of results when the current set reaches the maximum for one request. + NextToken *string `locationName:"nextToken" min:"1" type:"string"` + + // Returns container recipes belonging to the specified owner, that have been + // shared with you. You can omit this field to return container recipes belonging + // to your account. + Owner *string `locationName:"owner" type:"string" enum:"Ownership"` +} + +// String returns the string representation +func (s ListContainerRecipesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListContainerRecipesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListContainerRecipesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListContainerRecipesInput"} + if s.Filters != nil && len(s.Filters) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Filters", 1)) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.NextToken != nil && len(*s.NextToken) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NextToken", 1)) + } + if s.Filters != nil { + for i, v := range s.Filters { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilters sets the Filters field's value. +func (s *ListContainerRecipesInput) SetFilters(v []*Filter) *ListContainerRecipesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListContainerRecipesInput) SetMaxResults(v int64) *ListContainerRecipesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListContainerRecipesInput) SetNextToken(v string) *ListContainerRecipesInput { + s.NextToken = &v + return s +} + +// SetOwner sets the Owner field's value. +func (s *ListContainerRecipesInput) SetOwner(v string) *ListContainerRecipesInput { + s.Owner = &v + return s +} + +type ListContainerRecipesOutput struct { + _ struct{} `type:"structure"` + + // The list of container recipes returned for the request. + ContainerRecipeSummaryList []*ContainerRecipeSummary `locationName:"containerRecipeSummaryList" type:"list"` + + // The next token field is used for paginated responses. When this is not empty, + // there are additional container recipes that the service has not included + // in this response. Use this token with the next request to retrieve additional + // list items. + NextToken *string `locationName:"nextToken" min:"1" type:"string"` + + // The request ID that uniquely identifies this request. + RequestId *string `locationName:"requestId" min:"1" type:"string"` +} + +// String returns the string representation +func (s ListContainerRecipesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListContainerRecipesOutput) GoString() string { + return s.String() +} + +// SetContainerRecipeSummaryList sets the ContainerRecipeSummaryList field's value. +func (s *ListContainerRecipesOutput) SetContainerRecipeSummaryList(v []*ContainerRecipeSummary) *ListContainerRecipesOutput { + s.ContainerRecipeSummaryList = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListContainerRecipesOutput) SetNextToken(v string) *ListContainerRecipesOutput { + s.NextToken = &v + return s +} + +// SetRequestId sets the RequestId field's value. +func (s *ListContainerRecipesOutput) SetRequestId(v string) *ListContainerRecipesOutput { + s.RequestId = &v + return s +} + type ListDistributionConfigurationsInput struct { _ struct{} `type:"structure"` @@ -10815,9 +12550,15 @@ func (s *ListImageRecipesOutput) SetRequestId(v string) *ListImageRecipesOutput type ListImagesInput struct { _ struct{} `type:"structure"` + // Requests a list of images with a specific recipe name. + ByName *bool `locationName:"byName" type:"boolean"` + // The filters. Filters []*Filter `locationName:"filters" min:"1" type:"list"` + // Includes deprecated images in the response list. + IncludeDeprecated *bool `locationName:"includeDeprecated" type:"boolean"` + // The maximum items to return in a request. MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"` @@ -10871,12 +12612,24 @@ func (s *ListImagesInput) Validate() error { return nil } +// SetByName sets the ByName field's value. +func (s *ListImagesInput) SetByName(v bool) *ListImagesInput { + s.ByName = &v + return s +} + // SetFilters sets the Filters field's value. func (s *ListImagesInput) SetFilters(v []*Filter) *ListImagesInput { s.Filters = v return s } +// SetIncludeDeprecated sets the IncludeDeprecated field's value. +func (s *ListImagesInput) SetIncludeDeprecated(v bool) *ListImagesInput { + s.IncludeDeprecated = &v + return s +} + // SetMaxResults sets the MaxResults field's value. func (s *ListImagesInput) SetMaxResults(v int64) *ListImagesInput { s.MaxResults = &v @@ -11161,6 +12914,10 @@ type OutputResources struct { // The EC2 AMIs created by this image. Amis []*Ami `locationName:"amis" type:"list"` + + // Container images that the pipeline has generated and stored in the output + // repository. + Containers []*Container `locationName:"containers" type:"list"` } // String returns the string representation @@ -11179,6 +12936,12 @@ func (s *OutputResources) SetAmis(v []*Ami) *OutputResources { return s } +// SetContainers sets the Containers field's value. +func (s *OutputResources) SetContainers(v []*Container) *OutputResources { + s.Containers = v + return s +} + type PutComponentPolicyInput struct { _ struct{} `type:"structure"` @@ -11268,6 +13031,95 @@ func (s *PutComponentPolicyOutput) SetRequestId(v string) *PutComponentPolicyOut return s } +type PutContainerRecipePolicyInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe that this policy should + // be applied to. + // + // ContainerRecipeArn is a required field + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string" required:"true"` + + // The policy to apply to the container recipe. + // + // Policy is a required field + Policy *string `locationName:"policy" min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s PutContainerRecipePolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutContainerRecipePolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *PutContainerRecipePolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "PutContainerRecipePolicyInput"} + if s.ContainerRecipeArn == nil { + invalidParams.Add(request.NewErrParamRequired("ContainerRecipeArn")) + } + if s.Policy == nil { + invalidParams.Add(request.NewErrParamRequired("Policy")) + } + if s.Policy != nil && len(*s.Policy) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Policy", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *PutContainerRecipePolicyInput) SetContainerRecipeArn(v string) *PutContainerRecipePolicyInput { + s.ContainerRecipeArn = &v + return s +} + +// SetPolicy sets the Policy field's value. +func (s *PutContainerRecipePolicyInput) SetPolicy(v string) *PutContainerRecipePolicyInput { + s.Policy = &v + return s +} + +type PutContainerRecipePolicyOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the container recipe that this policy was + // applied to. + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"` + + // The request ID that uniquely identifies this request. + RequestId *string `locationName:"requestId" min:"1" type:"string"` +} + +// String returns the string representation +func (s PutContainerRecipePolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PutContainerRecipePolicyOutput) GoString() string { + return s.String() +} + +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *PutContainerRecipePolicyOutput) SetContainerRecipeArn(v string) *PutContainerRecipePolicyOutput { + s.ContainerRecipeArn = &v + return s +} + +// SetRequestId sets the RequestId field's value. +func (s *PutContainerRecipePolicyOutput) SetRequestId(v string) *PutContainerRecipePolicyOutput { + s.RequestId = &v + return s +} + type PutImagePolicyInput struct { _ struct{} `type:"structure"` @@ -12113,6 +13965,63 @@ func (s TagResourceOutput) GoString() string { return s.String() } +// The container repository where the output container image is stored. +type TargetContainerRepository struct { + _ struct{} `type:"structure"` + + // The name of the container repository where the output container image is + // stored. This name is prefixed by the repository location. + // + // RepositoryName is a required field + RepositoryName *string `locationName:"repositoryName" min:"1" type:"string" required:"true"` + + // Specifies the service in which this image was registered. + // + // Service is a required field + Service *string `locationName:"service" type:"string" required:"true" enum:"ContainerRepositoryService"` +} + +// String returns the string representation +func (s TargetContainerRepository) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TargetContainerRepository) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TargetContainerRepository) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TargetContainerRepository"} + if s.RepositoryName == nil { + invalidParams.Add(request.NewErrParamRequired("RepositoryName")) + } + if s.RepositoryName != nil && len(*s.RepositoryName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 1)) + } + if s.Service == nil { + invalidParams.Add(request.NewErrParamRequired("Service")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRepositoryName sets the RepositoryName field's value. +func (s *TargetContainerRepository) SetRepositoryName(v string) *TargetContainerRepository { + s.RepositoryName = &v + return s +} + +// SetService sets the Service field's value. +func (s *TargetContainerRepository) SetService(v string) *TargetContainerRepository { + s.Service = &v + return s +} + type UntagResourceInput struct { _ struct{} `type:"structure"` @@ -12320,6 +14229,9 @@ type UpdateImagePipelineInput struct { // The idempotency token used to make this request idempotent. ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"` + // The Amazon Resource Name (ARN) of the container pipeline to update. + ContainerRecipeArn *string `locationName:"containerRecipeArn" type:"string"` + // The description of the image pipeline. Description *string `locationName:"description" min:"1" type:"string"` @@ -12340,9 +14252,7 @@ type UpdateImagePipelineInput struct { // The Amazon Resource Name (ARN) of the image recipe that will be used to configure // images updated by this image pipeline. - // - // ImageRecipeArn is a required field - ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string" required:"true"` + ImageRecipeArn *string `locationName:"imageRecipeArn" type:"string"` // The image test configuration of the image pipeline. ImageTestsConfiguration *ImageTestsConfiguration `locationName:"imageTestsConfiguration" type:"structure"` @@ -12382,9 +14292,6 @@ func (s *UpdateImagePipelineInput) Validate() error { if s.ImagePipelineArn == nil { invalidParams.Add(request.NewErrParamRequired("ImagePipelineArn")) } - if s.ImageRecipeArn == nil { - invalidParams.Add(request.NewErrParamRequired("ImageRecipeArn")) - } if s.InfrastructureConfigurationArn == nil { invalidParams.Add(request.NewErrParamRequired("InfrastructureConfigurationArn")) } @@ -12411,6 +14318,12 @@ func (s *UpdateImagePipelineInput) SetClientToken(v string) *UpdateImagePipeline return s } +// SetContainerRecipeArn sets the ContainerRecipeArn field's value. +func (s *UpdateImagePipelineInput) SetContainerRecipeArn(v string) *UpdateImagePipelineInput { + s.ContainerRecipeArn = &v + return s +} + // SetDescription sets the Description field's value. func (s *UpdateImagePipelineInput) SetDescription(v string) *UpdateImagePipelineInput { s.Description = &v @@ -12750,6 +14663,30 @@ func ComponentType_Values() []string { } } +const ( + // ContainerRepositoryServiceEcr is a ContainerRepositoryService enum value + ContainerRepositoryServiceEcr = "ECR" +) + +// ContainerRepositoryService_Values returns all elements of the ContainerRepositoryService enum +func ContainerRepositoryService_Values() []string { + return []string{ + ContainerRepositoryServiceEcr, + } +} + +const ( + // ContainerTypeDocker is a ContainerType enum value + ContainerTypeDocker = "DOCKER" +) + +// ContainerType_Values returns all elements of the ContainerType enum +func ContainerType_Values() []string { + return []string{ + ContainerTypeDocker, + } +} + const ( // EbsVolumeTypeStandard is a EbsVolumeType enum value EbsVolumeTypeStandard = "standard" @@ -12834,6 +14771,22 @@ func ImageStatus_Values() []string { } } +const ( + // ImageTypeAmi is a ImageType enum value + ImageTypeAmi = "AMI" + + // ImageTypeDocker is a ImageType enum value + ImageTypeDocker = "DOCKER" +) + +// ImageType_Values returns all elements of the ImageType enum +func ImageType_Values() []string { + return []string{ + ImageTypeAmi, + ImageTypeDocker, + } +} + const ( // OwnershipSelf is a Ownership enum value OwnershipSelf = "Self" diff --git a/service/imagebuilder/doc.go b/service/imagebuilder/doc.go index b8fd6be903..9b3bd75526 100644 --- a/service/imagebuilder/doc.go +++ b/service/imagebuilder/doc.go @@ -5,7 +5,7 @@ // // EC2 Image Builder is a fully managed AWS service that makes it easier to // automate the creation, management, and deployment of customized, secure, -// and up-to-date “golden” server images that are pre-installed and pre-configured +// and up-to-date "golden" server images that are pre-installed and pre-configured // with software and settings to meet specific IT standards. // // See https://docs.aws.amazon.com/goto/WebAPI/imagebuilder-2019-12-02 for more information on this service. diff --git a/service/imagebuilder/imagebuilderiface/interface.go b/service/imagebuilder/imagebuilderiface/interface.go index 183d2a4589..53ff7c2927 100644 --- a/service/imagebuilder/imagebuilderiface/interface.go +++ b/service/imagebuilder/imagebuilderiface/interface.go @@ -68,6 +68,10 @@ type ImagebuilderAPI interface { CreateComponentWithContext(aws.Context, *imagebuilder.CreateComponentInput, ...request.Option) (*imagebuilder.CreateComponentOutput, error) CreateComponentRequest(*imagebuilder.CreateComponentInput) (*request.Request, *imagebuilder.CreateComponentOutput) + CreateContainerRecipe(*imagebuilder.CreateContainerRecipeInput) (*imagebuilder.CreateContainerRecipeOutput, error) + CreateContainerRecipeWithContext(aws.Context, *imagebuilder.CreateContainerRecipeInput, ...request.Option) (*imagebuilder.CreateContainerRecipeOutput, error) + CreateContainerRecipeRequest(*imagebuilder.CreateContainerRecipeInput) (*request.Request, *imagebuilder.CreateContainerRecipeOutput) + CreateDistributionConfiguration(*imagebuilder.CreateDistributionConfigurationInput) (*imagebuilder.CreateDistributionConfigurationOutput, error) CreateDistributionConfigurationWithContext(aws.Context, *imagebuilder.CreateDistributionConfigurationInput, ...request.Option) (*imagebuilder.CreateDistributionConfigurationOutput, error) CreateDistributionConfigurationRequest(*imagebuilder.CreateDistributionConfigurationInput) (*request.Request, *imagebuilder.CreateDistributionConfigurationOutput) @@ -92,6 +96,10 @@ type ImagebuilderAPI interface { DeleteComponentWithContext(aws.Context, *imagebuilder.DeleteComponentInput, ...request.Option) (*imagebuilder.DeleteComponentOutput, error) DeleteComponentRequest(*imagebuilder.DeleteComponentInput) (*request.Request, *imagebuilder.DeleteComponentOutput) + DeleteContainerRecipe(*imagebuilder.DeleteContainerRecipeInput) (*imagebuilder.DeleteContainerRecipeOutput, error) + DeleteContainerRecipeWithContext(aws.Context, *imagebuilder.DeleteContainerRecipeInput, ...request.Option) (*imagebuilder.DeleteContainerRecipeOutput, error) + DeleteContainerRecipeRequest(*imagebuilder.DeleteContainerRecipeInput) (*request.Request, *imagebuilder.DeleteContainerRecipeOutput) + DeleteDistributionConfiguration(*imagebuilder.DeleteDistributionConfigurationInput) (*imagebuilder.DeleteDistributionConfigurationOutput, error) DeleteDistributionConfigurationWithContext(aws.Context, *imagebuilder.DeleteDistributionConfigurationInput, ...request.Option) (*imagebuilder.DeleteDistributionConfigurationOutput, error) DeleteDistributionConfigurationRequest(*imagebuilder.DeleteDistributionConfigurationInput) (*request.Request, *imagebuilder.DeleteDistributionConfigurationOutput) @@ -120,6 +128,14 @@ type ImagebuilderAPI interface { GetComponentPolicyWithContext(aws.Context, *imagebuilder.GetComponentPolicyInput, ...request.Option) (*imagebuilder.GetComponentPolicyOutput, error) GetComponentPolicyRequest(*imagebuilder.GetComponentPolicyInput) (*request.Request, *imagebuilder.GetComponentPolicyOutput) + GetContainerRecipe(*imagebuilder.GetContainerRecipeInput) (*imagebuilder.GetContainerRecipeOutput, error) + GetContainerRecipeWithContext(aws.Context, *imagebuilder.GetContainerRecipeInput, ...request.Option) (*imagebuilder.GetContainerRecipeOutput, error) + GetContainerRecipeRequest(*imagebuilder.GetContainerRecipeInput) (*request.Request, *imagebuilder.GetContainerRecipeOutput) + + GetContainerRecipePolicy(*imagebuilder.GetContainerRecipePolicyInput) (*imagebuilder.GetContainerRecipePolicyOutput, error) + GetContainerRecipePolicyWithContext(aws.Context, *imagebuilder.GetContainerRecipePolicyInput, ...request.Option) (*imagebuilder.GetContainerRecipePolicyOutput, error) + GetContainerRecipePolicyRequest(*imagebuilder.GetContainerRecipePolicyInput) (*request.Request, *imagebuilder.GetContainerRecipePolicyOutput) + GetDistributionConfiguration(*imagebuilder.GetDistributionConfigurationInput) (*imagebuilder.GetDistributionConfigurationOutput, error) GetDistributionConfigurationWithContext(aws.Context, *imagebuilder.GetDistributionConfigurationInput, ...request.Option) (*imagebuilder.GetDistributionConfigurationOutput, error) GetDistributionConfigurationRequest(*imagebuilder.GetDistributionConfigurationInput) (*request.Request, *imagebuilder.GetDistributionConfigurationOutput) @@ -166,6 +182,13 @@ type ImagebuilderAPI interface { ListComponentsPages(*imagebuilder.ListComponentsInput, func(*imagebuilder.ListComponentsOutput, bool) bool) error ListComponentsPagesWithContext(aws.Context, *imagebuilder.ListComponentsInput, func(*imagebuilder.ListComponentsOutput, bool) bool, ...request.Option) error + ListContainerRecipes(*imagebuilder.ListContainerRecipesInput) (*imagebuilder.ListContainerRecipesOutput, error) + ListContainerRecipesWithContext(aws.Context, *imagebuilder.ListContainerRecipesInput, ...request.Option) (*imagebuilder.ListContainerRecipesOutput, error) + ListContainerRecipesRequest(*imagebuilder.ListContainerRecipesInput) (*request.Request, *imagebuilder.ListContainerRecipesOutput) + + ListContainerRecipesPages(*imagebuilder.ListContainerRecipesInput, func(*imagebuilder.ListContainerRecipesOutput, bool) bool) error + ListContainerRecipesPagesWithContext(aws.Context, *imagebuilder.ListContainerRecipesInput, func(*imagebuilder.ListContainerRecipesOutput, bool) bool, ...request.Option) error + ListDistributionConfigurations(*imagebuilder.ListDistributionConfigurationsInput) (*imagebuilder.ListDistributionConfigurationsOutput, error) ListDistributionConfigurationsWithContext(aws.Context, *imagebuilder.ListDistributionConfigurationsInput, ...request.Option) (*imagebuilder.ListDistributionConfigurationsOutput, error) ListDistributionConfigurationsRequest(*imagebuilder.ListDistributionConfigurationsInput) (*request.Request, *imagebuilder.ListDistributionConfigurationsOutput) @@ -223,6 +246,10 @@ type ImagebuilderAPI interface { PutComponentPolicyWithContext(aws.Context, *imagebuilder.PutComponentPolicyInput, ...request.Option) (*imagebuilder.PutComponentPolicyOutput, error) PutComponentPolicyRequest(*imagebuilder.PutComponentPolicyInput) (*request.Request, *imagebuilder.PutComponentPolicyOutput) + PutContainerRecipePolicy(*imagebuilder.PutContainerRecipePolicyInput) (*imagebuilder.PutContainerRecipePolicyOutput, error) + PutContainerRecipePolicyWithContext(aws.Context, *imagebuilder.PutContainerRecipePolicyInput, ...request.Option) (*imagebuilder.PutContainerRecipePolicyOutput, error) + PutContainerRecipePolicyRequest(*imagebuilder.PutContainerRecipePolicyInput) (*request.Request, *imagebuilder.PutContainerRecipePolicyOutput) + PutImagePolicy(*imagebuilder.PutImagePolicyInput) (*imagebuilder.PutImagePolicyOutput, error) PutImagePolicyWithContext(aws.Context, *imagebuilder.PutImagePolicyInput, ...request.Option) (*imagebuilder.PutImagePolicyOutput, error) PutImagePolicyRequest(*imagebuilder.PutImagePolicyInput) (*request.Request, *imagebuilder.PutImagePolicyOutput) diff --git a/service/kms/api.go b/service/kms/api.go index 8e2aae8e5d..657cfd7a32 100644 --- a/service/kms/api.go +++ b/service/kms/api.go @@ -59,7 +59,6 @@ func (c *KMS) CancelKeyDeletionRequest(input *CancelKeyDeletionInput) (req *requ // // Cancels the deletion of a customer master key (CMK). When this operation // succeeds, the key state of the CMK is Disabled. To enable the CMK, use EnableKey. -// You cannot perform this operation on a CMK in a different AWS account. // // For more information about scheduling and canceling deletion of a CMK, see // Deleting Customer Master Keys (https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) @@ -69,6 +68,14 @@ func (c *KMS) CancelKeyDeletionRequest(input *CancelKeyDeletionInput) (req *requ // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:CancelKeyDeletion (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: ScheduleKeyDeletion +// // 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. @@ -208,6 +215,24 @@ func (c *KMS) ConnectCustomKeyStoreRequest(input *ConnectCustomKeyStoreInput) (r // see Troubleshooting a Custom Key Store (https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a custom key +// store in a different AWS account. +// +// Required permissions: kms:ConnectCustomKeyStore (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// +// Related operations +// +// * CreateCustomKeyStore +// +// * DeleteCustomKeyStore +// +// * DescribeCustomKeyStores +// +// * DisconnectCustomKeyStore +// +// * UpdateCustomKeyStore +// // 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. @@ -349,71 +374,53 @@ func (c *KMS) CreateAliasRequest(input *CreateAliasInput) (req *request.Request, // CreateAlias API operation for AWS Key Management Service. // -// Creates a display name for a customer managed customer master key (CMK). -// You can use an alias to identify a CMK in cryptographic operations (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), -// such as Encrypt and GenerateDataKey. You can change the CMK associated with -// the alias at any time. +// Creates a friendly name for a customer master key (CMK). You can use an alias +// to identify a CMK in the AWS KMS console, in the DescribeKey operation and +// in cryptographic operations (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), +// such as Encrypt and GenerateDataKey. // -// Aliases are easier to remember than key IDs. They can also help to simplify -// your applications. For example, if you use an alias in your code, you can -// change the CMK your code uses by associating a given alias with a different -// CMK. +// You can also change the CMK that's associated with the alias (UpdateAlias) +// or delete the alias (DeleteAlias) at any time. These operations don't affect +// the underlying CMK. // -// To run the same code in multiple AWS regions, use an alias in your code, -// such as alias/ApplicationKey. Then, in each AWS Region, create an alias/ApplicationKey -// alias that is associated with a CMK in that Region. When you run your code, -// it uses the alias/ApplicationKey CMK for that AWS Region without any Region-specific -// code. +// You can associate the alias with any customer managed CMK in the same AWS +// Region. Each alias is associated with only on CMK at a time, but a CMK can +// have multiple aliases. A valid CMK is required. You can't create an alias +// without a CMK. +// +// The alias must be unique in the account and Region, but you can have aliases +// with the same name in different Regions. For detailed information about aliases, +// see Using aliases (https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html) +// in the AWS Key Management Service Developer Guide. // // This operation does not return a response. To get the alias that you created, // use the ListAliases operation. // -// To use aliases successfully, be aware of the following information. +// The CMK that you use for this operation must be in a compatible key state. +// For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) +// in the AWS Key Management Service Developer Guide. // -// * Each alias points to only one CMK at a time, although a single CMK can -// have multiple aliases. The alias and its associated CMK must be in the -// same AWS account and Region. +// Cross-account use: No. You cannot perform this operation on an alias in a +// different AWS account. // -// * You can associate an alias with any customer managed CMK in the same -// AWS account and Region. However, you do not have permission to associate -// an alias with an AWS managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) -// or an AWS owned CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk). +// Required permissions // -// * To change the CMK associated with an alias, use the UpdateAlias operation. -// The current CMK and the new CMK must be the same type (both symmetric -// or both asymmetric) and they must have the same key usage (ENCRYPT_DECRYPT -// or SIGN_VERIFY). This restriction prevents cryptographic errors in code -// that uses aliases. +// * kms:CreateAlias (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// on the alias (IAM policy). // -// * The alias name must begin with alias/ followed by a name, such as alias/ExampleAlias. -// It can contain only alphanumeric characters, forward slashes (/), underscores -// (_), and dashes (-). The alias name cannot begin with alias/aws/. The -// alias/aws/ prefix is reserved for AWS managed CMKs (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). +// * kms:CreateAlias (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// on the CMK (key policy). // -// * The alias name must be unique within an AWS Region. However, you can -// use the same alias name in multiple Regions of the same AWS account. Each -// instance of the alias is associated with a CMK in its Region. +// For details, see Controlling access to aliases (https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access) +// in the AWS Key Management Service Developer Guide. // -// * After you create an alias, you cannot change its alias name. However, -// you can use the DeleteAlias operation to delete the alias and then create -// a new alias with the desired name. +// Related operations: // -// * You can use an alias name or alias ARN to identify a CMK in AWS KMS -// cryptographic operations (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations) -// and in the DescribeKey operation. However, you cannot use alias names -// or alias ARNs in API operations that manage CMKs, such as DisableKey or -// GetKeyPolicy. For information about the valid CMK identifiers for each -// AWS KMS API operation, see the descriptions of the KeyId parameter in -// the API operation documentation. +// * DeleteAlias // -// Because an alias is not a property of a CMK, you can delete and change the -// aliases of a CMK without affecting the CMK. Also, aliases do not appear in -// the response from the DescribeKey operation. To get the aliases and alias -// ARNs of CMKs in each AWS account and Region, use the ListAliases operation. +// * ListAliases // -// The CMK that you use for this operation must be in a compatible key state. -// For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) -// in the AWS Key Management Service Developer Guide. +// * UpdateAlias // // 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 @@ -545,6 +552,24 @@ func (c *KMS) CreateCustomKeyStoreRequest(input *CreateCustomKeyStoreInput) (req // For help with failures, see Troubleshooting a Custom Key Store (https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a custom key +// store in a different AWS account. +// +// Required permissions: kms:CreateCustomKeyStore (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy). +// +// Related operations: +// +// * ConnectCustomKeyStore +// +// * DeleteCustomKeyStore +// +// * DescribeCustomKeyStores +// +// * DisconnectCustomKeyStore +// +// * UpdateCustomKeyStore +// // 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. @@ -723,17 +748,30 @@ func (c *KMS) CreateGrantRequest(input *CreateGrantInput) (req *request.Request, // // For information about symmetric and asymmetric CMKs, see Using Symmetric // and Asymmetric CMKs (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) -// in the AWS Key Management Service Developer Guide. -// -// To perform this operation on a CMK in a different AWS account, specify the -// key ARN in the value of the KeyId parameter. For more information about grants, -// see Grants (https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) +// in the AWS Key Management Service Developer Guide. For more information about +// grants, see Grants (https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) // in the AWS Key Management Service Developer Guide . // // The CMK that you use for this operation must be in a compatible key state. // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. To perform this operation on a CMK in a different +// AWS account, specify the key ARN in the value of the KeyId parameter. +// +// Required permissions: kms:CreateGrant (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * ListGrants +// +// * ListRetirableGrants +// +// * RetireGrant +// +// * RevokeGrant +// // 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. @@ -844,8 +882,7 @@ func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, out // CreateKey API operation for AWS Key Management Service. // // Creates a unique customer managed customer master key (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master-keys) -// (CMK) in your AWS account and Region. You cannot use this operation to create -// a CMK in a different AWS account. +// (CMK) in your AWS account and Region. // // You can use the CreateKey operation to create symmetric or asymmetric CMKs. // @@ -906,6 +943,23 @@ func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, out // about custom key stores in AWS KMS see Using Custom Key Stores (https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html) // in the AWS Key Management Service Developer Guide . // +// Cross-account use: No. You cannot use this operation to create a CMK in a +// different AWS account. +// +// Required permissions: kms:CreateKey (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy). To use the Tags parameter, kms:TagResource (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy). For examples and information about related permissions, see +// Allow a user to create CMKs (https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policy-example-create-key) +// in the AWS Key Management Service Developer Guide. +// +// Related operations: +// +// * DescribeKey +// +// * ListKeys +// +// * ScheduleKeyDeletion +// // 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. @@ -1091,12 +1145,15 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output // These libraries return a ciphertext format that is incompatible with AWS // KMS. // -// If the ciphertext was encrypted under a symmetric CMK, you do not need to -// specify the CMK or the encryption algorithm. AWS KMS can get this information -// from metadata that it adds to the symmetric ciphertext blob. However, if -// you prefer, you can specify the KeyId to ensure that a particular CMK is -// used to decrypt the ciphertext. If you specify a different CMK than the one -// used to encrypt the ciphertext, the Decrypt operation fails. +// If the ciphertext was encrypted under a symmetric CMK, the KeyId parameter +// is optional. AWS KMS can get this information from metadata that it adds +// to the symmetric ciphertext blob. This feature adds durability to your implementation +// by ensuring that authorized users can decrypt ciphertext decades after it +// was encrypted, even if they've lost track of the CMK ID. However, specifying +// the CMK is always recommended as a best practice. When you use the KeyId +// parameter to specify a CMK, AWS KMS only uses the CMK you specify. If the +// ciphertext was encrypted under a different CMK, the Decrypt operation fails. +// This practice ensures that you use the CMK that you intend. // // Whenever possible, use key policies to give users permission to call the // Decrypt operation on a particular CMK, instead of using IAM policies. Otherwise, @@ -1104,12 +1161,30 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output // on all CMKs. This user could decrypt ciphertext that was encrypted by CMKs // in other accounts if the key policy for the cross-account CMK permits it. // If you must use an IAM policy for Decrypt permissions, limit the user to -// particular CMKs or particular trusted accounts. +// particular CMKs or particular trusted accounts. For details, see Best practices +// for IAM policies (https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policies-best-practices) +// in the AWS Key Management Service Developer Guide. // // The CMK that you use for this operation must be in a compatible key state. // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. You can decrypt a ciphertext using a CMK in a different +// AWS account. +// +// Required permissions: kms:Decrypt (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * Encrypt +// +// * GenerateDataKey +// +// * GenerateDataKeyPair +// +// * ReEncrypt +// // 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. @@ -1244,8 +1319,7 @@ func (c *KMS) DeleteAliasRequest(input *DeleteAliasInput) (req *request.Request, // DeleteAlias API operation for AWS Key Management Service. // -// Deletes the specified alias. You cannot perform this operation on an alias -// in a different AWS account. +// Deletes the specified alias. // // Because an alias is not a property of a CMK, you can delete and change the // aliases of a CMK without affecting the CMK. Also, aliases do not appear in @@ -1256,6 +1330,28 @@ func (c *KMS) DeleteAliasRequest(input *DeleteAliasInput) (req *request.Request, // to delete the current alias and CreateAlias to create a new alias. To associate // an existing alias with a different customer master key (CMK), call UpdateAlias. // +// Cross-account use: No. You cannot perform this operation on an alias in a +// different AWS account. +// +// Required permissions +// +// * kms:DeleteAlias (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// on the alias (IAM policy). +// +// * kms:DeleteAlias (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// on the CMK (key policy). +// +// For details, see Controlling access to aliases (https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access) +// in the AWS Key Management Service Developer Guide. +// +// Related operations: +// +// * CreateAlias +// +// * ListAliases +// +// * UpdateAlias +// // 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. @@ -1381,6 +1477,24 @@ func (c *KMS) DeleteCustomKeyStoreRequest(input *DeleteCustomKeyStoreInput) (req // feature in AWS KMS, which combines the convenience and extensive integration // of AWS KMS with the isolation and control of a single-tenant key store. // +// Cross-account use: No. You cannot perform this operation on a custom key +// store in a different AWS account. +// +// Required permissions: kms:DeleteCustomKeyStore (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// +// Related operations: +// +// * ConnectCustomKeyStore +// +// * CreateCustomKeyStore +// +// * DescribeCustomKeyStores +// +// * DisconnectCustomKeyStore +// +// * UpdateCustomKeyStore +// // 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. @@ -1492,8 +1606,7 @@ func (c *KMS) DeleteImportedKeyMaterialRequest(input *DeleteImportedKeyMaterialI // Deletes key material that you previously imported. This operation makes the // specified customer master key (CMK) unusable. For more information about // importing key material into AWS KMS, see Importing Key Material (https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) -// in the AWS Key Management Service Developer Guide. You cannot perform this -// operation on a CMK in a different AWS account. +// in the AWS Key Management Service Developer Guide. // // When the specified CMK is in the PendingDeletion state, this operation does // not change the CMK's state. Otherwise, it changes the CMK's state to PendingImport. @@ -1505,6 +1618,18 @@ func (c *KMS) DeleteImportedKeyMaterialRequest(input *DeleteImportedKeyMaterialI // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:DeleteImportedKeyMaterial (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * GetParametersForImport +// +// * ImportKeyMaterial +// // 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. @@ -1635,6 +1760,24 @@ func (c *KMS) DescribeCustomKeyStoresRequest(input *DescribeCustomKeyStoresInput // Key Stores (https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html) // topic in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a custom key +// store in a different AWS account. +// +// Required permissions: kms:DescribeCustomKeyStores (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// +// Related operations: +// +// * ConnectCustomKeyStore +// +// * CreateCustomKeyStore +// +// * DeleteCustomKeyStore +// +// * DisconnectCustomKeyStore +// +// * UpdateCustomKeyStore +// // 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. @@ -1750,8 +1893,27 @@ func (c *KMS) DescribeKeyRequest(input *DescribeKeyInput) (req *request.Request, // Then, it associates the alias with the new CMK, and returns the KeyId and // Arn of the new CMK in the response. // -// To perform this operation on a CMK in a different AWS account, specify the -// key ARN or alias ARN in the value of the KeyId parameter. +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:DescribeKey (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * GetKeyPolicy +// +// * GetKeyRotationStatus +// +// * ListAliases +// +// * ListGrants +// +// * ListKeys +// +// * ListResourceTags +// +// * ListRetirableGrants // // 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 @@ -1844,9 +2006,8 @@ func (c *KMS) DisableKeyRequest(input *DisableKeyInput) (req *request.Request, o // DisableKey API operation for AWS Key Management Service. // -// Sets the state of a customer master key (CMK) to disabled, thereby preventing -// its use for cryptographic operations (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). -// You cannot perform this operation on a CMK in a different AWS account. +// Sets the state of a customer master key (CMK) to disabled. This change temporarily +// prevents use of the CMK for cryptographic operations (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). // // For more information about how key state affects the use of a CMK, see How // Key State Affects the Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) @@ -1856,6 +2017,14 @@ func (c *KMS) DisableKeyRequest(input *DisableKeyInput) (req *request.Request, o // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:DisableKey (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: EnableKey +// // 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. @@ -1960,12 +2129,23 @@ func (c *KMS) DisableKeyRotationRequest(input *DisableKeyRotationInput) (req *re // // You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported // key material, or CMKs in a custom key store (https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). -// You cannot perform this operation on a CMK in a different AWS account. // // The CMK that you use for this operation must be in a compatible key state. // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:DisableKeyRotation (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * EnableKeyRotation +// +// * GetKeyRotationStatus +// // 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. @@ -2094,6 +2274,24 @@ func (c *KMS) DisconnectCustomKeyStoreRequest(input *DisconnectCustomKeyStoreInp // feature in AWS KMS, which combines the convenience and extensive integration // of AWS KMS with the isolation and control of a single-tenant key store. // +// Cross-account use: No. You cannot perform this operation on a custom key +// store in a different AWS account. +// +// Required permissions: kms:DisconnectCustomKeyStore (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// +// Related operations: +// +// * ConnectCustomKeyStore +// +// * CreateCustomKeyStore +// +// * DeleteCustomKeyStore +// +// * DescribeCustomKeyStores +// +// * UpdateCustomKeyStore +// // 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. @@ -2198,12 +2396,19 @@ func (c *KMS) EnableKeyRequest(input *EnableKeyInput) (req *request.Request, out // // Sets the key state of a customer master key (CMK) to enabled. This allows // you to use the CMK for cryptographic operations (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). -// You cannot perform this operation on a CMK in a different AWS account. // // The CMK that you use for this operation must be in a compatible key state. // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:EnableKey (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: DisableKey +// // 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. @@ -2309,8 +2514,7 @@ func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *requ // EnableKeyRotation API operation for AWS Key Management Service. // // Enables automatic rotation of the key material (https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) -// for the specified symmetric customer master key (CMK). You cannot perform -// this operation on a CMK in a different AWS account. +// for the specified symmetric customer master key (CMK). // // You cannot enable automatic rotation of asymmetric CMKs, CMKs with imported // key material, or CMKs in a custom key store (https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). @@ -2319,6 +2523,18 @@ func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *requ // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:EnableKeyRotation (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * DisableKeyRotation +// +// * GetKeyRotationStatus +// // 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. @@ -2484,8 +2700,19 @@ func (c *KMS) EncryptRequest(input *EncryptInput) (req *request.Request, output // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // -// To perform this operation on a CMK in a different AWS account, specify the -// key ARN or alias ARN in the value of the KeyId parameter. +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:Encrypt (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * Decrypt +// +// * GenerateDataKey +// +// * GenerateDataKeyPair // // 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 @@ -2663,6 +2890,24 @@ func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request. // Use the plaintext data key to decrypt data outside of AWS KMS, then erase // the plaintext data key from memory. // +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:GenerateDataKey (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * Decrypt +// +// * Encrypt +// +// * GenerateDataKeyPair +// +// * GenerateDataKeyPairWithoutPlaintext +// +// * GenerateDataKeyWithoutPlaintext +// // 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. @@ -2820,6 +3065,24 @@ func (c *KMS) GenerateDataKeyPairRequest(input *GenerateDataKeyPairInput) (req * // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:GenerateDataKeyPair (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * Decrypt +// +// * Encrypt +// +// * GenerateDataKey +// +// * GenerateDataKeyPairWithoutPlaintext +// +// * GenerateDataKeyWithoutPlaintext +// // 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. @@ -2974,6 +3237,24 @@ func (c *KMS) GenerateDataKeyPairWithoutPlaintextRequest(input *GenerateDataKeyP // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:GenerateDataKeyPairWithoutPlaintext (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * Decrypt +// +// * Encrypt +// +// * GenerateDataKey +// +// * GenerateDataKeyPair +// +// * GenerateDataKeyWithoutPlaintext +// // 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. @@ -3140,6 +3421,24 @@ func (c *KMS) GenerateDataKeyWithoutPlaintextRequest(input *GenerateDataKeyWitho // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:GenerateDataKeyWithoutPlaintext (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * Decrypt +// +// * Encrypt +// +// * GenerateDataKey +// +// * GenerateDataKeyPair +// +// * GenerateDataKeyPairWithoutPlaintext +// // 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. @@ -3270,6 +3569,9 @@ func (c *KMS) GenerateRandomRequest(input *GenerateRandomInput) (req *request.Re // AWS Key Management Service Cryptographic Details (https://d0.awsstatic.com/whitepapers/KMS-Cryptographic-Details.pdf) // whitepaper. // +// Required permissions: kms:GenerateRandom (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// // 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. @@ -3375,8 +3677,15 @@ func (c *KMS) GetKeyPolicyRequest(input *GetKeyPolicyInput) (req *request.Reques // GetKeyPolicy API operation for AWS Key Management Service. // -// Gets a key policy attached to the specified customer master key (CMK). You -// cannot perform this operation on a CMK in a different AWS account. +// Gets a key policy attached to the specified customer master key (CMK). +// +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:GetKeyPolicy (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: PutKeyPolicy // // 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 @@ -3496,8 +3805,17 @@ func (c *KMS) GetKeyRotationStatusRequest(input *GetKeyRotationStatusInput) (req // status is false and AWS KMS does not rotate the backing key. If you cancel // the deletion, the original key rotation status is restored. // -// To perform this operation on a CMK in a different AWS account, specify the -// key ARN in the value of the KeyId parameter. +// Cross-account use: Yes. To perform this operation on a CMK in a different +// AWS account, specify the key ARN in the value of the KeyId parameter. +// +// Required permissions: kms:GetKeyRotationStatus (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * DisableKeyRotation +// +// * EnableKeyRotation // // 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 @@ -3626,6 +3944,18 @@ func (c *KMS) GetParametersForImportRequest(input *GetParametersForImportInput) // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:GetParametersForImport (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * ImportKeyMaterial +// +// * DeleteImportedKeyMaterial +// // 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. @@ -3770,6 +4100,14 @@ func (c *KMS) GetPublicKeyRequest(input *GetPublicKeyInput) (req *request.Reques // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:GetPublicKey (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: CreateKey +// // 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. @@ -3945,6 +4283,18 @@ func (c *KMS) ImportKeyMaterialRequest(input *ImportKeyMaterialInput) (req *requ // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:ImportKeyMaterial (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * DeleteImportedKeyMaterial +// +// * GetParametersForImport +// // 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. @@ -4076,12 +4426,12 @@ func (c *KMS) ListAliasesRequest(input *ListAliasesInput) (req *request.Request, // ListAliases API operation for AWS Key Management Service. // -// Gets a list of aliases in the caller's AWS account and region. You cannot -// list aliases in other accounts. For more information about aliases, see CreateAlias. +// Gets a list of aliases in the caller's AWS account and region. For more information +// about aliases, see CreateAlias. // -// By default, the ListAliases command returns all aliases in the account and -// region. To get only the aliases that point to a particular customer master -// key (CMK), use the KeyId parameter. +// By default, the ListAliases operation returns all aliases in the account +// and region. To get only the aliases associated with a particular customer +// master key (CMK), use the KeyId parameter. // // The ListAliases response can include aliases that you created and associated // with your customer managed CMKs, and aliases that AWS created and associated @@ -4093,6 +4443,22 @@ func (c *KMS) ListAliasesRequest(input *ListAliasesInput) (req *request.Request, // a CMK. Aliases that AWS creates in your account, including predefined aliases, // do not count against your AWS KMS aliases quota (https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#aliases-limit). // +// Cross-account use: No. ListAliases does not return aliases in other AWS accounts. +// +// Required permissions: kms:ListAliases (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// +// For details, see Controlling access to aliases (https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access) +// in the AWS Key Management Service Developer Guide. +// +// Related operations: +// +// * CreateAlias +// +// * DeleteAlias +// +// * UpdateAlias +// // 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. @@ -4247,15 +4613,28 @@ func (c *KMS) ListGrantsRequest(input *ListGrantsInput) (req *request.Request, o // // Gets a list of all grants for the specified customer master key (CMK). // -// To perform this operation on a CMK in a different AWS account, specify the -// key ARN in the value of the KeyId parameter. -// // The GranteePrincipal field in the ListGrants response usually contains the // user or role designated as the grantee principal in the grant. However, when // the grantee principal in the grant is an AWS service, the GranteePrincipal // field contains the service principal (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), // which might represent several different grantee principals. // +// Cross-account use: Yes. To perform this operation on a CMK in a different +// AWS account, specify the key ARN in the value of the KeyId parameter. +// +// Required permissions: kms:ListGrants (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * CreateGrant +// +// * ListRetirableGrants +// +// * RetireGrant +// +// * RevokeGrant +// // 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. @@ -4419,7 +4798,18 @@ func (c *KMS) ListKeyPoliciesRequest(input *ListKeyPoliciesInput) (req *request. // Gets the names of the key policies that are attached to a customer master // key (CMK). This operation is designed to get policy names that you can use // in a GetKeyPolicy operation. However, the only valid policy name is default. -// You cannot perform this operation on a CMK in a different AWS account. +// +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:ListKeyPolicies (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * GetKeyPolicy +// +// * PutKeyPolicy // // 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 @@ -4580,6 +4970,22 @@ func (c *KMS) ListKeysRequest(input *ListKeysInput) (req *request.Request, outpu // Gets a list of all customer master keys (CMKs) in the caller's AWS account // and Region. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:ListKeys (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// +// Related operations: +// +// * CreateKey +// +// * DescribeKey +// +// * ListAliases +// +// * ListResourceTags +// // 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. @@ -4718,9 +5124,24 @@ func (c *KMS) ListResourceTagsRequest(input *ListResourceTagsInput) (req *reques // ListResourceTags API operation for AWS Key Management Service. // -// Returns a list of all tags for the specified customer master key (CMK). +// Returns all tags on the specified customer master key (CMK). +// +// For general information about tags, including the format and syntax, see +// Tagging AWS resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) +// in the Amazon Web Services General Reference. For information about using +// tags in AWS KMS, see Tagging keys (https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html). +// +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:ListResourceTags (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) // -// You cannot perform this operation on a CMK in a different AWS account. +// Related operations: +// +// * TagResource +// +// * UntagResource // // 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 @@ -4812,11 +5233,32 @@ func (c *KMS) ListRetirableGrantsRequest(input *ListRetirableGrantsInput) (req * // ListRetirableGrants API operation for AWS Key Management Service. // -// Returns a list of all grants for which the grant's RetiringPrincipal matches -// the one specified. +// Returns all grants in which the specified principal is the RetiringPrincipal +// in the grant. +// +// You can specify any principal in your AWS account. The grants that are returned +// include grants for CMKs in your AWS account and other AWS accounts. +// +// You might use this operation to determine which grants you may retire. To +// retire a grant, use the RetireGrant operation. +// +// Cross-account use: You must specify a principal in your AWS account. However, +// this operation can return grants in any AWS account. You do not need kms:ListRetirableGrants +// permission (or any other additional permission) in any AWS account other +// than your own. +// +// Required permissions: kms:ListRetirableGrants (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) in your AWS account. // -// A typical use is to list all grants that you are able to retire. To retire -// a grant, use RetireGrant. +// Related operations: +// +// * CreateGrant +// +// * ListGrants +// +// * RetireGrant +// +// * RevokeGrant // // 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 @@ -4913,12 +5355,23 @@ func (c *KMS) PutKeyPolicyRequest(input *PutKeyPolicyInput) (req *request.Reques // PutKeyPolicy API operation for AWS Key Management Service. // -// Attaches a key policy to the specified customer master key (CMK). You cannot -// perform this operation on a CMK in a different AWS account. +// Attaches a key policy to the specified customer master key (CMK). // // For more information about key policies, see Key Policies (https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) +// in the AWS Key Management Service Developer Guide. For help writing and formatting +// a JSON policy document, see the IAM JSON Policy Reference (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) +// in the IAM User Guide . For examples of adding a key policy in multiple programming +// languages, see Setting a key policy (https://docs.aws.amazon.com/kms/latest/developerguide/programming-key-policies.html#put-policy) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:PutKeyPolicy (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: GetKeyPolicy +// // 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. @@ -5051,17 +5504,23 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out // When you use the ReEncrypt operation, you need to provide information for // the decrypt operation and the subsequent encrypt operation. // -// * If your ciphertext was encrypted under an asymmetric CMK, you must identify -// the source CMK, that is, the CMK that encrypted the ciphertext. You must -// also supply the encryption algorithm that was used. This information is -// required to decrypt the data. -// -// * It is optional, but you can specify a source CMK even when the ciphertext -// was encrypted under a symmetric CMK. This ensures that the ciphertext -// is decrypted only by using a particular CMK. If the CMK that you specify -// cannot decrypt the ciphertext, the ReEncrypt operation fails. -// -// * To reencrypt the data, you must specify the destination CMK, that is, +// * If your ciphertext was encrypted under an asymmetric CMK, you must use +// the SourceKeyId parameter to identify the CMK that encrypted the ciphertext. +// You must also supply the encryption algorithm that was used. This information +// is required to decrypt the data. +// +// * If your ciphertext was encrypted under a symmetric CMK, the SourceKeyId +// parameter is optional. AWS KMS can get this information from metadata +// that it adds to the symmetric ciphertext blob. This feature adds durability +// to your implementation by ensuring that authorized users can decrypt ciphertext +// decades after it was encrypted, even if they've lost track of the CMK +// ID. However, specifying the source CMK is always recommended as a best +// practice. When you use the SourceKeyId parameter to specify a CMK, AWS +// KMS uses only the CMK you specify. If the ciphertext was encrypted under +// a different CMK, the ReEncrypt operation fails. This practice ensures +// that you use the CMK that you intend. +// +// * To reencrypt the data, you must use the DestinationKeyId parameter specify // the CMK that re-encrypts the data after it is decrypted. You can select // a symmetric or asymmetric CMK. If the destination CMK is an asymmetric // CMK, you must also provide the encryption algorithm. The algorithm that @@ -5076,11 +5535,21 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out // with asymmetric keys. The standard format for asymmetric key ciphertext // does not include configurable fields. // -// Unlike other AWS KMS API operations, ReEncrypt callers must have two permissions: +// The CMK that you use for this operation must be in a compatible key state. +// For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) +// in the AWS Key Management Service Developer Guide. // -// * kms:ReEncryptFrom permission on the source CMK +// Cross-account use: Yes. The source CMK and destination CMK can be in different +// AWS accounts. Either or both CMKs can be in a different account than the +// caller. // -// * kms:ReEncryptTo permission on the destination CMK +// Required permissions: +// +// * kms:ReEncryptFrom (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// permission on the source CMK (key policy) +// +// * kms:ReEncryptTo (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// permission on the destination CMK (key policy) // // To permit reencryption from or to a CMK, include the "kms:ReEncrypt*" permission // in your key policy (https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html). @@ -5089,9 +5558,15 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out // a CMK programmatically or when you use the PutKeyPolicy operation to set // a key policy. // -// The CMK that you use for this operation must be in a compatible key state. -// For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) -// in the AWS Key Management Service Developer Guide. +// Related operations: +// +// * Decrypt +// +// * Encrypt +// +// * GenerateDataKey +// +// * GenerateDataKeyPair // // 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 @@ -5244,6 +5719,24 @@ func (c *KMS) RetireGrantRequest(input *RetireGrantInput) (req *request.Request, // A grant ID is a 64 character unique identifier of a grant. The CreateGrant // operation returns both. // +// Cross-account use: Yes. You can retire a grant on a CMK in a different AWS +// account. +// +// Required permissions:: Permission to retire a grant is specified in the grant. +// You cannot control access to this operation in a policy. For more information, +// see Using grants (https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) +// in the AWS Key Management Service Developer Guide. +// +// Related operations: +// +// * CreateGrant +// +// * ListGrants +// +// * ListRetirableGrants +// +// * RevokeGrant +// // 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. @@ -5352,8 +5845,21 @@ func (c *KMS) RevokeGrantRequest(input *RevokeGrantInput) (req *request.Request, // Revokes the specified grant for the specified customer master key (CMK). // You can revoke a grant to actively deny operations that depend on it. // -// To perform this operation on a CMK in a different AWS account, specify the -// key ARN in the value of the KeyId parameter. +// Cross-account use: Yes. To perform this operation on a CMK in a different +// AWS account, specify the key ARN in the value of the KeyId parameter. +// +// Required permissions: kms:RevokeGrant (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: +// +// * CreateGrant +// +// * ListGrants +// +// * ListRetirableGrants +// +// * RetireGrant // // 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 @@ -5476,8 +5982,6 @@ func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req * // delete the orphaned key material (https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#fix-keystore-orphaned-key) // from the cluster and its backups. // -// You cannot perform this operation on a CMK in a different AWS account. -// // For more information about scheduling a CMK for deletion, see Deleting Customer // Master Keys (https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) // in the AWS Key Management Service Developer Guide. @@ -5486,6 +5990,18 @@ func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req * // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:ScheduleKeyDeletion (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations +// +// * CancelKeyDeletion +// +// * DisableKey +// // 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. @@ -5623,6 +6139,14 @@ func (c *KMS) SignRequest(input *SignInput) (req *request.Request, output *SignO // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:Sign (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: Verify +// // 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. @@ -5743,23 +6267,40 @@ func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request, // TagResource API operation for AWS Key Management Service. // -// Adds or edits tags for a customer master key (CMK). You cannot perform this -// operation on a CMK in a different AWS account. +// Adds or edits tags on a customer managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). // -// Each tag consists of a tag key and a tag value. Tag keys and tag values are -// both required, but tag values can be empty (null) strings. +// Each tag consists of a tag key and a tag value, both of which are case-sensitive +// strings. The tag value can be an empty (null) string. // -// You can only use a tag key once for each CMK. If you use the tag key again, -// AWS KMS replaces the current tag value with the specified value. +// To add a tag, specify a new tag key and a tag value. To edit a tag, specify +// an existing tag key and a new tag value. // -// For information about the rules that apply to tag keys and tag values, see -// User-Defined Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) -// in the AWS Billing and Cost Management User Guide. +// You can use this operation to tag a customer managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk), +// but you cannot tag an AWS managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk), +// an AWS owned CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk), +// or an alias. +// +// For general information about tags, including the format and syntax, see +// Tagging AWS resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) +// in the Amazon Web Services General Reference. For information about using +// tags in AWS KMS, see Tagging keys (https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html). // // The CMK that you use for this operation must be in a compatible key state. // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:TagResource (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations +// +// * UntagResource +// +// * ListResourceTags +// // 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. @@ -5863,16 +6404,35 @@ func (c *KMS) UntagResourceRequest(input *UntagResourceInput) (req *request.Requ // UntagResource API operation for AWS Key Management Service. // -// Removes the specified tags from the specified customer master key (CMK). -// You cannot perform this operation on a CMK in a different AWS account. +// Deletes tags from a customer managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). +// To delete a tag, specify the tag key and the CMK. +// +// When it succeeds, the UntagResource operation doesn't return any output. +// Also, if the specified tag key isn't found on the CMK, it doesn't throw an +// exception or return a response. To confirm that the operation worked, use +// the ListResourceTags operation. // -// To remove a tag, specify the tag key. To change the tag value of an existing -// tag key, use TagResource. +// For general information about tags, including the format and syntax, see +// Tagging AWS resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) +// in the Amazon Web Services General Reference. For information about using +// tags in AWS KMS, see Tagging keys (https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html). // // The CMK that you use for this operation must be in a compatible key state. // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:UntagResource (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations +// +// * TagResource +// +// * ListResourceTags +// // 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. @@ -5974,8 +6534,7 @@ func (c *KMS) UpdateAliasRequest(input *UpdateAliasInput) (req *request.Request, // Associates an existing AWS KMS alias with a different customer master key // (CMK). Each alias is associated with only one CMK at a time, although a CMK // can have multiple aliases. The alias and the CMK must be in the same AWS -// account and region. You cannot perform this operation on an alias in a different -// AWS account. +// account and region. // // The current and new CMK must be the same type (both symmetric or both asymmetric), // and they must have the same key usage (ENCRYPT_DECRYPT or SIGN_VERIFY). This @@ -5995,6 +6554,31 @@ func (c *KMS) UpdateAliasRequest(input *UpdateAliasInput) (req *request.Request, // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions +// +// * kms:UpdateAlias (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// on the alias (IAM policy). +// +// * kms:UpdateAlias (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// on the current CMK (key policy). +// +// * kms:UpdateAlias (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// on the new CMK (key policy). +// +// For details, see Controlling access to aliases (https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access) +// in the AWS Key Management Service Developer Guide. +// +// Related operations: +// +// * CreateAlias +// +// * DeleteAlias +// +// * ListAliases +// // 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. @@ -6130,6 +6714,24 @@ func (c *KMS) UpdateCustomKeyStoreRequest(input *UpdateCustomKeyStoreInput) (req // feature in AWS KMS, which combines the convenience and extensive integration // of AWS KMS with the isolation and control of a single-tenant key store. // +// Cross-account use: No. You cannot perform this operation on a custom key +// store in a different AWS account. +// +// Required permissions: kms:UpdateCustomKeyStore (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (IAM policy) +// +// Related operations: +// +// * ConnectCustomKeyStore +// +// * CreateCustomKeyStore +// +// * DeleteCustomKeyStore +// +// * DescribeCustomKeyStores +// +// * DisconnectCustomKeyStore +// // 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. @@ -6298,12 +6900,22 @@ func (c *KMS) UpdateKeyDescriptionRequest(input *UpdateKeyDescriptionInput) (req // Updates the description of a customer master key (CMK). To see the description // of a CMK, use DescribeKey. // -// You cannot perform this operation on a CMK in a different AWS account. -// // The CMK that you use for this operation must be in a compatible key state. // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: No. You cannot perform this operation on a CMK in a different +// AWS account. +// +// Required permissions: kms:UpdateKeyDescription (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations +// +// * CreateKey +// +// * DescribeKey +// // 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. @@ -6433,6 +7045,14 @@ func (c *KMS) VerifyRequest(input *VerifyInput) (req *request.Request, output *V // For details, see How Key State Affects Use of a Customer Master Key (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) // in the AWS Key Management Service Developer Guide. // +// Cross-account use: Yes. To perform this operation with a CMK in a different +// AWS account, specify the key ARN or alias ARN in the value of the KeyId parameter. +// +// Required permissions: kms:Verify (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) +// (key policy) +// +// Related operations: Sign +// // 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. @@ -6523,7 +7143,15 @@ type AliasListEntry struct { // String that contains the alias. This value begins with alias/. AliasName *string `min:"1" type:"string"` - // String that contains the key identifier referred to by the alias. + // Date and time that the alias was most recently created in the account and + // Region. Formatted as Unix time. + CreationDate *time.Time `type:"timestamp"` + + // Date and time that the alias was most recently associated with a CMK in the + // account and Region. Formatted as Unix time. + LastUpdatedDate *time.Time `type:"timestamp"` + + // String that contains the key identifier of the CMK associated with the alias. TargetKeyId *string `min:"1" type:"string"` } @@ -6549,6 +7177,18 @@ func (s *AliasListEntry) SetAliasName(v string) *AliasListEntry { return s } +// SetCreationDate sets the CreationDate field's value. +func (s *AliasListEntry) SetCreationDate(v time.Time) *AliasListEntry { + s.CreationDate = &v + return s +} + +// SetLastUpdatedDate sets the LastUpdatedDate field's value. +func (s *AliasListEntry) SetLastUpdatedDate(v time.Time) *AliasListEntry { + s.LastUpdatedDate = &v + return s +} + // SetTargetKeyId sets the TargetKeyId field's value. func (s *AliasListEntry) SetTargetKeyId(v string) *AliasListEntry { s.TargetKeyId = &v @@ -7081,17 +7721,35 @@ type CreateAliasInput struct { _ struct{} `type:"structure"` // Specifies the alias name. This value must begin with alias/ followed by a - // name, such as alias/ExampleAlias. The alias name cannot begin with alias/aws/. - // The alias/aws/ prefix is reserved for AWS managed CMKs. + // name, such as alias/ExampleAlias. + // + // The AliasName value must be string of 1-256 characters. It can contain only + // alphanumeric characters, forward slashes (/), underscores (_), and dashes + // (-). The alias name cannot begin with alias/aws/. The alias/aws/ prefix is + // reserved for AWS managed CMKs (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). // // AliasName is a required field AliasName *string `min:"1" type:"string" required:"true"` - // Identifies the CMK to which the alias refers. Specify the key ID or the Amazon - // Resource Name (ARN) of the CMK. You cannot specify another alias. For help - // finding the key ID and ARN, see Finding the Key ID and ARN (https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) + // Associates the alias with the specified customer managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). + // The CMK must be in the same AWS Region. + // + // A valid CMK ID is required. If you supply a null or empty string value, this + // operation returns an error. + // + // For help finding the key ID and ARN, see Finding the Key ID and ARN (https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) // in the AWS Key Management Service Developer Guide. // + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. + // + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. + // // TargetKeyId is a required field TargetKeyId *string `min:"1" type:"string" required:"true"` } @@ -7290,6 +7948,10 @@ type CreateGrantInput struct { // specified in this structure. For more information about encryption context, // see Encryption Context (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) // in the AWS Key Management Service Developer Guide . + // + // Grant constraints are not applied to operations that do not support an encryption + // context, such as cryptographic operations with asymmetric CMKs and management + // operations, such as DescribeKey or RetireGrant. Constraints *GrantConstraints `type:"structure"` // A list of grant tokens. @@ -7328,8 +7990,8 @@ type CreateGrantInput struct { // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` - // A friendly name for identifying the grant. Use this value to prevent the - // unintended creation of duplicate grants when retrying this request. + // A friendly name for the grant. Use this value to prevent the unintended creation + // of duplicate grants when retrying this request. // // When this value is absent, all CreateGrant requests result in a new grant // with a unique GrantId even if all the supplied parameters are identical. @@ -7339,7 +8001,7 @@ type CreateGrantInput struct { // parameters; if the grant already exists, the original GrantId is returned // without creating a new grant. Note that the returned grant token is unique // with every CreateGrant request, even when a duplicate GrantId is returned. - // All grant tokens obtained in this way can be used interchangeably. + // All grant tokens for the same grant ID can be used interchangeably. Name *string `min:"1" type:"string"` // A list of operations that the grant permits. @@ -7615,6 +8277,10 @@ type CreateKeyInput struct { // in the AWS Key Management Service Developer Guide. // // The key policy size quota is 32 kilobytes (32768 bytes). + // + // For help writing and formatting a JSON policy document, see the IAM JSON + // Policy Reference (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) + // in the IAM User Guide . Policy *string `min:"1" type:"string"` // One or more tags. Each tag consists of a tag key and a tag value. Both the @@ -7627,6 +8293,9 @@ type CreateKeyInput struct { // // Use this parameter to tag the CMK when it is created. To add tags to an existing // CMK, use the TagResource operation. + // + // To use this parameter, you must have kms:TagResource (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) + // permission in an IAM policy. Tags []*Tag `type:"list"` } @@ -8175,20 +8844,18 @@ type DecryptInput struct { // in the AWS Key Management Service Developer Guide. GrantTokens []*string `type:"list"` - // Specifies the customer master key (CMK) that AWS KMS will use to decrypt - // the ciphertext. Enter a key ID of the CMK that was used to encrypt the ciphertext. - // - // If you specify a KeyId value, the Decrypt operation succeeds only if the - // specified CMK was used to encrypt the ciphertext. + // Specifies the customer master key (CMK) that AWS KMS uses to decrypt the + // ciphertext. Enter a key ID of the CMK that was used to encrypt the ciphertext. // // This parameter is required only when the ciphertext was encrypted under an - // asymmetric CMK. Otherwise, AWS KMS uses the metadata that it adds to the - // ciphertext blob to determine which CMK was used to encrypt the ciphertext. - // However, you can use this parameter to ensure that a particular CMK (of any - // kind) is used to decrypt the ciphertext. + // asymmetric CMK. If you used a symmetric CMK, AWS KMS can get the CMK from + // metadata that it adds to the symmetric ciphertext blob. However, it is always + // recommended as a best practice. This practice ensures that you use the CMK + // that you intend. // // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, - // or alias ARN. When using an alias name, prefix it with "alias/". + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // // For example: // @@ -8842,8 +9509,8 @@ func (s DisableKeyOutput) GoString() string { type DisableKeyRotationInput struct { _ struct{} `type:"structure"` - // Identifies a symmetric customer master key (CMK). You cannot enable automatic - // rotation of asymmetric CMKs (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks), + // Identifies a symmetric customer master key (CMK). You cannot enable or disable + // automatic rotation of asymmetric CMKs (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks), // CMKs with imported key material (https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), // or CMKs in a custom key store (https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). // @@ -9753,7 +10420,8 @@ type GenerateDataKeyPairWithoutPlaintextInput struct { // operation. // // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, - // or alias ARN. When using an alias name, prefix it with "alias/". + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // // For example: // @@ -10597,7 +11265,7 @@ func (s *GetPublicKeyOutput) SetSigningAlgorithms(v []*string) *GetPublicKeyOutp // a symmetric CMK (https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-concepts.html#symmetric-cmks). // Grant constraints are not applied to operations that do not support an encryption // context, such as cryptographic operations with asymmetric CMKs and management -// operations, such as DescribeKey or ScheduleKeyDeletion. +// operations, such as DescribeKey or RetireGrant. // // In a cryptographic operation, the encryption context in the decryption operation // must be an exact, case-sensitive match for the keys and values in the encryption @@ -12075,12 +12743,21 @@ func (s *LimitExceededException) RequestID() string { type ListAliasesInput struct { _ struct{} `type:"structure"` - // Lists only aliases that refer to the specified CMK. The value of this parameter - // can be the ID or Amazon Resource Name (ARN) of a CMK in the caller's account - // and region. You cannot use an alias name or alias ARN in this value. + // Lists only aliases that are associated with the specified CMK. Enter a CMK + // in your AWS account. // // This parameter is optional. If you omit it, ListAliases returns all aliases - // in the account and region. + // in the account and Region. + // + // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. + // + // For example: + // + // * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + // + // * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + // + // To get the key ID and key ARN for a CMK, use ListKeys or DescribeKey. KeyId *string `min:"1" type:"string"` // Use this parameter to specify the maximum number of items to return. When @@ -12694,7 +13371,8 @@ type ListRetirableGrantsInput struct { // you just received. Marker *string `min:"1" type:"string"` - // The retiring principal for which to list grants. + // The retiring principal for which to list grants. Enter a principal in your + // AWS account. // // To specify the retiring principal, use the Amazon Resource Name (ARN) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // of an AWS principal. Valid AWS principals include AWS accounts (root), IAM @@ -13100,20 +13778,19 @@ type ReEncryptInput struct { // in the AWS Key Management Service Developer Guide. SourceEncryptionContext map[string]*string `type:"map"` - // A unique identifier for the CMK that is used to decrypt the ciphertext before - // it reencrypts it using the destination CMK. + // Specifies the customer master key (CMK) that AWS KMS will use to decrypt + // the ciphertext before it is re-encrypted. Enter a key ID of the CMK that + // was used to encrypt the ciphertext. // // This parameter is required only when the ciphertext was encrypted under an - // asymmetric CMK. Otherwise, AWS KMS uses the metadata that it adds to the - // ciphertext blob to determine which CMK was used to encrypt the ciphertext. - // However, you can use this parameter to ensure that a particular CMK (of any - // kind) is used to decrypt the ciphertext before it is reencrypted. - // - // If you specify a KeyId value, the decrypt part of the ReEncrypt operation - // succeeds only if the specified CMK was used to encrypt the ciphertext. + // asymmetric CMK. If you used a symmetric CMK, AWS KMS can get the CMK from + // metadata that it adds to the symmetric ciphertext blob. However, it is always + // recommended as a best practice. This practice ensures that you use the CMK + // that you intend. // // To specify a CMK, use its key ID, Amazon Resource Name (ARN), alias name, - // or alias ARN. When using an alias name, prefix it with "alias/". + // or alias ARN. When using an alias name, prefix it with "alias/". To specify + // a CMK in a different AWS account, you must use the key ARN or alias ARN. // // For example: // @@ -13838,7 +14515,7 @@ func (s *TagException) RequestID() string { type TagResourceInput struct { _ struct{} `type:"structure"` - // A unique identifier for the CMK you are tagging. + // Identifies a customer managed CMK in the account and Region. // // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // @@ -13853,7 +14530,14 @@ type TagResourceInput struct { // KeyId is a required field KeyId *string `min:"1" type:"string" required:"true"` - // One or more tags. Each tag consists of a tag key and a tag value. + // One or more tags. + // + // Each tag consists of a tag key and a tag value. The tag value can be an empty + // (null) string. + // + // You cannot have more than one tag on a CMK with the same tag key. If you + // specify an existing tag key with a different tag value, AWS KMS replaces + // the current tag value with the specified one. // // Tags is a required field Tags []*Tag `type:"list" required:"true"` @@ -13984,7 +14668,7 @@ func (s *UnsupportedOperationException) RequestID() string { type UntagResourceInput struct { _ struct{} `type:"structure"` - // A unique identifier for the CMK from which you are removing tags. + // Identifies the CMK from which you are removing tags. // // Specify the key ID or the Amazon Resource Name (ARN) of the CMK. // @@ -14070,8 +14754,9 @@ type UpdateAliasInput struct { // AliasName is a required field AliasName *string `min:"1" type:"string" required:"true"` - // Identifies the CMK to associate with the alias. When the update operation - // completes, the alias will point to this CMK. + // Identifies the customer managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) + // to associate with the alias. You don't have permission to associate an alias + // with an AWS managed CMK (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). // // The CMK must be in the same AWS account and Region as the alias. Also, the // new target CMK must be the same type as the current target CMK (both symmetric diff --git a/service/kms/examples_test.go b/service/kms/examples_test.go index 5edd0043d9..0f4ea34cd1 100644 --- a/service/kms/examples_test.go +++ b/service/kms/examples_test.go @@ -213,6 +213,7 @@ func ExampleKMS_Decrypt_shared00() { svc := kms.New(session.New()) input := &kms.DecryptInput{ CiphertextBlob: []byte(""), + KeyId: aws.String("arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"), } result, err := svc.Decrypt(input) diff --git a/service/route53/api.go b/service/route53/api.go index 8a77840067..34ec3edaf9 100644 --- a/service/route53/api.go +++ b/service/route53/api.go @@ -13,6 +13,102 @@ import ( "github.com/aws/aws-sdk-go/private/protocol/restxml" ) +const opActivateKeySigningKey = "ActivateKeySigningKey" + +// ActivateKeySigningKeyRequest generates a "aws/request.Request" representing the +// client's request for the ActivateKeySigningKey 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 ActivateKeySigningKey for more information on using the ActivateKeySigningKey +// 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 ActivateKeySigningKeyRequest method. +// req, resp := client.ActivateKeySigningKeyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/ActivateKeySigningKey +func (c *Route53) ActivateKeySigningKeyRequest(input *ActivateKeySigningKeyInput) (req *request.Request, output *ActivateKeySigningKeyOutput) { + op := &request.Operation{ + Name: opActivateKeySigningKey, + HTTPMethod: "POST", + HTTPPath: "/2013-04-01/keysigningkey/{HostedZoneId}/{Name}/activate", + } + + if input == nil { + input = &ActivateKeySigningKeyInput{} + } + + output = &ActivateKeySigningKeyOutput{} + req = c.newRequest(op, input, output) + return +} + +// ActivateKeySigningKey API operation for Amazon Route 53. +// +// Activates a key signing key (KSK) so that it can be used for signing by DNSSEC. +// This operation changes the KSK status to ACTIVE. +// +// 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 Route 53's +// API operation ActivateKeySigningKey for usage and error information. +// +// Returned Error Codes: +// * ErrCodeConcurrentModification "ConcurrentModification" +// Another user submitted a request to create, update, or delete the object +// at the same time that you did. Retry the request. +// +// * ErrCodeNoSuchKeySigningKey "NoSuchKeySigningKey" +// The specified key signing key (KSK) doesn't exist. +// +// * ErrCodeInvalidKeySigningKeyStatus "InvalidKeySigningKeyStatus" +// The key signing key (KSK) status isn't valid or another KSK has the status +// INTERNAL_FAILURE. +// +// * ErrCodeInvalidSigningStatus "InvalidSigningStatus" +// Your hosted zone status isn't valid for this operation. In the hosted zone, +// change the status to enable DNSSEC or disable DNSSEC. +// +// * ErrCodeInvalidKMSArn "InvalidKMSArn" +// The KeyManagementServiceArn that you specified isn't valid to use with DNSSEC +// signing. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/ActivateKeySigningKey +func (c *Route53) ActivateKeySigningKey(input *ActivateKeySigningKeyInput) (*ActivateKeySigningKeyOutput, error) { + req, out := c.ActivateKeySigningKeyRequest(input) + return out, req.Send() +} + +// ActivateKeySigningKeyWithContext is the same as ActivateKeySigningKey with the addition of +// the ability to pass a context and additional request options. +// +// See ActivateKeySigningKey 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 *Route53) ActivateKeySigningKeyWithContext(ctx aws.Context, input *ActivateKeySigningKeyInput, opts ...request.Option) (*ActivateKeySigningKeyOutput, error) { + req, out := c.ActivateKeySigningKeyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opAssociateVPCWithHostedZone = "AssociateVPCWithHostedZone" // AssociateVPCWithHostedZoneRequest generates a "aws/request.Request" representing the @@ -744,6 +840,119 @@ func (c *Route53) CreateHostedZoneWithContext(ctx aws.Context, input *CreateHost return out, req.Send() } +const opCreateKeySigningKey = "CreateKeySigningKey" + +// CreateKeySigningKeyRequest generates a "aws/request.Request" representing the +// client's request for the CreateKeySigningKey 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 CreateKeySigningKey for more information on using the CreateKeySigningKey +// 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 CreateKeySigningKeyRequest method. +// req, resp := client.CreateKeySigningKeyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/CreateKeySigningKey +func (c *Route53) CreateKeySigningKeyRequest(input *CreateKeySigningKeyInput) (req *request.Request, output *CreateKeySigningKeyOutput) { + op := &request.Operation{ + Name: opCreateKeySigningKey, + HTTPMethod: "POST", + HTTPPath: "/2013-04-01/keysigningkey", + } + + if input == nil { + input = &CreateKeySigningKeyInput{} + } + + output = &CreateKeySigningKeyOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateKeySigningKey API operation for Amazon Route 53. +// +// Creates a new key signing key (KSK) associated with a hosted zone. You can +// only have two KSKs per hosted zone. +// +// 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 Route 53's +// API operation CreateKeySigningKey for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchHostedZone "NoSuchHostedZone" +// No hosted zone exists with the ID that you specified. +// +// * ErrCodeInvalidArgument "InvalidArgument" +// Parameter name is not valid. +// +// * ErrCodeInvalidInput "InvalidInput" +// The input is not valid. +// +// * ErrCodeInvalidKMSArn "InvalidKMSArn" +// The KeyManagementServiceArn that you specified isn't valid to use with DNSSEC +// signing. +// +// * ErrCodeInvalidKeySigningKeyStatus "InvalidKeySigningKeyStatus" +// The key signing key (KSK) status isn't valid or another KSK has the status +// INTERNAL_FAILURE. +// +// * ErrCodeInvalidSigningStatus "InvalidSigningStatus" +// Your hosted zone status isn't valid for this operation. In the hosted zone, +// change the status to enable DNSSEC or disable DNSSEC. +// +// * ErrCodeInvalidKeySigningKeyName "InvalidKeySigningKeyName" +// The key signing key (KSK) name that you specified isn't a valid name. +// +// * ErrCodeKeySigningKeyAlreadyExists "KeySigningKeyAlreadyExists" +// You've already created a key signing key (KSK) with this name or with the +// same customer managed key (CMK) ARN. +// +// * ErrCodeTooManyKeySigningKeys "TooManyKeySigningKeys" +// You've reached the limit for the number of key signing keys (KSKs). Remove +// at least one KSK, and then try again. +// +// * ErrCodeConcurrentModification "ConcurrentModification" +// Another user submitted a request to create, update, or delete the object +// at the same time that you did. Retry the request. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/CreateKeySigningKey +func (c *Route53) CreateKeySigningKey(input *CreateKeySigningKeyInput) (*CreateKeySigningKeyOutput, error) { + req, out := c.CreateKeySigningKeyRequest(input) + return out, req.Send() +} + +// CreateKeySigningKeyWithContext is the same as CreateKeySigningKey with the addition of +// the ability to pass a context and additional request options. +// +// See CreateKeySigningKey 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 *Route53) CreateKeySigningKeyWithContext(ctx aws.Context, input *CreateKeySigningKeyInput, opts ...request.Option) (*CreateKeySigningKeyOutput, error) { + req, out := c.CreateKeySigningKeyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateQueryLoggingConfig = "CreateQueryLoggingConfig" // CreateQueryLoggingConfigRequest generates a "aws/request.Request" representing the @@ -1071,7 +1280,7 @@ func (c *Route53) CreateReusableDelegationSetRequest(input *CreateReusableDelega // The specified HostedZone can't be found. // // * ErrCodeInvalidArgument "InvalidArgument" -// Parameter name is invalid. +// Parameter name is not valid. // // * ErrCodeInvalidInput "InvalidInput" // The input is not valid. @@ -1184,7 +1393,7 @@ func (c *Route53) CreateTrafficPolicyRequest(input *CreateTrafficPolicyInput) (r // // * ErrCodeInvalidTrafficPolicyDocument "InvalidTrafficPolicyDocument" // The format of the traffic policy document that you specified in the Document -// element is invalid. +// element is not valid. // // See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/CreateTrafficPolicy func (c *Route53) CreateTrafficPolicy(input *CreateTrafficPolicyInput) (*CreateTrafficPolicyOutput, error) { @@ -1397,7 +1606,7 @@ func (c *Route53) CreateTrafficPolicyVersionRequest(input *CreateTrafficPolicyVe // // * ErrCodeInvalidTrafficPolicyDocument "InvalidTrafficPolicyDocument" // The format of the traffic policy document that you specified in the Document -// element is invalid. +// element is not valid. // // See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/CreateTrafficPolicyVersion func (c *Route53) CreateTrafficPolicyVersion(input *CreateTrafficPolicyVersionInput) (*CreateTrafficPolicyVersionOutput, error) { @@ -1527,6 +1736,106 @@ func (c *Route53) CreateVPCAssociationAuthorizationWithContext(ctx aws.Context, return out, req.Send() } +const opDeactivateKeySigningKey = "DeactivateKeySigningKey" + +// DeactivateKeySigningKeyRequest generates a "aws/request.Request" representing the +// client's request for the DeactivateKeySigningKey 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 DeactivateKeySigningKey for more information on using the DeactivateKeySigningKey +// 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 DeactivateKeySigningKeyRequest method. +// req, resp := client.DeactivateKeySigningKeyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeactivateKeySigningKey +func (c *Route53) DeactivateKeySigningKeyRequest(input *DeactivateKeySigningKeyInput) (req *request.Request, output *DeactivateKeySigningKeyOutput) { + op := &request.Operation{ + Name: opDeactivateKeySigningKey, + HTTPMethod: "POST", + HTTPPath: "/2013-04-01/keysigningkey/{HostedZoneId}/{Name}/deactivate", + } + + if input == nil { + input = &DeactivateKeySigningKeyInput{} + } + + output = &DeactivateKeySigningKeyOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeactivateKeySigningKey API operation for Amazon Route 53. +// +// Deactivates a key signing key (KSK) so that it will not be used for signing +// by DNSSEC. This operation changes the KSK status to INACTIVE. +// +// 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 Route 53's +// API operation DeactivateKeySigningKey for usage and error information. +// +// Returned Error Codes: +// * ErrCodeConcurrentModification "ConcurrentModification" +// Another user submitted a request to create, update, or delete the object +// at the same time that you did. Retry the request. +// +// * ErrCodeNoSuchKeySigningKey "NoSuchKeySigningKey" +// The specified key signing key (KSK) doesn't exist. +// +// * ErrCodeInvalidKeySigningKeyStatus "InvalidKeySigningKeyStatus" +// The key signing key (KSK) status isn't valid or another KSK has the status +// INTERNAL_FAILURE. +// +// * ErrCodeInvalidSigningStatus "InvalidSigningStatus" +// Your hosted zone status isn't valid for this operation. In the hosted zone, +// change the status to enable DNSSEC or disable DNSSEC. +// +// * ErrCodeKeySigningKeyInUse "KeySigningKeyInUse" +// The key signing key (KSK) that you specified can't be deactivated because +// it's the only KSK for a currently-enabled DNSSEC. Disable DNSSEC signing, +// or add or enable another KSK. +// +// * ErrCodeKeySigningKeyInParentDSRecord "KeySigningKeyInParentDSRecord" +// The key signing key (KSK) is specified in a parent DS record. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeactivateKeySigningKey +func (c *Route53) DeactivateKeySigningKey(input *DeactivateKeySigningKeyInput) (*DeactivateKeySigningKeyOutput, error) { + req, out := c.DeactivateKeySigningKeyRequest(input) + return out, req.Send() +} + +// DeactivateKeySigningKeyWithContext is the same as DeactivateKeySigningKey with the addition of +// the ability to pass a context and additional request options. +// +// See DeactivateKeySigningKey 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 *Route53) DeactivateKeySigningKeyWithContext(ctx aws.Context, input *DeactivateKeySigningKeyInput, opts ...request.Option) (*DeactivateKeySigningKeyOutput, error) { + req, out := c.DeactivateKeySigningKeyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteHealthCheck = "DeleteHealthCheck" // DeleteHealthCheckRequest generates a "aws/request.Request" representing the @@ -1767,141 +2076,238 @@ func (c *Route53) DeleteHostedZoneWithContext(ctx aws.Context, input *DeleteHost return out, req.Send() } -const opDeleteQueryLoggingConfig = "DeleteQueryLoggingConfig" +const opDeleteKeySigningKey = "DeleteKeySigningKey" -// DeleteQueryLoggingConfigRequest generates a "aws/request.Request" representing the -// client's request for the DeleteQueryLoggingConfig operation. The "output" return +// DeleteKeySigningKeyRequest generates a "aws/request.Request" representing the +// client's request for the DeleteKeySigningKey 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 DeleteQueryLoggingConfig for more information on using the DeleteQueryLoggingConfig +// See DeleteKeySigningKey for more information on using the DeleteKeySigningKey // 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 DeleteQueryLoggingConfigRequest method. -// req, resp := client.DeleteQueryLoggingConfigRequest(params) +// // Example sending a request using the DeleteKeySigningKeyRequest method. +// req, resp := client.DeleteKeySigningKeyRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // -// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteQueryLoggingConfig -func (c *Route53) DeleteQueryLoggingConfigRequest(input *DeleteQueryLoggingConfigInput) (req *request.Request, output *DeleteQueryLoggingConfigOutput) { +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteKeySigningKey +func (c *Route53) DeleteKeySigningKeyRequest(input *DeleteKeySigningKeyInput) (req *request.Request, output *DeleteKeySigningKeyOutput) { op := &request.Operation{ - Name: opDeleteQueryLoggingConfig, + Name: opDeleteKeySigningKey, HTTPMethod: "DELETE", - HTTPPath: "/2013-04-01/queryloggingconfig/{Id}", + HTTPPath: "/2013-04-01/keysigningkey/{HostedZoneId}/{Name}", } if input == nil { - input = &DeleteQueryLoggingConfigInput{} + input = &DeleteKeySigningKeyInput{} } - output = &DeleteQueryLoggingConfigOutput{} + output = &DeleteKeySigningKeyOutput{} req = c.newRequest(op, input, output) - req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) return } -// DeleteQueryLoggingConfig API operation for Amazon Route 53. -// -// Deletes a configuration for DNS query logging. If you delete a configuration, -// Amazon Route 53 stops sending query logs to CloudWatch Logs. Route 53 doesn't -// delete any logs that are already in CloudWatch Logs. +// DeleteKeySigningKey API operation for Amazon Route 53. // -// For more information about DNS query logs, see CreateQueryLoggingConfig (https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html). +// Deletes a key signing key (KSK). Before you can delete a KSK, you must deactivate +// it. The KSK must be deactived before you can delete it regardless of whether +// the hosted zone is enabled for DNSSEC signing. // // 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 Route 53's -// API operation DeleteQueryLoggingConfig for usage and error information. +// API operation DeleteKeySigningKey for usage and error information. // // Returned Error Codes: // * ErrCodeConcurrentModification "ConcurrentModification" // Another user submitted a request to create, update, or delete the object // at the same time that you did. Retry the request. // -// * ErrCodeNoSuchQueryLoggingConfig "NoSuchQueryLoggingConfig" -// There is no DNS query logging configuration with the specified ID. +// * ErrCodeNoSuchKeySigningKey "NoSuchKeySigningKey" +// The specified key signing key (KSK) doesn't exist. // -// * ErrCodeInvalidInput "InvalidInput" -// The input is not valid. +// * ErrCodeInvalidKeySigningKeyStatus "InvalidKeySigningKeyStatus" +// The key signing key (KSK) status isn't valid or another KSK has the status +// INTERNAL_FAILURE. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteQueryLoggingConfig -func (c *Route53) DeleteQueryLoggingConfig(input *DeleteQueryLoggingConfigInput) (*DeleteQueryLoggingConfigOutput, error) { - req, out := c.DeleteQueryLoggingConfigRequest(input) +// * ErrCodeInvalidSigningStatus "InvalidSigningStatus" +// Your hosted zone status isn't valid for this operation. In the hosted zone, +// change the status to enable DNSSEC or disable DNSSEC. +// +// * ErrCodeInvalidKMSArn "InvalidKMSArn" +// The KeyManagementServiceArn that you specified isn't valid to use with DNSSEC +// signing. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteKeySigningKey +func (c *Route53) DeleteKeySigningKey(input *DeleteKeySigningKeyInput) (*DeleteKeySigningKeyOutput, error) { + req, out := c.DeleteKeySigningKeyRequest(input) return out, req.Send() } -// DeleteQueryLoggingConfigWithContext is the same as DeleteQueryLoggingConfig with the addition of +// DeleteKeySigningKeyWithContext is the same as DeleteKeySigningKey with the addition of // the ability to pass a context and additional request options. // -// See DeleteQueryLoggingConfig for details on how to use this API operation. +// See DeleteKeySigningKey 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 *Route53) DeleteQueryLoggingConfigWithContext(ctx aws.Context, input *DeleteQueryLoggingConfigInput, opts ...request.Option) (*DeleteQueryLoggingConfigOutput, error) { - req, out := c.DeleteQueryLoggingConfigRequest(input) +func (c *Route53) DeleteKeySigningKeyWithContext(ctx aws.Context, input *DeleteKeySigningKeyInput, opts ...request.Option) (*DeleteKeySigningKeyOutput, error) { + req, out := c.DeleteKeySigningKeyRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } -const opDeleteReusableDelegationSet = "DeleteReusableDelegationSet" +const opDeleteQueryLoggingConfig = "DeleteQueryLoggingConfig" -// DeleteReusableDelegationSetRequest generates a "aws/request.Request" representing the -// client's request for the DeleteReusableDelegationSet operation. The "output" return +// DeleteQueryLoggingConfigRequest generates a "aws/request.Request" representing the +// client's request for the DeleteQueryLoggingConfig 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 DeleteReusableDelegationSet for more information on using the DeleteReusableDelegationSet +// See DeleteQueryLoggingConfig for more information on using the DeleteQueryLoggingConfig // 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 DeleteReusableDelegationSetRequest method. -// req, resp := client.DeleteReusableDelegationSetRequest(params) +// // Example sending a request using the DeleteQueryLoggingConfigRequest method. +// req, resp := client.DeleteQueryLoggingConfigRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // -// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteReusableDelegationSet -func (c *Route53) DeleteReusableDelegationSetRequest(input *DeleteReusableDelegationSetInput) (req *request.Request, output *DeleteReusableDelegationSetOutput) { +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteQueryLoggingConfig +func (c *Route53) DeleteQueryLoggingConfigRequest(input *DeleteQueryLoggingConfigInput) (req *request.Request, output *DeleteQueryLoggingConfigOutput) { op := &request.Operation{ - Name: opDeleteReusableDelegationSet, + Name: opDeleteQueryLoggingConfig, HTTPMethod: "DELETE", - HTTPPath: "/2013-04-01/delegationset/{Id}", + HTTPPath: "/2013-04-01/queryloggingconfig/{Id}", } if input == nil { - input = &DeleteReusableDelegationSetInput{} + input = &DeleteQueryLoggingConfigInput{} } - output = &DeleteReusableDelegationSetOutput{} + output = &DeleteQueryLoggingConfigOutput{} req = c.newRequest(op, input, output) req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) return } -// DeleteReusableDelegationSet API operation for Amazon Route 53. +// DeleteQueryLoggingConfig API operation for Amazon Route 53. +// +// Deletes a configuration for DNS query logging. If you delete a configuration, +// Amazon Route 53 stops sending query logs to CloudWatch Logs. Route 53 doesn't +// delete any logs that are already in CloudWatch Logs. +// +// For more information about DNS query logs, see CreateQueryLoggingConfig (https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.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 +// the error. +// +// See the AWS API reference guide for Amazon Route 53's +// API operation DeleteQueryLoggingConfig for usage and error information. +// +// Returned Error Codes: +// * ErrCodeConcurrentModification "ConcurrentModification" +// Another user submitted a request to create, update, or delete the object +// at the same time that you did. Retry the request. +// +// * ErrCodeNoSuchQueryLoggingConfig "NoSuchQueryLoggingConfig" +// There is no DNS query logging configuration with the specified ID. +// +// * ErrCodeInvalidInput "InvalidInput" +// The input is not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteQueryLoggingConfig +func (c *Route53) DeleteQueryLoggingConfig(input *DeleteQueryLoggingConfigInput) (*DeleteQueryLoggingConfigOutput, error) { + req, out := c.DeleteQueryLoggingConfigRequest(input) + return out, req.Send() +} + +// DeleteQueryLoggingConfigWithContext is the same as DeleteQueryLoggingConfig with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteQueryLoggingConfig 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 *Route53) DeleteQueryLoggingConfigWithContext(ctx aws.Context, input *DeleteQueryLoggingConfigInput, opts ...request.Option) (*DeleteQueryLoggingConfigOutput, error) { + req, out := c.DeleteQueryLoggingConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteReusableDelegationSet = "DeleteReusableDelegationSet" + +// DeleteReusableDelegationSetRequest generates a "aws/request.Request" representing the +// client's request for the DeleteReusableDelegationSet 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 DeleteReusableDelegationSet for more information on using the DeleteReusableDelegationSet +// 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 DeleteReusableDelegationSetRequest method. +// req, resp := client.DeleteReusableDelegationSetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DeleteReusableDelegationSet +func (c *Route53) DeleteReusableDelegationSetRequest(input *DeleteReusableDelegationSetInput) (req *request.Request, output *DeleteReusableDelegationSetOutput) { + op := &request.Operation{ + Name: opDeleteReusableDelegationSet, + HTTPMethod: "DELETE", + HTTPPath: "/2013-04-01/delegationset/{Id}", + } + + if input == nil { + input = &DeleteReusableDelegationSetInput{} + } + + output = &DeleteReusableDelegationSetOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// DeleteReusableDelegationSet API operation for Amazon Route 53. // // Deletes a reusable delegation set. // @@ -2257,6 +2663,107 @@ func (c *Route53) DeleteVPCAssociationAuthorizationWithContext(ctx aws.Context, return out, req.Send() } +const opDisableHostedZoneDNSSEC = "DisableHostedZoneDNSSEC" + +// DisableHostedZoneDNSSECRequest generates a "aws/request.Request" representing the +// client's request for the DisableHostedZoneDNSSEC 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 DisableHostedZoneDNSSEC for more information on using the DisableHostedZoneDNSSEC +// 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 DisableHostedZoneDNSSECRequest method. +// req, resp := client.DisableHostedZoneDNSSECRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DisableHostedZoneDNSSEC +func (c *Route53) DisableHostedZoneDNSSECRequest(input *DisableHostedZoneDNSSECInput) (req *request.Request, output *DisableHostedZoneDNSSECOutput) { + op := &request.Operation{ + Name: opDisableHostedZoneDNSSEC, + HTTPMethod: "POST", + HTTPPath: "/2013-04-01/hostedzone/{Id}/disable-dnssec", + } + + if input == nil { + input = &DisableHostedZoneDNSSECInput{} + } + + output = &DisableHostedZoneDNSSECOutput{} + req = c.newRequest(op, input, output) + return +} + +// DisableHostedZoneDNSSEC API operation for Amazon Route 53. +// +// Disables DNSSEC signing in a specific hosted zone. This action does not deactivate +// any key signing keys (KSKs) that are active in the hosted zone. +// +// 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 Route 53's +// API operation DisableHostedZoneDNSSEC for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchHostedZone "NoSuchHostedZone" +// No hosted zone exists with the ID that you specified. +// +// * ErrCodeInvalidArgument "InvalidArgument" +// Parameter name is not valid. +// +// * ErrCodeConcurrentModification "ConcurrentModification" +// Another user submitted a request to create, update, or delete the object +// at the same time that you did. Retry the request. +// +// * ErrCodeKeySigningKeyInParentDSRecord "KeySigningKeyInParentDSRecord" +// The key signing key (KSK) is specified in a parent DS record. +// +// * ErrCodeDNSSECNotFound "DNSSECNotFound" +// The hosted zone doesn't have any DNSSEC resources. +// +// * ErrCodeInvalidKeySigningKeyStatus "InvalidKeySigningKeyStatus" +// The key signing key (KSK) status isn't valid or another KSK has the status +// INTERNAL_FAILURE. +// +// * ErrCodeInvalidKMSArn "InvalidKMSArn" +// The KeyManagementServiceArn that you specified isn't valid to use with DNSSEC +// signing. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/DisableHostedZoneDNSSEC +func (c *Route53) DisableHostedZoneDNSSEC(input *DisableHostedZoneDNSSECInput) (*DisableHostedZoneDNSSECOutput, error) { + req, out := c.DisableHostedZoneDNSSECRequest(input) + return out, req.Send() +} + +// DisableHostedZoneDNSSECWithContext is the same as DisableHostedZoneDNSSEC with the addition of +// the ability to pass a context and additional request options. +// +// See DisableHostedZoneDNSSEC 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 *Route53) DisableHostedZoneDNSSECWithContext(ctx aws.Context, input *DisableHostedZoneDNSSECInput, opts ...request.Option) (*DisableHostedZoneDNSSECOutput, error) { + req, out := c.DisableHostedZoneDNSSECRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDisassociateVPCFromHostedZone = "DisassociateVPCFromHostedZone" // DisassociateVPCFromHostedZoneRequest generates a "aws/request.Request" representing the @@ -2369,6 +2876,110 @@ func (c *Route53) DisassociateVPCFromHostedZoneWithContext(ctx aws.Context, inpu return out, req.Send() } +const opEnableHostedZoneDNSSEC = "EnableHostedZoneDNSSEC" + +// EnableHostedZoneDNSSECRequest generates a "aws/request.Request" representing the +// client's request for the EnableHostedZoneDNSSEC 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 EnableHostedZoneDNSSEC for more information on using the EnableHostedZoneDNSSEC +// 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 EnableHostedZoneDNSSECRequest method. +// req, resp := client.EnableHostedZoneDNSSECRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/EnableHostedZoneDNSSEC +func (c *Route53) EnableHostedZoneDNSSECRequest(input *EnableHostedZoneDNSSECInput) (req *request.Request, output *EnableHostedZoneDNSSECOutput) { + op := &request.Operation{ + Name: opEnableHostedZoneDNSSEC, + HTTPMethod: "POST", + HTTPPath: "/2013-04-01/hostedzone/{Id}/enable-dnssec", + } + + if input == nil { + input = &EnableHostedZoneDNSSECInput{} + } + + output = &EnableHostedZoneDNSSECOutput{} + req = c.newRequest(op, input, output) + return +} + +// EnableHostedZoneDNSSEC API operation for Amazon Route 53. +// +// Enables DNSSEC signing in a specific hosted zone. +// +// 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 Route 53's +// API operation EnableHostedZoneDNSSEC for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchHostedZone "NoSuchHostedZone" +// No hosted zone exists with the ID that you specified. +// +// * ErrCodeInvalidArgument "InvalidArgument" +// Parameter name is not valid. +// +// * ErrCodeConcurrentModification "ConcurrentModification" +// Another user submitted a request to create, update, or delete the object +// at the same time that you did. Retry the request. +// +// * ErrCodeKeySigningKeyWithActiveStatusNotFound "KeySigningKeyWithActiveStatusNotFound" +// A key signing key (KSK) with ACTIVE status wasn't found. +// +// * ErrCodeInvalidKMSArn "InvalidKMSArn" +// The KeyManagementServiceArn that you specified isn't valid to use with DNSSEC +// signing. +// +// * ErrCodeHostedZonePartiallyDelegated "HostedZonePartiallyDelegated" +// The hosted zone nameservers don't match the parent nameservers. The hosted +// zone and parent must have the same nameservers. +// +// * ErrCodeDNSSECNotFound "DNSSECNotFound" +// The hosted zone doesn't have any DNSSEC resources. +// +// * ErrCodeInvalidKeySigningKeyStatus "InvalidKeySigningKeyStatus" +// The key signing key (KSK) status isn't valid or another KSK has the status +// INTERNAL_FAILURE. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/EnableHostedZoneDNSSEC +func (c *Route53) EnableHostedZoneDNSSEC(input *EnableHostedZoneDNSSECInput) (*EnableHostedZoneDNSSECOutput, error) { + req, out := c.EnableHostedZoneDNSSECRequest(input) + return out, req.Send() +} + +// EnableHostedZoneDNSSECWithContext is the same as EnableHostedZoneDNSSEC with the addition of +// the ability to pass a context and additional request options. +// +// See EnableHostedZoneDNSSEC 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 *Route53) EnableHostedZoneDNSSECWithContext(ctx aws.Context, input *EnableHostedZoneDNSSECInput, opts ...request.Option) (*EnableHostedZoneDNSSECOutput, error) { + req, out := c.EnableHostedZoneDNSSECRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opGetAccountLimit = "GetAccountLimit" // GetAccountLimitRequest generates a "aws/request.Request" representing the @@ -2626,6 +3237,89 @@ func (c *Route53) GetCheckerIpRangesWithContext(ctx aws.Context, input *GetCheck return out, req.Send() } +const opGetDNSSEC = "GetDNSSEC" + +// GetDNSSECRequest generates a "aws/request.Request" representing the +// client's request for the GetDNSSEC 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 GetDNSSEC for more information on using the GetDNSSEC +// 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 GetDNSSECRequest method. +// req, resp := client.GetDNSSECRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/GetDNSSEC +func (c *Route53) GetDNSSECRequest(input *GetDNSSECInput) (req *request.Request, output *GetDNSSECOutput) { + op := &request.Operation{ + Name: opGetDNSSEC, + HTTPMethod: "GET", + HTTPPath: "/2013-04-01/hostedzone/{Id}/dnssec", + } + + if input == nil { + input = &GetDNSSECInput{} + } + + output = &GetDNSSECOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetDNSSEC API operation for Amazon Route 53. +// +// Returns information about DNSSEC for a specific hosted zone, including the +// key signing keys (KSKs) and zone signing keys (ZSKs) in the hosted zone. +// +// 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 Route 53's +// API operation GetDNSSEC for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchHostedZone "NoSuchHostedZone" +// No hosted zone exists with the ID that you specified. +// +// * ErrCodeInvalidArgument "InvalidArgument" +// Parameter name is not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53-2013-04-01/GetDNSSEC +func (c *Route53) GetDNSSEC(input *GetDNSSECInput) (*GetDNSSECOutput, error) { + req, out := c.GetDNSSECRequest(input) + return out, req.Send() +} + +// GetDNSSECWithContext is the same as GetDNSSEC with the addition of +// the ability to pass a context and additional request options. +// +// See GetDNSSEC 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 *Route53) GetDNSSECWithContext(ctx aws.Context, input *GetDNSSECInput, opts ...request.Option) (*GetDNSSECOutput, error) { + req, out := c.GetDNSSECRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opGetGeoLocation = "GetGeoLocation" // GetGeoLocationRequest generates a "aws/request.Request" representing the @@ -6099,6 +6793,90 @@ func (s *AccountLimit) SetValue(v int64) *AccountLimit { return s } +type ActivateKeySigningKeyInput struct { + _ struct{} `locationName:"ActivateKeySigningKeyRequest" type:"structure"` + + // A unique string used to identify a hosted zone. + // + // HostedZoneId is a required field + HostedZoneId *string `location:"uri" locationName:"HostedZoneId" type:"string" required:"true"` + + // An alphanumeric string used to identify a key signing key (KSK). + // + // Name is a required field + Name *string `location:"uri" locationName:"Name" min:"3" type:"string" required:"true"` +} + +// String returns the string representation +func (s ActivateKeySigningKeyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ActivateKeySigningKeyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ActivateKeySigningKeyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ActivateKeySigningKeyInput"} + if s.HostedZoneId == nil { + invalidParams.Add(request.NewErrParamRequired("HostedZoneId")) + } + if s.HostedZoneId != nil && len(*s.HostedZoneId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("HostedZoneId", 1)) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 3 { + invalidParams.Add(request.NewErrParamMinLen("Name", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *ActivateKeySigningKeyInput) SetHostedZoneId(v string) *ActivateKeySigningKeyInput { + s.HostedZoneId = &v + return s +} + +// SetName sets the Name field's value. +func (s *ActivateKeySigningKeyInput) SetName(v string) *ActivateKeySigningKeyInput { + s.Name = &v + return s +} + +type ActivateKeySigningKeyOutput struct { + _ struct{} `type:"structure"` + + // A complex type that describes change information about changes made to your + // hosted zone. + // + // ChangeInfo is a required field + ChangeInfo *ChangeInfo `type:"structure" required:"true"` +} + +// String returns the string representation +func (s ActivateKeySigningKeyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ActivateKeySigningKeyOutput) GoString() string { + return s.String() +} + +// SetChangeInfo sets the ChangeInfo field's value. +func (s *ActivateKeySigningKeyOutput) SetChangeInfo(v *ChangeInfo) *ActivateKeySigningKeyOutput { + s.ChangeInfo = v + return s +} + // A complex type that identifies the CloudWatch alarm that you want Amazon // Route 53 health checkers to use to determine whether the specified health // check is healthy. @@ -7374,71 +8152,260 @@ func (s *CreateHostedZoneInput) SetVPC(v *VPC) *CreateHostedZoneInput { type CreateHostedZoneOutput struct { _ struct{} `type:"structure"` - // A complex type that contains information about the CreateHostedZone request. + // A complex type that contains information about the CreateHostedZone request. + // + // ChangeInfo is a required field + ChangeInfo *ChangeInfo `type:"structure" required:"true"` + + // A complex type that describes the name servers for this hosted zone. + // + // DelegationSet is a required field + DelegationSet *DelegationSet `type:"structure" required:"true"` + + // A complex type that contains general information about the hosted zone. + // + // HostedZone is a required field + HostedZone *HostedZone `type:"structure" required:"true"` + + // The unique URL representing the new hosted zone. + // + // Location is a required field + Location *string `location:"header" locationName:"Location" type:"string" required:"true"` + + // A complex type that contains information about an Amazon VPC that you associated + // with this hosted zone. + VPC *VPC `type:"structure"` +} + +// String returns the string representation +func (s CreateHostedZoneOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateHostedZoneOutput) GoString() string { + return s.String() +} + +// SetChangeInfo sets the ChangeInfo field's value. +func (s *CreateHostedZoneOutput) SetChangeInfo(v *ChangeInfo) *CreateHostedZoneOutput { + s.ChangeInfo = v + return s +} + +// SetDelegationSet sets the DelegationSet field's value. +func (s *CreateHostedZoneOutput) SetDelegationSet(v *DelegationSet) *CreateHostedZoneOutput { + s.DelegationSet = v + return s +} + +// SetHostedZone sets the HostedZone field's value. +func (s *CreateHostedZoneOutput) SetHostedZone(v *HostedZone) *CreateHostedZoneOutput { + s.HostedZone = v + return s +} + +// SetLocation sets the Location field's value. +func (s *CreateHostedZoneOutput) SetLocation(v string) *CreateHostedZoneOutput { + s.Location = &v + return s +} + +// SetVPC sets the VPC field's value. +func (s *CreateHostedZoneOutput) SetVPC(v *VPC) *CreateHostedZoneOutput { + s.VPC = v + return s +} + +type CreateKeySigningKeyInput struct { + _ struct{} `locationName:"CreateKeySigningKeyRequest" type:"structure" xmlURI:"https://route53.amazonaws.com/doc/2013-04-01/"` + + // A unique string that identifies the request. + // + // CallerReference is a required field + CallerReference *string `min:"1" type:"string" required:"true"` + + // The unique string (ID) used to identify a hosted zone. + // + // HostedZoneId is a required field + HostedZoneId *string `type:"string" required:"true"` + + // The Amazon resource name (ARN) for a customer managed key (CMK) in AWS Key + // Management Service (KMS). The KeyManagementServiceArn must be unique for + // each key signing key (KSK) in a single hosted zone. To see an example of + // KeyManagementServiceArn that grants the correct permissions for DNSSEC, scroll + // down to Example. + // + // You must configure the CMK as follows: + // + // Status + // + // Enabled + // + // Key spec + // + // ECC_NIST_P256 + // + // Key usage + // + // Sign and verify + // + // Key policy + // + // The key policy must give permission for the following actions: + // + // * DescribeKey + // + // * GetPublicKey + // + // * Sign + // + // The key policy must also include the Amazon Route 53 service in the principal + // for your account. Specify the following: + // + // * "Service": "api-service.dnssec.route53.aws.internal" + // + // For more information about working with CMK in KMS, see AWS Key Management + // Service concepts (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html). + // + // KeyManagementServiceArn is a required field + KeyManagementServiceArn *string `type:"string" required:"true"` + + // An alphanumeric string used to identify a key signing key (KSK). Name must + // be unique for each key signing key in the same hosted zone. + // + // Name is a required field + Name *string `min:"3" type:"string" required:"true"` + + // A string specifying the initial status of the key signing key (KSK). You + // can set the value to ACTIVE or INACTIVE. + // + // Status is a required field + Status *string `min:"5" type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateKeySigningKeyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateKeySigningKeyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateKeySigningKeyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateKeySigningKeyInput"} + if s.CallerReference == nil { + invalidParams.Add(request.NewErrParamRequired("CallerReference")) + } + if s.CallerReference != nil && len(*s.CallerReference) < 1 { + invalidParams.Add(request.NewErrParamMinLen("CallerReference", 1)) + } + if s.HostedZoneId == nil { + invalidParams.Add(request.NewErrParamRequired("HostedZoneId")) + } + if s.KeyManagementServiceArn == nil { + invalidParams.Add(request.NewErrParamRequired("KeyManagementServiceArn")) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 3 { + invalidParams.Add(request.NewErrParamMinLen("Name", 3)) + } + if s.Status == nil { + invalidParams.Add(request.NewErrParamRequired("Status")) + } + if s.Status != nil && len(*s.Status) < 5 { + invalidParams.Add(request.NewErrParamMinLen("Status", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCallerReference sets the CallerReference field's value. +func (s *CreateKeySigningKeyInput) SetCallerReference(v string) *CreateKeySigningKeyInput { + s.CallerReference = &v + return s +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *CreateKeySigningKeyInput) SetHostedZoneId(v string) *CreateKeySigningKeyInput { + s.HostedZoneId = &v + return s +} + +// SetKeyManagementServiceArn sets the KeyManagementServiceArn field's value. +func (s *CreateKeySigningKeyInput) SetKeyManagementServiceArn(v string) *CreateKeySigningKeyInput { + s.KeyManagementServiceArn = &v + return s +} + +// SetName sets the Name field's value. +func (s *CreateKeySigningKeyInput) SetName(v string) *CreateKeySigningKeyInput { + s.Name = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *CreateKeySigningKeyInput) SetStatus(v string) *CreateKeySigningKeyInput { + s.Status = &v + return s +} + +type CreateKeySigningKeyOutput struct { + _ struct{} `type:"structure"` + + // A complex type that describes change information about changes made to your + // hosted zone. // // ChangeInfo is a required field ChangeInfo *ChangeInfo `type:"structure" required:"true"` - // A complex type that describes the name servers for this hosted zone. - // - // DelegationSet is a required field - DelegationSet *DelegationSet `type:"structure" required:"true"` - - // A complex type that contains general information about the hosted zone. + // The key signing key (KSK) that the request creates. // - // HostedZone is a required field - HostedZone *HostedZone `type:"structure" required:"true"` + // KeySigningKey is a required field + KeySigningKey *KeySigningKey `type:"structure" required:"true"` - // The unique URL representing the new hosted zone. + // The unique URL representing the new key signing key (KSK). // // Location is a required field Location *string `location:"header" locationName:"Location" type:"string" required:"true"` - - // A complex type that contains information about an Amazon VPC that you associated - // with this hosted zone. - VPC *VPC `type:"structure"` } // String returns the string representation -func (s CreateHostedZoneOutput) String() string { +func (s CreateKeySigningKeyOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation -func (s CreateHostedZoneOutput) GoString() string { +func (s CreateKeySigningKeyOutput) GoString() string { return s.String() } // SetChangeInfo sets the ChangeInfo field's value. -func (s *CreateHostedZoneOutput) SetChangeInfo(v *ChangeInfo) *CreateHostedZoneOutput { +func (s *CreateKeySigningKeyOutput) SetChangeInfo(v *ChangeInfo) *CreateKeySigningKeyOutput { s.ChangeInfo = v return s } -// SetDelegationSet sets the DelegationSet field's value. -func (s *CreateHostedZoneOutput) SetDelegationSet(v *DelegationSet) *CreateHostedZoneOutput { - s.DelegationSet = v - return s -} - -// SetHostedZone sets the HostedZone field's value. -func (s *CreateHostedZoneOutput) SetHostedZone(v *HostedZone) *CreateHostedZoneOutput { - s.HostedZone = v +// SetKeySigningKey sets the KeySigningKey field's value. +func (s *CreateKeySigningKeyOutput) SetKeySigningKey(v *KeySigningKey) *CreateKeySigningKeyOutput { + s.KeySigningKey = v return s } // SetLocation sets the Location field's value. -func (s *CreateHostedZoneOutput) SetLocation(v string) *CreateHostedZoneOutput { +func (s *CreateKeySigningKeyOutput) SetLocation(v string) *CreateKeySigningKeyOutput { s.Location = &v return s } -// SetVPC sets the VPC field's value. -func (s *CreateHostedZoneOutput) SetVPC(v *VPC) *CreateHostedZoneOutput { - s.VPC = v - return s -} - type CreateQueryLoggingConfigInput struct { _ struct{} `locationName:"CreateQueryLoggingConfigRequest" type:"structure" xmlURI:"https://route53.amazonaws.com/doc/2013-04-01/"` @@ -8088,6 +9055,132 @@ func (s *CreateVPCAssociationAuthorizationOutput) SetVPC(v *VPC) *CreateVPCAssoc return s } +// A string repesenting the status of DNSSEC signing. +type DNSSECStatus struct { + _ struct{} `type:"structure"` + + // Indicates your hosted zone signging status: SIGNING, NOT_SIGNING, or INTERNAL_FAILURE. + // If the status is INTERNAL_FAILURE, see StatusMessage for information about + // steps that you can take to correct the problem. + // + // A status INTERNAL_FAILURE means there was an error during a request. Before + // you can continue to work with DNSSEC signing, including working with key + // signing keys (KSKs), you must correct the problem by enabling or disabling + // DNSSEC signing for the hosted zone. + ServeSignature *string `min:"1" type:"string"` + + // The status message provided for the following DNSSEC signing status: INTERNAL_FAILURE. + // The status message includes information about what the problem might be and + // steps that you can take to correct the issue. + StatusMessage *string `type:"string"` +} + +// String returns the string representation +func (s DNSSECStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DNSSECStatus) GoString() string { + return s.String() +} + +// SetServeSignature sets the ServeSignature field's value. +func (s *DNSSECStatus) SetServeSignature(v string) *DNSSECStatus { + s.ServeSignature = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *DNSSECStatus) SetStatusMessage(v string) *DNSSECStatus { + s.StatusMessage = &v + return s +} + +type DeactivateKeySigningKeyInput struct { + _ struct{} `locationName:"DeactivateKeySigningKeyRequest" type:"structure"` + + // A unique string used to identify a hosted zone. + // + // HostedZoneId is a required field + HostedZoneId *string `location:"uri" locationName:"HostedZoneId" type:"string" required:"true"` + + // An alphanumeric string used to identify a key signing key (KSK). + // + // Name is a required field + Name *string `location:"uri" locationName:"Name" min:"3" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeactivateKeySigningKeyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeactivateKeySigningKeyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeactivateKeySigningKeyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeactivateKeySigningKeyInput"} + if s.HostedZoneId == nil { + invalidParams.Add(request.NewErrParamRequired("HostedZoneId")) + } + if s.HostedZoneId != nil && len(*s.HostedZoneId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("HostedZoneId", 1)) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 3 { + invalidParams.Add(request.NewErrParamMinLen("Name", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *DeactivateKeySigningKeyInput) SetHostedZoneId(v string) *DeactivateKeySigningKeyInput { + s.HostedZoneId = &v + return s +} + +// SetName sets the Name field's value. +func (s *DeactivateKeySigningKeyInput) SetName(v string) *DeactivateKeySigningKeyInput { + s.Name = &v + return s +} + +type DeactivateKeySigningKeyOutput struct { + _ struct{} `type:"structure"` + + // A complex type that describes change information about changes made to your + // hosted zone. + // + // ChangeInfo is a required field + ChangeInfo *ChangeInfo `type:"structure" required:"true"` +} + +// String returns the string representation +func (s DeactivateKeySigningKeyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeactivateKeySigningKeyOutput) GoString() string { + return s.String() +} + +// SetChangeInfo sets the ChangeInfo field's value. +func (s *DeactivateKeySigningKeyOutput) SetChangeInfo(v *ChangeInfo) *DeactivateKeySigningKeyOutput { + s.ChangeInfo = v + return s +} + // A complex type that lists the name servers in a delegation set, as well as // the CallerReference and the ID for the delegation set. type DelegationSet struct { @@ -8261,6 +9354,90 @@ func (s *DeleteHostedZoneOutput) SetChangeInfo(v *ChangeInfo) *DeleteHostedZoneO return s } +type DeleteKeySigningKeyInput struct { + _ struct{} `locationName:"DeleteKeySigningKeyRequest" type:"structure"` + + // A unique string used to identify a hosted zone. + // + // HostedZoneId is a required field + HostedZoneId *string `location:"uri" locationName:"HostedZoneId" type:"string" required:"true"` + + // An alphanumeric string used to identify a key signing key (KSK). + // + // Name is a required field + Name *string `location:"uri" locationName:"Name" min:"3" type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteKeySigningKeyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteKeySigningKeyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteKeySigningKeyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteKeySigningKeyInput"} + if s.HostedZoneId == nil { + invalidParams.Add(request.NewErrParamRequired("HostedZoneId")) + } + if s.HostedZoneId != nil && len(*s.HostedZoneId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("HostedZoneId", 1)) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 3 { + invalidParams.Add(request.NewErrParamMinLen("Name", 3)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *DeleteKeySigningKeyInput) SetHostedZoneId(v string) *DeleteKeySigningKeyInput { + s.HostedZoneId = &v + return s +} + +// SetName sets the Name field's value. +func (s *DeleteKeySigningKeyInput) SetName(v string) *DeleteKeySigningKeyInput { + s.Name = &v + return s +} + +type DeleteKeySigningKeyOutput struct { + _ struct{} `type:"structure"` + + // A complex type that describes change information about changes made to your + // hosted zone. + // + // ChangeInfo is a required field + ChangeInfo *ChangeInfo `type:"structure" required:"true"` +} + +// String returns the string representation +func (s DeleteKeySigningKeyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteKeySigningKeyOutput) GoString() string { + return s.String() +} + +// SetChangeInfo sets the ChangeInfo field's value. +func (s *DeleteKeySigningKeyOutput) SetChangeInfo(v *ChangeInfo) *DeleteKeySigningKeyOutput { + s.ChangeInfo = v + return s +} + type DeleteQueryLoggingConfigInput struct { _ struct{} `locationName:"DeleteQueryLoggingConfigRequest" type:"structure"` @@ -8585,48 +9762,115 @@ func (s DeleteVPCAssociationAuthorizationOutput) String() string { return awsutil.Prettify(s) } -// GoString returns the string representation -func (s DeleteVPCAssociationAuthorizationOutput) GoString() string { - return s.String() +// GoString returns the string representation +func (s DeleteVPCAssociationAuthorizationOutput) GoString() string { + return s.String() +} + +// For the metric that the CloudWatch alarm is associated with, a complex type +// that contains information about one dimension. +type Dimension struct { + _ struct{} `type:"structure"` + + // For the metric that the CloudWatch alarm is associated with, the name of + // one dimension. + // + // Name is a required field + Name *string `min:"1" type:"string" required:"true"` + + // For the metric that the CloudWatch alarm is associated with, the value of + // one dimension. + // + // Value is a required field + Value *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s Dimension) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Dimension) GoString() string { + return s.String() +} + +// SetName sets the Name field's value. +func (s *Dimension) SetName(v string) *Dimension { + s.Name = &v + return s +} + +// SetValue sets the Value field's value. +func (s *Dimension) SetValue(v string) *Dimension { + s.Value = &v + return s +} + +type DisableHostedZoneDNSSECInput struct { + _ struct{} `locationName:"DisableHostedZoneDNSSECRequest" type:"structure"` + + // A unique string used to identify a hosted zone. + // + // HostedZoneId is a required field + HostedZoneId *string `location:"uri" locationName:"Id" type:"string" required:"true"` +} + +// String returns the string representation +func (s DisableHostedZoneDNSSECInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DisableHostedZoneDNSSECInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DisableHostedZoneDNSSECInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DisableHostedZoneDNSSECInput"} + if s.HostedZoneId == nil { + invalidParams.Add(request.NewErrParamRequired("HostedZoneId")) + } + if s.HostedZoneId != nil && len(*s.HostedZoneId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("HostedZoneId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *DisableHostedZoneDNSSECInput) SetHostedZoneId(v string) *DisableHostedZoneDNSSECInput { + s.HostedZoneId = &v + return s } -// For the metric that the CloudWatch alarm is associated with, a complex type -// that contains information about one dimension. -type Dimension struct { +type DisableHostedZoneDNSSECOutput struct { _ struct{} `type:"structure"` - // For the metric that the CloudWatch alarm is associated with, the name of - // one dimension. - // - // Name is a required field - Name *string `min:"1" type:"string" required:"true"` - - // For the metric that the CloudWatch alarm is associated with, the value of - // one dimension. + // A complex type that describes change information about changes made to your + // hosted zone. // - // Value is a required field - Value *string `min:"1" type:"string" required:"true"` + // ChangeInfo is a required field + ChangeInfo *ChangeInfo `type:"structure" required:"true"` } // String returns the string representation -func (s Dimension) String() string { +func (s DisableHostedZoneDNSSECOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation -func (s Dimension) GoString() string { +func (s DisableHostedZoneDNSSECOutput) GoString() string { return s.String() } -// SetName sets the Name field's value. -func (s *Dimension) SetName(v string) *Dimension { - s.Name = &v - return s -} - -// SetValue sets the Value field's value. -func (s *Dimension) SetValue(v string) *Dimension { - s.Value = &v +// SetChangeInfo sets the ChangeInfo field's value. +func (s *DisableHostedZoneDNSSECOutput) SetChangeInfo(v *ChangeInfo) *DisableHostedZoneDNSSECOutput { + s.ChangeInfo = v return s } @@ -8730,6 +9974,73 @@ func (s *DisassociateVPCFromHostedZoneOutput) SetChangeInfo(v *ChangeInfo) *Disa return s } +type EnableHostedZoneDNSSECInput struct { + _ struct{} `locationName:"EnableHostedZoneDNSSECRequest" type:"structure"` + + // A unique string used to identify a hosted zone. + // + // HostedZoneId is a required field + HostedZoneId *string `location:"uri" locationName:"Id" type:"string" required:"true"` +} + +// String returns the string representation +func (s EnableHostedZoneDNSSECInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableHostedZoneDNSSECInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EnableHostedZoneDNSSECInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EnableHostedZoneDNSSECInput"} + if s.HostedZoneId == nil { + invalidParams.Add(request.NewErrParamRequired("HostedZoneId")) + } + if s.HostedZoneId != nil && len(*s.HostedZoneId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("HostedZoneId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *EnableHostedZoneDNSSECInput) SetHostedZoneId(v string) *EnableHostedZoneDNSSECInput { + s.HostedZoneId = &v + return s +} + +type EnableHostedZoneDNSSECOutput struct { + _ struct{} `type:"structure"` + + // A complex type that describes change information about changes made to your + // hosted zone. + // + // ChangeInfo is a required field + ChangeInfo *ChangeInfo `type:"structure" required:"true"` +} + +// String returns the string representation +func (s EnableHostedZoneDNSSECOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EnableHostedZoneDNSSECOutput) GoString() string { + return s.String() +} + +// SetChangeInfo sets the ChangeInfo field's value. +func (s *EnableHostedZoneDNSSECOutput) SetChangeInfo(v *ChangeInfo) *EnableHostedZoneDNSSECOutput { + s.ChangeInfo = v + return s +} + // A complex type that contains information about a geographic location. type GeoLocation struct { _ struct{} `type:"structure"` @@ -9106,6 +10417,83 @@ func (s *GetCheckerIpRangesOutput) SetCheckerIpRanges(v []*string) *GetCheckerIp return s } +type GetDNSSECInput struct { + _ struct{} `locationName:"GetDNSSECRequest" type:"structure"` + + // A unique string used to identify a hosted zone. + // + // HostedZoneId is a required field + HostedZoneId *string `location:"uri" locationName:"Id" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetDNSSECInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetDNSSECInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetDNSSECInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetDNSSECInput"} + if s.HostedZoneId == nil { + invalidParams.Add(request.NewErrParamRequired("HostedZoneId")) + } + if s.HostedZoneId != nil && len(*s.HostedZoneId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("HostedZoneId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetHostedZoneId sets the HostedZoneId field's value. +func (s *GetDNSSECInput) SetHostedZoneId(v string) *GetDNSSECInput { + s.HostedZoneId = &v + return s +} + +type GetDNSSECOutput struct { + _ struct{} `type:"structure"` + + // The key signing keys (KSKs) in your account. + // + // KeySigningKeys is a required field + KeySigningKeys []*KeySigningKey `type:"list" required:"true"` + + // A string repesenting the status of DNSSEC. + // + // Status is a required field + Status *DNSSECStatus `type:"structure" required:"true"` +} + +// String returns the string representation +func (s GetDNSSECOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetDNSSECOutput) GoString() string { + return s.String() +} + +// SetKeySigningKeys sets the KeySigningKeys field's value. +func (s *GetDNSSECOutput) SetKeySigningKeys(v []*KeySigningKey) *GetDNSSECOutput { + s.KeySigningKeys = v + return s +} + +// SetStatus sets the Status field's value. +func (s *GetDNSSECOutput) SetStatus(v *DNSSECStatus) *GetDNSSECOutput { + s.Status = v + return s +} + // A request for information about whether a specified geographic location is // supported for Amazon Route 53 geolocation resource record sets. type GetGeoLocationInput struct { @@ -10992,6 +12380,237 @@ func (s *HostedZoneSummary) SetOwner(v *HostedZoneOwner) *HostedZoneSummary { return s } +// A key signing key (KSK) is a complex type that represents a public/private +// key pair. The private key is used to generate a digital signature for the +// zone signing key (ZSK). The public key is stored in the DNS and is used to +// authenticate the ZSK. A KSK is always associated with a hosted zone; it cannot +// exist by itself. +type KeySigningKey struct { + _ struct{} `type:"structure"` + + // The date when the key signing key (KSK) was created. + CreatedDate *time.Time `type:"timestamp"` + + // A string that represents a DNSKEY record. + DNSKEYRecord *string `type:"string"` + + // A string that represents a delegation signer (DS) record. + DSRecord *string `type:"string"` + + // A string used to represent the delegation signer digest algorithm. This value + // must follow the guidelines provided by RFC-8624 Section 3.3 (https://tools.ietf.org/html/rfc8624#section-3.3). + DigestAlgorithmMnemonic *string `type:"string"` + + // An integer used to represent the delegation signer digest algorithm. This + // value must follow the guidelines provided by RFC-8624 Section 3.3 (https://tools.ietf.org/html/rfc8624#section-3.3). + DigestAlgorithmType *int64 `type:"integer"` + + // A cryptographic digest of a DNSKEY resource record (RR). DNSKEY records are + // used to publish the public key that resolvers can use to verify DNSSEC signatures + // that are used to secure certain kinds of information provided by the DNS + // system. + DigestValue *string `type:"string"` + + // An integer that specifies how the key is used. For key signing key (KSK), + // this value is always 257. + Flag *int64 `type:"integer"` + + // An integer used to identify the DNSSEC record for the domain name. The process + // used to calculate the value is described in RFC-4034 Appendix B (https://tools.ietf.org/rfc/rfc4034.txt). + KeyTag *int64 `type:"integer"` + + // The Amazon resource name (ARN) used to identify the customer managed key + // (CMK) in AWS Key Management Service (KMS). The KmsArn must be unique for + // each key signing key (KSK) in a single hosted zone. + // + // You must configure the CMK as follows: + // + // Status + // + // Enabled + // + // Key spec + // + // ECC_NIST_P256 + // + // Key usage + // + // Sign and verify + // + // Key policy + // + // The key policy must give permission for the following actions: + // + // * DescribeKey + // + // * GetPublicKey + // + // * Sign + // + // The key policy must also include the Amazon Route 53 service in the principal + // for your account. Specify the following: + // + // * "Service": "api-service.dnssec.route53.aws.internal" + // + // For more information about working with the customer managed key (CMK) in + // KMS, see AWS Key Management Service concepts (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html). + KmsArn *string `type:"string"` + + // The last time that the key signing key (KSK) was changed. + LastModifiedDate *time.Time `type:"timestamp"` + + // An alphanumeric string used to identify a key signing key (KSK). Name must + // be unique for each key signing key in the same hosted zone. + Name *string `min:"3" type:"string"` + + // The public key, represented as a Base64 encoding, as required by RFC-4034 + // Page 5 (https://tools.ietf.org/rfc/rfc4034.txt). + PublicKey *string `type:"string"` + + // A string used to represent the signing algorithm. This value must follow + // the guidelines provided by RFC-8624 Section 3.1 (https://tools.ietf.org/html/rfc8624#section-3.1). + SigningAlgorithmMnemonic *string `type:"string"` + + // An integer used to represent the signing algorithm. This value must follow + // the guidelines provided by RFC-8624 Section 3.1 (https://tools.ietf.org/html/rfc8624#section-3.1). + SigningAlgorithmType *int64 `type:"integer"` + + // A string that represents the current key signing key (KSK) status. + // + // Status can have one of the following values: + // + // ACTIVE + // + // The KSK is being used for signing. + // + // INACTIVE + // + // The KSK is not being used for signing. + // + // ACTION_NEEDED + // + // There is an error in the KSK that requires you to take action to resolve. + // + // INTERNAL_FAILURE + // + // There was an error during a request. Before you can continue to work with + // DNSSEC signing, including actions that involve this KSK, you must correct + // the problem. For example, you may need to activate or deactivate the KSK. + Status *string `min:"5" type:"string"` + + // The status message provided for the following key signing key (KSK) statuses: + // ACTION_NEEDED or INTERNAL_FAILURE. The status message includes information + // about what the problem might be and steps that you can take to correct the + // issue. + StatusMessage *string `type:"string"` +} + +// String returns the string representation +func (s KeySigningKey) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s KeySigningKey) GoString() string { + return s.String() +} + +// SetCreatedDate sets the CreatedDate field's value. +func (s *KeySigningKey) SetCreatedDate(v time.Time) *KeySigningKey { + s.CreatedDate = &v + return s +} + +// SetDNSKEYRecord sets the DNSKEYRecord field's value. +func (s *KeySigningKey) SetDNSKEYRecord(v string) *KeySigningKey { + s.DNSKEYRecord = &v + return s +} + +// SetDSRecord sets the DSRecord field's value. +func (s *KeySigningKey) SetDSRecord(v string) *KeySigningKey { + s.DSRecord = &v + return s +} + +// SetDigestAlgorithmMnemonic sets the DigestAlgorithmMnemonic field's value. +func (s *KeySigningKey) SetDigestAlgorithmMnemonic(v string) *KeySigningKey { + s.DigestAlgorithmMnemonic = &v + return s +} + +// SetDigestAlgorithmType sets the DigestAlgorithmType field's value. +func (s *KeySigningKey) SetDigestAlgorithmType(v int64) *KeySigningKey { + s.DigestAlgorithmType = &v + return s +} + +// SetDigestValue sets the DigestValue field's value. +func (s *KeySigningKey) SetDigestValue(v string) *KeySigningKey { + s.DigestValue = &v + return s +} + +// SetFlag sets the Flag field's value. +func (s *KeySigningKey) SetFlag(v int64) *KeySigningKey { + s.Flag = &v + return s +} + +// SetKeyTag sets the KeyTag field's value. +func (s *KeySigningKey) SetKeyTag(v int64) *KeySigningKey { + s.KeyTag = &v + return s +} + +// SetKmsArn sets the KmsArn field's value. +func (s *KeySigningKey) SetKmsArn(v string) *KeySigningKey { + s.KmsArn = &v + return s +} + +// SetLastModifiedDate sets the LastModifiedDate field's value. +func (s *KeySigningKey) SetLastModifiedDate(v time.Time) *KeySigningKey { + s.LastModifiedDate = &v + return s +} + +// SetName sets the Name field's value. +func (s *KeySigningKey) SetName(v string) *KeySigningKey { + s.Name = &v + return s +} + +// SetPublicKey sets the PublicKey field's value. +func (s *KeySigningKey) SetPublicKey(v string) *KeySigningKey { + s.PublicKey = &v + return s +} + +// SetSigningAlgorithmMnemonic sets the SigningAlgorithmMnemonic field's value. +func (s *KeySigningKey) SetSigningAlgorithmMnemonic(v string) *KeySigningKey { + s.SigningAlgorithmMnemonic = &v + return s +} + +// SetSigningAlgorithmType sets the SigningAlgorithmType field's value. +func (s *KeySigningKey) SetSigningAlgorithmType(v int64) *KeySigningKey { + s.SigningAlgorithmType = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *KeySigningKey) SetStatus(v string) *KeySigningKey { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *KeySigningKey) SetStatusMessage(v string) *KeySigningKey { + s.StatusMessage = &v + return s +} + // If a health check or hosted zone was created by another service, LinkedService // is a complex type that describes the service that created the resource. When // a resource is created by another service, you can't edit or delete it using @@ -15797,6 +17416,9 @@ const ( // RRTypeCaa is a RRType enum value RRTypeCaa = "CAA" + + // RRTypeDs is a RRType enum value + RRTypeDs = "DS" ) // RRType_Values returns all elements of the RRType enum @@ -15814,6 +17436,7 @@ func RRType_Values() []string { RRTypeSpf, RRTypeAaaa, RRTypeCaa, + RRTypeDs, } } diff --git a/service/route53/errors.go b/service/route53/errors.go index 23b4270b94..1a3b3d1a36 100644 --- a/service/route53/errors.go +++ b/service/route53/errors.go @@ -40,6 +40,12 @@ const ( // specified the type in the JSON document in the CreateTrafficPolicy or CreateTrafficPolicyVersionrequest. ErrCodeConflictingTypes = "ConflictingTypes" + // ErrCodeDNSSECNotFound for service response error code + // "DNSSECNotFound". + // + // The hosted zone doesn't have any DNSSEC resources. + ErrCodeDNSSECNotFound = "DNSSECNotFound" + // ErrCodeDelegationSetAlreadyCreated for service response error code // "DelegationSetAlreadyCreated". // @@ -129,6 +135,13 @@ const ( // The specified hosted zone is a public hosted zone, not a private hosted zone. ErrCodeHostedZoneNotPrivate = "HostedZoneNotPrivate" + // ErrCodeHostedZonePartiallyDelegated for service response error code + // "HostedZonePartiallyDelegated". + // + // The hosted zone nameservers don't match the parent nameservers. The hosted + // zone and parent must have the same nameservers. + ErrCodeHostedZonePartiallyDelegated = "HostedZonePartiallyDelegated" + // ErrCodeIncompatibleVersion for service response error code // "IncompatibleVersion". // @@ -154,7 +167,7 @@ const ( // ErrCodeInvalidArgument for service response error code // "InvalidArgument". // - // Parameter name is invalid. + // Parameter name is not valid. ErrCodeInvalidArgument = "InvalidArgument" // ErrCodeInvalidChangeBatch for service response error code @@ -176,6 +189,26 @@ const ( // The input is not valid. ErrCodeInvalidInput = "InvalidInput" + // ErrCodeInvalidKMSArn for service response error code + // "InvalidKMSArn". + // + // The KeyManagementServiceArn that you specified isn't valid to use with DNSSEC + // signing. + ErrCodeInvalidKMSArn = "InvalidKMSArn" + + // ErrCodeInvalidKeySigningKeyName for service response error code + // "InvalidKeySigningKeyName". + // + // The key signing key (KSK) name that you specified isn't a valid name. + ErrCodeInvalidKeySigningKeyName = "InvalidKeySigningKeyName" + + // ErrCodeInvalidKeySigningKeyStatus for service response error code + // "InvalidKeySigningKeyStatus". + // + // The key signing key (KSK) status isn't valid or another KSK has the status + // INTERNAL_FAILURE. + ErrCodeInvalidKeySigningKeyStatus = "InvalidKeySigningKeyStatus" + // ErrCodeInvalidPaginationToken for service response error code // "InvalidPaginationToken". // @@ -183,11 +216,18 @@ const ( // is invalid. ErrCodeInvalidPaginationToken = "InvalidPaginationToken" + // ErrCodeInvalidSigningStatus for service response error code + // "InvalidSigningStatus". + // + // Your hosted zone status isn't valid for this operation. In the hosted zone, + // change the status to enable DNSSEC or disable DNSSEC. + ErrCodeInvalidSigningStatus = "InvalidSigningStatus" + // ErrCodeInvalidTrafficPolicyDocument for service response error code // "InvalidTrafficPolicyDocument". // // The format of the traffic policy document that you specified in the Document - // element is invalid. + // element is not valid. ErrCodeInvalidTrafficPolicyDocument = "InvalidTrafficPolicyDocument" // ErrCodeInvalidVPCId for service response error code @@ -197,6 +237,33 @@ const ( // is not authorized to access this VPC. ErrCodeInvalidVPCId = "InvalidVPCId" + // ErrCodeKeySigningKeyAlreadyExists for service response error code + // "KeySigningKeyAlreadyExists". + // + // You've already created a key signing key (KSK) with this name or with the + // same customer managed key (CMK) ARN. + ErrCodeKeySigningKeyAlreadyExists = "KeySigningKeyAlreadyExists" + + // ErrCodeKeySigningKeyInParentDSRecord for service response error code + // "KeySigningKeyInParentDSRecord". + // + // The key signing key (KSK) is specified in a parent DS record. + ErrCodeKeySigningKeyInParentDSRecord = "KeySigningKeyInParentDSRecord" + + // ErrCodeKeySigningKeyInUse for service response error code + // "KeySigningKeyInUse". + // + // The key signing key (KSK) that you specified can't be deactivated because + // it's the only KSK for a currently-enabled DNSSEC. Disable DNSSEC signing, + // or add or enable another KSK. + ErrCodeKeySigningKeyInUse = "KeySigningKeyInUse" + + // ErrCodeKeySigningKeyWithActiveStatusNotFound for service response error code + // "KeySigningKeyWithActiveStatusNotFound". + // + // A key signing key (KSK) with ACTIVE status wasn't found. + ErrCodeKeySigningKeyWithActiveStatusNotFound = "KeySigningKeyWithActiveStatusNotFound" + // ErrCodeLastVPCAssociation for service response error code // "LastVPCAssociation". // @@ -257,6 +324,12 @@ const ( // No hosted zone exists with the ID that you specified. ErrCodeNoSuchHostedZone = "NoSuchHostedZone" + // ErrCodeNoSuchKeySigningKey for service response error code + // "NoSuchKeySigningKey". + // + // The specified key signing key (KSK) doesn't exist. + ErrCodeNoSuchKeySigningKey = "NoSuchKeySigningKey" + // ErrCodeNoSuchQueryLoggingConfig for service response error code // "NoSuchQueryLoggingConfig". // @@ -352,6 +425,13 @@ const ( // with the AWS Support Center. ErrCodeTooManyHostedZones = "TooManyHostedZones" + // ErrCodeTooManyKeySigningKeys for service response error code + // "TooManyKeySigningKeys". + // + // You've reached the limit for the number of key signing keys (KSKs). Remove + // at least one KSK, and then try again. + ErrCodeTooManyKeySigningKeys = "TooManyKeySigningKeys" + // ErrCodeTooManyTrafficPolicies for service response error code // "TooManyTrafficPolicies". // diff --git a/service/route53/route53iface/interface.go b/service/route53/route53iface/interface.go index d1be6cc0bc..81ad6b4709 100644 --- a/service/route53/route53iface/interface.go +++ b/service/route53/route53iface/interface.go @@ -26,7 +26,7 @@ import ( // // myFunc uses an SDK service client to make a request to // // Amazon Route 53. // func myFunc(svc route53iface.Route53API) bool { -// // Make svc.AssociateVPCWithHostedZone request +// // Make svc.ActivateKeySigningKey request // } // // func main() { @@ -42,7 +42,7 @@ import ( // type mockRoute53Client struct { // route53iface.Route53API // } -// func (m *mockRoute53Client) AssociateVPCWithHostedZone(input *route53.AssociateVPCWithHostedZoneInput) (*route53.AssociateVPCWithHostedZoneOutput, error) { +// func (m *mockRoute53Client) ActivateKeySigningKey(input *route53.ActivateKeySigningKeyInput) (*route53.ActivateKeySigningKeyOutput, error) { // // mock response/functionality // } // @@ -60,6 +60,10 @@ import ( // and waiters. Its suggested to use the pattern above for testing, or using // tooling to generate mocks to satisfy the interfaces. type Route53API interface { + ActivateKeySigningKey(*route53.ActivateKeySigningKeyInput) (*route53.ActivateKeySigningKeyOutput, error) + ActivateKeySigningKeyWithContext(aws.Context, *route53.ActivateKeySigningKeyInput, ...request.Option) (*route53.ActivateKeySigningKeyOutput, error) + ActivateKeySigningKeyRequest(*route53.ActivateKeySigningKeyInput) (*request.Request, *route53.ActivateKeySigningKeyOutput) + AssociateVPCWithHostedZone(*route53.AssociateVPCWithHostedZoneInput) (*route53.AssociateVPCWithHostedZoneOutput, error) AssociateVPCWithHostedZoneWithContext(aws.Context, *route53.AssociateVPCWithHostedZoneInput, ...request.Option) (*route53.AssociateVPCWithHostedZoneOutput, error) AssociateVPCWithHostedZoneRequest(*route53.AssociateVPCWithHostedZoneInput) (*request.Request, *route53.AssociateVPCWithHostedZoneOutput) @@ -80,6 +84,10 @@ type Route53API interface { CreateHostedZoneWithContext(aws.Context, *route53.CreateHostedZoneInput, ...request.Option) (*route53.CreateHostedZoneOutput, error) CreateHostedZoneRequest(*route53.CreateHostedZoneInput) (*request.Request, *route53.CreateHostedZoneOutput) + CreateKeySigningKey(*route53.CreateKeySigningKeyInput) (*route53.CreateKeySigningKeyOutput, error) + CreateKeySigningKeyWithContext(aws.Context, *route53.CreateKeySigningKeyInput, ...request.Option) (*route53.CreateKeySigningKeyOutput, error) + CreateKeySigningKeyRequest(*route53.CreateKeySigningKeyInput) (*request.Request, *route53.CreateKeySigningKeyOutput) + CreateQueryLoggingConfig(*route53.CreateQueryLoggingConfigInput) (*route53.CreateQueryLoggingConfigOutput, error) CreateQueryLoggingConfigWithContext(aws.Context, *route53.CreateQueryLoggingConfigInput, ...request.Option) (*route53.CreateQueryLoggingConfigOutput, error) CreateQueryLoggingConfigRequest(*route53.CreateQueryLoggingConfigInput) (*request.Request, *route53.CreateQueryLoggingConfigOutput) @@ -104,6 +112,10 @@ type Route53API interface { CreateVPCAssociationAuthorizationWithContext(aws.Context, *route53.CreateVPCAssociationAuthorizationInput, ...request.Option) (*route53.CreateVPCAssociationAuthorizationOutput, error) CreateVPCAssociationAuthorizationRequest(*route53.CreateVPCAssociationAuthorizationInput) (*request.Request, *route53.CreateVPCAssociationAuthorizationOutput) + DeactivateKeySigningKey(*route53.DeactivateKeySigningKeyInput) (*route53.DeactivateKeySigningKeyOutput, error) + DeactivateKeySigningKeyWithContext(aws.Context, *route53.DeactivateKeySigningKeyInput, ...request.Option) (*route53.DeactivateKeySigningKeyOutput, error) + DeactivateKeySigningKeyRequest(*route53.DeactivateKeySigningKeyInput) (*request.Request, *route53.DeactivateKeySigningKeyOutput) + DeleteHealthCheck(*route53.DeleteHealthCheckInput) (*route53.DeleteHealthCheckOutput, error) DeleteHealthCheckWithContext(aws.Context, *route53.DeleteHealthCheckInput, ...request.Option) (*route53.DeleteHealthCheckOutput, error) DeleteHealthCheckRequest(*route53.DeleteHealthCheckInput) (*request.Request, *route53.DeleteHealthCheckOutput) @@ -112,6 +124,10 @@ type Route53API interface { DeleteHostedZoneWithContext(aws.Context, *route53.DeleteHostedZoneInput, ...request.Option) (*route53.DeleteHostedZoneOutput, error) DeleteHostedZoneRequest(*route53.DeleteHostedZoneInput) (*request.Request, *route53.DeleteHostedZoneOutput) + DeleteKeySigningKey(*route53.DeleteKeySigningKeyInput) (*route53.DeleteKeySigningKeyOutput, error) + DeleteKeySigningKeyWithContext(aws.Context, *route53.DeleteKeySigningKeyInput, ...request.Option) (*route53.DeleteKeySigningKeyOutput, error) + DeleteKeySigningKeyRequest(*route53.DeleteKeySigningKeyInput) (*request.Request, *route53.DeleteKeySigningKeyOutput) + DeleteQueryLoggingConfig(*route53.DeleteQueryLoggingConfigInput) (*route53.DeleteQueryLoggingConfigOutput, error) DeleteQueryLoggingConfigWithContext(aws.Context, *route53.DeleteQueryLoggingConfigInput, ...request.Option) (*route53.DeleteQueryLoggingConfigOutput, error) DeleteQueryLoggingConfigRequest(*route53.DeleteQueryLoggingConfigInput) (*request.Request, *route53.DeleteQueryLoggingConfigOutput) @@ -132,10 +148,18 @@ type Route53API interface { DeleteVPCAssociationAuthorizationWithContext(aws.Context, *route53.DeleteVPCAssociationAuthorizationInput, ...request.Option) (*route53.DeleteVPCAssociationAuthorizationOutput, error) DeleteVPCAssociationAuthorizationRequest(*route53.DeleteVPCAssociationAuthorizationInput) (*request.Request, *route53.DeleteVPCAssociationAuthorizationOutput) + DisableHostedZoneDNSSEC(*route53.DisableHostedZoneDNSSECInput) (*route53.DisableHostedZoneDNSSECOutput, error) + DisableHostedZoneDNSSECWithContext(aws.Context, *route53.DisableHostedZoneDNSSECInput, ...request.Option) (*route53.DisableHostedZoneDNSSECOutput, error) + DisableHostedZoneDNSSECRequest(*route53.DisableHostedZoneDNSSECInput) (*request.Request, *route53.DisableHostedZoneDNSSECOutput) + DisassociateVPCFromHostedZone(*route53.DisassociateVPCFromHostedZoneInput) (*route53.DisassociateVPCFromHostedZoneOutput, error) DisassociateVPCFromHostedZoneWithContext(aws.Context, *route53.DisassociateVPCFromHostedZoneInput, ...request.Option) (*route53.DisassociateVPCFromHostedZoneOutput, error) DisassociateVPCFromHostedZoneRequest(*route53.DisassociateVPCFromHostedZoneInput) (*request.Request, *route53.DisassociateVPCFromHostedZoneOutput) + EnableHostedZoneDNSSEC(*route53.EnableHostedZoneDNSSECInput) (*route53.EnableHostedZoneDNSSECOutput, error) + EnableHostedZoneDNSSECWithContext(aws.Context, *route53.EnableHostedZoneDNSSECInput, ...request.Option) (*route53.EnableHostedZoneDNSSECOutput, error) + EnableHostedZoneDNSSECRequest(*route53.EnableHostedZoneDNSSECInput) (*request.Request, *route53.EnableHostedZoneDNSSECOutput) + GetAccountLimit(*route53.GetAccountLimitInput) (*route53.GetAccountLimitOutput, error) GetAccountLimitWithContext(aws.Context, *route53.GetAccountLimitInput, ...request.Option) (*route53.GetAccountLimitOutput, error) GetAccountLimitRequest(*route53.GetAccountLimitInput) (*request.Request, *route53.GetAccountLimitOutput) @@ -148,6 +172,10 @@ type Route53API interface { GetCheckerIpRangesWithContext(aws.Context, *route53.GetCheckerIpRangesInput, ...request.Option) (*route53.GetCheckerIpRangesOutput, error) GetCheckerIpRangesRequest(*route53.GetCheckerIpRangesInput) (*request.Request, *route53.GetCheckerIpRangesOutput) + GetDNSSEC(*route53.GetDNSSECInput) (*route53.GetDNSSECOutput, error) + GetDNSSECWithContext(aws.Context, *route53.GetDNSSECInput, ...request.Option) (*route53.GetDNSSECOutput, error) + GetDNSSECRequest(*route53.GetDNSSECInput) (*request.Request, *route53.GetDNSSECOutput) + GetGeoLocation(*route53.GetGeoLocationInput) (*route53.GetGeoLocationOutput, error) GetGeoLocationWithContext(aws.Context, *route53.GetGeoLocationInput, ...request.Option) (*route53.GetGeoLocationOutput, error) GetGeoLocationRequest(*route53.GetGeoLocationInput) (*request.Request, *route53.GetGeoLocationOutput) diff --git a/service/route53resolver/api.go b/service/route53resolver/api.go index eff7dc2795..8b356db5b2 100644 --- a/service/route53resolver/api.go +++ b/service/route53resolver/api.go @@ -1243,6 +1243,101 @@ func (c *Route53Resolver) DisassociateResolverRuleWithContext(ctx aws.Context, i return out, req.Send() } +const opGetResolverDnssecConfig = "GetResolverDnssecConfig" + +// GetResolverDnssecConfigRequest generates a "aws/request.Request" representing the +// client's request for the GetResolverDnssecConfig 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 GetResolverDnssecConfig for more information on using the GetResolverDnssecConfig +// 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 GetResolverDnssecConfigRequest method. +// req, resp := client.GetResolverDnssecConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverDnssecConfig +func (c *Route53Resolver) GetResolverDnssecConfigRequest(input *GetResolverDnssecConfigInput) (req *request.Request, output *GetResolverDnssecConfigOutput) { + op := &request.Operation{ + Name: opGetResolverDnssecConfig, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetResolverDnssecConfigInput{} + } + + output = &GetResolverDnssecConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetResolverDnssecConfig API operation for Amazon Route 53 Resolver. +// +// Gets DNSSEC validation information for a specified 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 Route 53 Resolver's +// API operation GetResolverDnssecConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// One or more parameters in this request are not valid. +// +// * ResourceNotFoundException +// The specified resource doesn't exist. +// +// * InvalidRequestException +// The request is invalid. +// +// * InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// * ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// * AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetResolverDnssecConfig +func (c *Route53Resolver) GetResolverDnssecConfig(input *GetResolverDnssecConfigInput) (*GetResolverDnssecConfigOutput, error) { + req, out := c.GetResolverDnssecConfigRequest(input) + return out, req.Send() +} + +// GetResolverDnssecConfigWithContext is the same as GetResolverDnssecConfig with the addition of +// the ability to pass a context and additional request options. +// +// See GetResolverDnssecConfig 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 *Route53Resolver) GetResolverDnssecConfigWithContext(ctx aws.Context, input *GetResolverDnssecConfigInput, opts ...request.Option) (*GetResolverDnssecConfigOutput, error) { + req, out := c.GetResolverDnssecConfigRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opGetResolverEndpoint = "GetResolverEndpoint" // GetResolverEndpointRequest generates a "aws/request.Request" representing the @@ -1845,9 +1940,10 @@ func (c *Route53Resolver) GetResolverRulePolicyRequest(input *GetResolverRulePol // GetResolverRulePolicy API operation for Amazon Route 53 Resolver. // -// Gets information about a Resolver rule policy. A Resolver rule policy specifies -// the Resolver operations and resources that you want to allow another AWS -// account to be able to use. +// Gets information about the Resolver rule policy for a specified rule. A Resolver +// rule policy includes the rule that you want to share with another account, +// the account that you want to share the rule with, and the Resolver operations +// that you want to allow the account to use. // // 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 @@ -1888,6 +1984,160 @@ func (c *Route53Resolver) GetResolverRulePolicyWithContext(ctx aws.Context, inpu return out, req.Send() } +const opListResolverDnssecConfigs = "ListResolverDnssecConfigs" + +// ListResolverDnssecConfigsRequest generates a "aws/request.Request" representing the +// client's request for the ListResolverDnssecConfigs 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 ListResolverDnssecConfigs for more information on using the ListResolverDnssecConfigs +// 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 ListResolverDnssecConfigsRequest method. +// req, resp := client.ListResolverDnssecConfigsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverDnssecConfigs +func (c *Route53Resolver) ListResolverDnssecConfigsRequest(input *ListResolverDnssecConfigsInput) (req *request.Request, output *ListResolverDnssecConfigsOutput) { + op := &request.Operation{ + Name: opListResolverDnssecConfigs, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListResolverDnssecConfigsInput{} + } + + output = &ListResolverDnssecConfigsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListResolverDnssecConfigs API operation for Amazon Route 53 Resolver. +// +// Lists the configurations for DNSSEC validation that are associated with the +// current AWS account. +// +// 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 Route 53 Resolver's +// API operation ListResolverDnssecConfigs for usage and error information. +// +// Returned Error Types: +// * InvalidNextTokenException +// The value that you specified for NextToken in a List request isn't valid. +// +// * InvalidParameterException +// One or more parameters in this request are not valid. +// +// * InvalidRequestException +// The request is invalid. +// +// * InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// * ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// * AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListResolverDnssecConfigs +func (c *Route53Resolver) ListResolverDnssecConfigs(input *ListResolverDnssecConfigsInput) (*ListResolverDnssecConfigsOutput, error) { + req, out := c.ListResolverDnssecConfigsRequest(input) + return out, req.Send() +} + +// ListResolverDnssecConfigsWithContext is the same as ListResolverDnssecConfigs with the addition of +// the ability to pass a context and additional request options. +// +// See ListResolverDnssecConfigs 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 *Route53Resolver) ListResolverDnssecConfigsWithContext(ctx aws.Context, input *ListResolverDnssecConfigsInput, opts ...request.Option) (*ListResolverDnssecConfigsOutput, error) { + req, out := c.ListResolverDnssecConfigsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListResolverDnssecConfigsPages iterates over the pages of a ListResolverDnssecConfigs operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListResolverDnssecConfigs method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListResolverDnssecConfigs operation. +// pageNum := 0 +// err := client.ListResolverDnssecConfigsPages(params, +// func(page *route53resolver.ListResolverDnssecConfigsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *Route53Resolver) ListResolverDnssecConfigsPages(input *ListResolverDnssecConfigsInput, fn func(*ListResolverDnssecConfigsOutput, bool) bool) error { + return c.ListResolverDnssecConfigsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListResolverDnssecConfigsPagesWithContext same as ListResolverDnssecConfigsPages except +// it takes a Context and allows setting request options on the pages. +// +// 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 *Route53Resolver) ListResolverDnssecConfigsPagesWithContext(ctx aws.Context, input *ListResolverDnssecConfigsInput, fn func(*ListResolverDnssecConfigsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListResolverDnssecConfigsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListResolverDnssecConfigsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListResolverDnssecConfigsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opListResolverEndpointIpAddresses = "ListResolverEndpointIpAddresses" // ListResolverEndpointIpAddressesRequest generates a "aws/request.Request" representing the @@ -3088,9 +3338,9 @@ func (c *Route53Resolver) PutResolverRulePolicyRequest(input *PutResolverRulePol // PutResolverRulePolicy API operation for Amazon Route 53 Resolver. // -// Specifies an AWS account that you want to share rules with, the Resolver -// rules that you want to share, and the operations that you want the account -// to be able to perform on those rules. +// Specifies an AWS rule that you want to share with another account, the account +// that you want to share the rule with, and the operations that you want the +// account to be able to perform on the rule. // // 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 @@ -3302,23 +3552,119 @@ func (c *Route53Resolver) UntagResourceRequest(input *UntagResourceInput) (req * // * ThrottlingException // The request was throttled. Try again in a few minutes. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UntagResource -func (c *Route53Resolver) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) { - req, out := c.UntagResourceRequest(input) +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UntagResource +func (c *Route53Resolver) 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 *Route53Resolver) 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 opUpdateResolverDnssecConfig = "UpdateResolverDnssecConfig" + +// UpdateResolverDnssecConfigRequest generates a "aws/request.Request" representing the +// client's request for the UpdateResolverDnssecConfig 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 UpdateResolverDnssecConfig for more information on using the UpdateResolverDnssecConfig +// 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 UpdateResolverDnssecConfigRequest method. +// req, resp := client.UpdateResolverDnssecConfigRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverDnssecConfig +func (c *Route53Resolver) UpdateResolverDnssecConfigRequest(input *UpdateResolverDnssecConfigInput) (req *request.Request, output *UpdateResolverDnssecConfigOutput) { + op := &request.Operation{ + Name: opUpdateResolverDnssecConfig, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UpdateResolverDnssecConfigInput{} + } + + output = &UpdateResolverDnssecConfigOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateResolverDnssecConfig API operation for Amazon Route 53 Resolver. +// +// Updates an existing DNSSEC validation configuration. If there is no existing +// DNSSEC validation configuration, one is created. +// +// 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 Route 53 Resolver's +// API operation UpdateResolverDnssecConfig for usage and error information. +// +// Returned Error Types: +// * InvalidParameterException +// One or more parameters in this request are not valid. +// +// * ResourceNotFoundException +// The specified resource doesn't exist. +// +// * InvalidRequestException +// The request is invalid. +// +// * InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// * ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// * AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateResolverDnssecConfig +func (c *Route53Resolver) UpdateResolverDnssecConfig(input *UpdateResolverDnssecConfigInput) (*UpdateResolverDnssecConfigOutput, error) { + req, out := c.UpdateResolverDnssecConfigRequest(input) return out, req.Send() } -// UntagResourceWithContext is the same as UntagResource with the addition of +// UpdateResolverDnssecConfigWithContext is the same as UpdateResolverDnssecConfig 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. +// See UpdateResolverDnssecConfig 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 *Route53Resolver) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) { - req, out := c.UntagResourceRequest(input) +func (c *Route53Resolver) UpdateResolverDnssecConfigWithContext(ctx aws.Context, input *UpdateResolverDnssecConfigInput, opts ...request.Option) (*UpdateResolverDnssecConfigOutput, error) { + req, out := c.UpdateResolverDnssecConfigRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() @@ -4755,7 +5101,8 @@ func (s *DisassociateResolverRuleOutput) SetResolverRuleAssociation(v *ResolverR // ListResolverRules (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverRules.html), // ListResolverRuleAssociations (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverRuleAssociations.html), // ListResolverQueryLogConfigs (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverQueryLogConfigs.html), -// and ListResolverQueryLogConfigAssociations (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverQueryLogConfigAssociations.html)), +// ListResolverQueryLogConfigAssociations (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverQueryLogConfigAssociations.html)), +// and ListResolverDnssecConfigs (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ListResolverDnssecConfigs.html)), // an optional specification to return a subset of objects. // // To filter objects, such as Resolver endpoints or Resolver rules, you specify @@ -4908,7 +5255,7 @@ type Filter struct { // // * Status: The status of the query logging association. If you specify // Status for Name, specify the applicable status code for Values: CREATING, - // CREATED, DELETING, or FAILED. For more information, see Status (https://docs.aws.amazon.com/API_route53resolver_ResolverQueryLogConfigAssociation.html#Route53Resolver-Type-route53resolver_ResolverQueryLogConfigAssociation-Status). + // CREATED, DELETING, or FAILED. For more information, see Status (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_ResolverQueryLogConfigAssociation.html#Route53Resolver-Type-route53resolver_ResolverQueryLogConfigAssociation-Status). Name *string `min:"1" type:"string"` // When you're using a List operation and you want the operation to return a @@ -4954,6 +5301,70 @@ func (s *Filter) SetValues(v []*string) *Filter { return s } +type GetResolverDnssecConfigInput struct { + _ struct{} `type:"structure"` + + // The ID of the virtual private cloud (VPC) for the DNSSEC validation status. + // + // ResourceId is a required field + ResourceId *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetResolverDnssecConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetResolverDnssecConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetResolverDnssecConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetResolverDnssecConfigInput"} + if s.ResourceId == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceId")) + } + if s.ResourceId != nil && len(*s.ResourceId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceId sets the ResourceId field's value. +func (s *GetResolverDnssecConfigInput) SetResourceId(v string) *GetResolverDnssecConfigInput { + s.ResourceId = &v + return s +} + +type GetResolverDnssecConfigOutput struct { + _ struct{} `type:"structure"` + + // The information about a configuration for DNSSEC validation. + ResolverDNSSECConfig *ResolverDnssecConfig `type:"structure"` +} + +// String returns the string representation +func (s GetResolverDnssecConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetResolverDnssecConfigOutput) GoString() string { + return s.String() +} + +// SetResolverDNSSECConfig sets the ResolverDNSSECConfig field's value. +func (s *GetResolverDnssecConfigOutput) SetResolverDNSSECConfig(v *ResolverDnssecConfig) *GetResolverDnssecConfigOutput { + s.ResolverDNSSECConfig = v + return s +} + type GetResolverEndpointInput struct { _ struct{} `type:"structure"` @@ -5351,7 +5762,8 @@ func (s *GetResolverRuleOutput) SetResolverRule(v *ResolverRule) *GetResolverRul type GetResolverRulePolicyInput struct { _ struct{} `type:"structure"` - // The ID of the Resolver rule policy that you want to get information about. + // The ID of the Resolver rule that you want to get the Resolver rule policy + // for. // // Arn is a required field Arn *string `min:"1" type:"string" required:"true"` @@ -5392,7 +5804,7 @@ func (s *GetResolverRulePolicyInput) SetArn(v string) *GetResolverRulePolicyInpu type GetResolverRulePolicyOutput struct { _ struct{} `type:"structure"` - // Information about the Resolver rule policy that you specified in a GetResolverRulePolicy + // The Resolver rule policy for the rule that you specified in a GetResolverRulePolicy // request. ResolverRulePolicy *string `type:"string"` } @@ -6017,6 +6429,118 @@ func (s *LimitExceededException) RequestID() string { return s.RespMetadata.RequestID } +type ListResolverDnssecConfigsInput struct { + _ struct{} `type:"structure"` + + // An optional specification to return a subset of objects. + Filters []*Filter `type:"list"` + + // Optional: An integer that specifies the maximum number of DNSSEC configuration + // results that you want Amazon Route 53 to return. If you don't specify a value + // for MaxResults, Route 53 returns up to 100 configuration per page. + MaxResults *int64 `min:"1" type:"integer"` + + // (Optional) If the current AWS account has more than MaxResults DNSSEC configurations, + // use NextToken to get the second and subsequent pages of results. + // + // For the first ListResolverDnssecConfigs request, omit this value. + // + // For the second and subsequent requests, get the value of NextToken from the + // previous response and specify that value for NextToken in the request. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s ListResolverDnssecConfigsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListResolverDnssecConfigsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListResolverDnssecConfigsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListResolverDnssecConfigsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.Filters != nil { + for i, v := range s.Filters { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilters sets the Filters field's value. +func (s *ListResolverDnssecConfigsInput) SetFilters(v []*Filter) *ListResolverDnssecConfigsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListResolverDnssecConfigsInput) SetMaxResults(v int64) *ListResolverDnssecConfigsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListResolverDnssecConfigsInput) SetNextToken(v string) *ListResolverDnssecConfigsInput { + s.NextToken = &v + return s +} + +type ListResolverDnssecConfigsOutput struct { + _ struct{} `type:"structure"` + + // If a response includes the last of the DNSSEC configurations that are associated + // with the current AWS account, NextToken doesn't appear in the response. + // + // If a response doesn't include the last of the configurations, you can get + // more configurations by submitting another ListResolverDnssecConfigs (https://docs.aws.amazon.com/Route53/latest/APIReference/API_ListResolverDnssecConfigs.html) + // request. Get the value of NextToken that Amazon Route 53 returned in the + // previous response and include it in NextToken in the next request. + NextToken *string `type:"string"` + + // An array that contains one ResolverDnssecConfig (https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResolverDnssecConfig.html) + // element for each configuration for DNSSEC validation that is associated with + // the current AWS account. + ResolverDnssecConfigs []*ResolverDnssecConfig `type:"list"` +} + +// String returns the string representation +func (s ListResolverDnssecConfigsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListResolverDnssecConfigsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListResolverDnssecConfigsOutput) SetNextToken(v string) *ListResolverDnssecConfigsOutput { + s.NextToken = &v + return s +} + +// SetResolverDnssecConfigs sets the ResolverDnssecConfigs field's value. +func (s *ListResolverDnssecConfigsOutput) SetResolverDnssecConfigs(v []*ResolverDnssecConfig) *ListResolverDnssecConfigsOutput { + s.ResolverDnssecConfigs = v + return s +} + type ListResolverEndpointIpAddressesInput struct { _ struct{} `type:"structure"` @@ -7087,8 +7611,8 @@ func (s *PutResolverQueryLogConfigPolicyOutput) SetReturnValue(v bool) *PutResol type PutResolverRulePolicyInput struct { _ struct{} `type:"structure"` - // The Amazon Resource Name (ARN) of the account that you want to share rules - // with. + // The Amazon Resource Name (ARN) of the rule that you want to share with another + // account. // // Arn is a required field Arn *string `min:"1" type:"string" required:"true"` @@ -7096,7 +7620,7 @@ type PutResolverRulePolicyInput struct { // An AWS Identity and Access Management policy statement that lists the rules // that you want to share with another AWS account and the operations that you // want the account to be able to perform. You can specify the following operations - // in the Actions section of the statement: + // in the Action section of the statement: // // * route53resolver:GetResolverRule // @@ -7108,8 +7632,9 @@ type PutResolverRulePolicyInput struct { // // * route53resolver:ListResolverRuleAssociations // - // In the Resource section of the statement, you specify the ARNs for the rules - // that you want to share with the account that you specified in Arn. + // In the Resource section of the statement, specify the ARN for the rule that + // you want to share with another account. Specify the same ARN that you specified + // in Arn. // // ResolverRulePolicy is a required field ResolverRulePolicy *string `type:"string" required:"true"` @@ -7180,6 +7705,69 @@ func (s *PutResolverRulePolicyOutput) SetReturnValue(v bool) *PutResolverRulePol return s } +// A complex type that contains information about a configuration for DNSSEC +// validation. +type ResolverDnssecConfig struct { + _ struct{} `type:"structure"` + + // The ID for a configuration for DNSSEC validation. + Id *string `min:"1" type:"string"` + + // The owner account ID of the virtual private cloud (VPC) for a configuration + // for DNSSEC validation. + OwnerId *string `min:"12" type:"string"` + + // The ID of the virtual private cloud (VPC) that you're configuring the DNSSEC + // validation status for. + ResourceId *string `min:"1" type:"string"` + + // The validation status for a DNSSEC configuration. The status can be one of + // the following: + // + // * ENABLING: DNSSEC validation is being enabled but is not complete. + // + // * ENABLED: DNSSEC validation is enabled. + // + // * DISABLING: DNSSEC validation is being disabled but is not complete. + // + // * DISABLED DNSSEC validation is disabled. + ValidationStatus *string `type:"string" enum:"ResolverDNSSECValidationStatus"` +} + +// String returns the string representation +func (s ResolverDnssecConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResolverDnssecConfig) GoString() string { + return s.String() +} + +// SetId sets the Id field's value. +func (s *ResolverDnssecConfig) SetId(v string) *ResolverDnssecConfig { + s.Id = &v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *ResolverDnssecConfig) SetOwnerId(v string) *ResolverDnssecConfig { + s.OwnerId = &v + return s +} + +// SetResourceId sets the ResourceId field's value. +func (s *ResolverDnssecConfig) SetResourceId(v string) *ResolverDnssecConfig { + s.ResourceId = &v + return s +} + +// SetValidationStatus sets the ValidationStatus field's value. +func (s *ResolverDnssecConfig) SetValidationStatus(v string) *ResolverDnssecConfig { + s.ValidationStatus = &v + return s +} + // In the response to a CreateResolverEndpoint (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_CreateResolverEndpoint.html), // DeleteResolverEndpoint (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_DeleteResolverEndpoint.html), // GetResolverEndpoint (https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_GetResolverEndpoint.html), @@ -8552,6 +9140,87 @@ func (s UntagResourceOutput) GoString() string { return s.String() } +type UpdateResolverDnssecConfigInput struct { + _ struct{} `type:"structure"` + + // The ID of the virtual private cloud (VPC) that you're updating the DNSSEC + // validation status for. + // + // ResourceId is a required field + ResourceId *string `min:"1" type:"string" required:"true"` + + // The new value that you are specifying for DNSSEC validation for the VPC. + // The value can be ENABLE or DISABLE. Be aware that it can take time for a + // validation status change to be completed. + // + // Validation is a required field + Validation *string `type:"string" required:"true" enum:"Validation"` +} + +// String returns the string representation +func (s UpdateResolverDnssecConfigInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateResolverDnssecConfigInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateResolverDnssecConfigInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateResolverDnssecConfigInput"} + if s.ResourceId == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceId")) + } + if s.ResourceId != nil && len(*s.ResourceId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1)) + } + if s.Validation == nil { + invalidParams.Add(request.NewErrParamRequired("Validation")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceId sets the ResourceId field's value. +func (s *UpdateResolverDnssecConfigInput) SetResourceId(v string) *UpdateResolverDnssecConfigInput { + s.ResourceId = &v + return s +} + +// SetValidation sets the Validation field's value. +func (s *UpdateResolverDnssecConfigInput) SetValidation(v string) *UpdateResolverDnssecConfigInput { + s.Validation = &v + return s +} + +type UpdateResolverDnssecConfigOutput struct { + _ struct{} `type:"structure"` + + // A complex type that contains settings for the specified DNSSEC configuration. + ResolverDNSSECConfig *ResolverDnssecConfig `type:"structure"` +} + +// String returns the string representation +func (s UpdateResolverDnssecConfigOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateResolverDnssecConfigOutput) GoString() string { + return s.String() +} + +// SetResolverDNSSECConfig sets the ResolverDNSSECConfig field's value. +func (s *UpdateResolverDnssecConfigOutput) SetResolverDNSSECConfig(v *ResolverDnssecConfig) *UpdateResolverDnssecConfigOutput { + s.ResolverDNSSECConfig = v + return s +} + type UpdateResolverEndpointInput struct { _ struct{} `type:"structure"` @@ -8756,6 +9425,30 @@ func IpAddressStatus_Values() []string { } } +const ( + // ResolverDNSSECValidationStatusEnabling is a ResolverDNSSECValidationStatus enum value + ResolverDNSSECValidationStatusEnabling = "ENABLING" + + // ResolverDNSSECValidationStatusEnabled is a ResolverDNSSECValidationStatus enum value + ResolverDNSSECValidationStatusEnabled = "ENABLED" + + // ResolverDNSSECValidationStatusDisabling is a ResolverDNSSECValidationStatus enum value + ResolverDNSSECValidationStatusDisabling = "DISABLING" + + // ResolverDNSSECValidationStatusDisabled is a ResolverDNSSECValidationStatus enum value + ResolverDNSSECValidationStatusDisabled = "DISABLED" +) + +// ResolverDNSSECValidationStatus_Values returns all elements of the ResolverDNSSECValidationStatus enum +func ResolverDNSSECValidationStatus_Values() []string { + return []string{ + ResolverDNSSECValidationStatusEnabling, + ResolverDNSSECValidationStatusEnabled, + ResolverDNSSECValidationStatusDisabling, + ResolverDNSSECValidationStatusDisabled, + } +} + const ( // ResolverEndpointDirectionInbound is a ResolverEndpointDirection enum value ResolverEndpointDirectionInbound = "INBOUND" @@ -8987,3 +9680,19 @@ func SortOrder_Values() []string { SortOrderDescending, } } + +const ( + // ValidationEnable is a Validation enum value + ValidationEnable = "ENABLE" + + // ValidationDisable is a Validation enum value + ValidationDisable = "DISABLE" +) + +// Validation_Values returns all elements of the Validation enum +func Validation_Values() []string { + return []string{ + ValidationEnable, + ValidationDisable, + } +} diff --git a/service/route53resolver/route53resolveriface/interface.go b/service/route53resolver/route53resolveriface/interface.go index 0319f21233..7ef5832c63 100644 --- a/service/route53resolver/route53resolveriface/interface.go +++ b/service/route53resolver/route53resolveriface/interface.go @@ -108,6 +108,10 @@ type Route53ResolverAPI interface { DisassociateResolverRuleWithContext(aws.Context, *route53resolver.DisassociateResolverRuleInput, ...request.Option) (*route53resolver.DisassociateResolverRuleOutput, error) DisassociateResolverRuleRequest(*route53resolver.DisassociateResolverRuleInput) (*request.Request, *route53resolver.DisassociateResolverRuleOutput) + GetResolverDnssecConfig(*route53resolver.GetResolverDnssecConfigInput) (*route53resolver.GetResolverDnssecConfigOutput, error) + GetResolverDnssecConfigWithContext(aws.Context, *route53resolver.GetResolverDnssecConfigInput, ...request.Option) (*route53resolver.GetResolverDnssecConfigOutput, error) + GetResolverDnssecConfigRequest(*route53resolver.GetResolverDnssecConfigInput) (*request.Request, *route53resolver.GetResolverDnssecConfigOutput) + GetResolverEndpoint(*route53resolver.GetResolverEndpointInput) (*route53resolver.GetResolverEndpointOutput, error) GetResolverEndpointWithContext(aws.Context, *route53resolver.GetResolverEndpointInput, ...request.Option) (*route53resolver.GetResolverEndpointOutput, error) GetResolverEndpointRequest(*route53resolver.GetResolverEndpointInput) (*request.Request, *route53resolver.GetResolverEndpointOutput) @@ -136,6 +140,13 @@ type Route53ResolverAPI interface { GetResolverRulePolicyWithContext(aws.Context, *route53resolver.GetResolverRulePolicyInput, ...request.Option) (*route53resolver.GetResolverRulePolicyOutput, error) GetResolverRulePolicyRequest(*route53resolver.GetResolverRulePolicyInput) (*request.Request, *route53resolver.GetResolverRulePolicyOutput) + ListResolverDnssecConfigs(*route53resolver.ListResolverDnssecConfigsInput) (*route53resolver.ListResolverDnssecConfigsOutput, error) + ListResolverDnssecConfigsWithContext(aws.Context, *route53resolver.ListResolverDnssecConfigsInput, ...request.Option) (*route53resolver.ListResolverDnssecConfigsOutput, error) + ListResolverDnssecConfigsRequest(*route53resolver.ListResolverDnssecConfigsInput) (*request.Request, *route53resolver.ListResolverDnssecConfigsOutput) + + ListResolverDnssecConfigsPages(*route53resolver.ListResolverDnssecConfigsInput, func(*route53resolver.ListResolverDnssecConfigsOutput, bool) bool) error + ListResolverDnssecConfigsPagesWithContext(aws.Context, *route53resolver.ListResolverDnssecConfigsInput, func(*route53resolver.ListResolverDnssecConfigsOutput, bool) bool, ...request.Option) error + ListResolverEndpointIpAddresses(*route53resolver.ListResolverEndpointIpAddressesInput) (*route53resolver.ListResolverEndpointIpAddressesOutput, error) ListResolverEndpointIpAddressesWithContext(aws.Context, *route53resolver.ListResolverEndpointIpAddressesInput, ...request.Option) (*route53resolver.ListResolverEndpointIpAddressesOutput, error) ListResolverEndpointIpAddressesRequest(*route53resolver.ListResolverEndpointIpAddressesInput) (*request.Request, *route53resolver.ListResolverEndpointIpAddressesOutput) @@ -201,6 +212,10 @@ type Route53ResolverAPI interface { UntagResourceWithContext(aws.Context, *route53resolver.UntagResourceInput, ...request.Option) (*route53resolver.UntagResourceOutput, error) UntagResourceRequest(*route53resolver.UntagResourceInput) (*request.Request, *route53resolver.UntagResourceOutput) + UpdateResolverDnssecConfig(*route53resolver.UpdateResolverDnssecConfigInput) (*route53resolver.UpdateResolverDnssecConfigOutput, error) + UpdateResolverDnssecConfigWithContext(aws.Context, *route53resolver.UpdateResolverDnssecConfigInput, ...request.Option) (*route53resolver.UpdateResolverDnssecConfigOutput, error) + UpdateResolverDnssecConfigRequest(*route53resolver.UpdateResolverDnssecConfigInput) (*request.Request, *route53resolver.UpdateResolverDnssecConfigOutput) + UpdateResolverEndpoint(*route53resolver.UpdateResolverEndpointInput) (*route53resolver.UpdateResolverEndpointOutput, error) UpdateResolverEndpointWithContext(aws.Context, *route53resolver.UpdateResolverEndpointInput, ...request.Option) (*route53resolver.UpdateResolverEndpointOutput, error) UpdateResolverEndpointRequest(*route53resolver.UpdateResolverEndpointInput) (*request.Request, *route53resolver.UpdateResolverEndpointOutput) diff --git a/service/servicecatalog/api.go b/service/servicecatalog/api.go index 66e7cd362a..cd43790c11 100644 --- a/service/servicecatalog/api.go +++ b/service/servicecatalog/api.go @@ -1045,8 +1045,12 @@ func (c *ServiceCatalog) CreatePortfolioShareRequest(input *CreatePortfolioShare // AWSOrganizationsAccess must be enabled in order to create a portfolio share // to an organization node. // -// You can't share a shared resource. This includes portfolios that contain -// a shared product. +// You can't share a shared resource, including portfolios that contain a shared +// product. +// +// If the portfolio share with the specified account or organization node already +// exists, this action will have no effect and will not return an error. To +// update an existing share, you must use the UpdatePortfolioShare API instead. // // 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 @@ -1145,6 +1149,10 @@ func (c *ServiceCatalog) CreateProductRequest(input *CreateProductInput) (req *r // // A delegated admin is authorized to invoke this command. // +// The user or role that performs this operation must have the cloudformation:GetTemplate +// IAM policy permission. This policy permission is required when using the +// ImportFromPhysicalId template source in the information data section. +// // 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. @@ -1333,6 +1341,10 @@ func (c *ServiceCatalog) CreateProvisioningArtifactRequest(input *CreateProvisio // You cannot create a provisioning artifact for a product that was shared with // you. // +// The user or role that performs this operation must have the cloudformation:GetTemplate +// IAM policy permission. This policy permission is required when using the +// ImportFromPhysicalId template source in the information data section. +// // 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. @@ -2597,6 +2609,153 @@ func (c *ServiceCatalog) DescribePortfolioShareStatusWithContext(ctx aws.Context return out, req.Send() } +const opDescribePortfolioShares = "DescribePortfolioShares" + +// DescribePortfolioSharesRequest generates a "aws/request.Request" representing the +// client's request for the DescribePortfolioShares 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 DescribePortfolioShares for more information on using the DescribePortfolioShares +// 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 DescribePortfolioSharesRequest method. +// req, resp := client.DescribePortfolioSharesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/servicecatalog-2015-12-10/DescribePortfolioShares +func (c *ServiceCatalog) DescribePortfolioSharesRequest(input *DescribePortfolioSharesInput) (req *request.Request, output *DescribePortfolioSharesOutput) { + op := &request.Operation{ + Name: opDescribePortfolioShares, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"PageToken"}, + OutputTokens: []string{"NextPageToken"}, + LimitToken: "PageSize", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribePortfolioSharesInput{} + } + + output = &DescribePortfolioSharesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribePortfolioShares API operation for AWS Service Catalog. +// +// Returns a summary of each of the portfolio shares that were created for the +// specified portfolio. +// +// You can use this API to determine which accounts or organizational nodes +// this portfolio have been shared, whether the recipient entity has imported +// the share, and whether TagOptions are included with the share. +// +// The PortfolioId and Type parameters are both required. +// +// 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 AWS Service Catalog's +// API operation DescribePortfolioShares for usage and error information. +// +// Returned Error Types: +// * ResourceNotFoundException +// The specified resource was not found. +// +// * InvalidParametersException +// One or more parameters provided to the operation are not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/servicecatalog-2015-12-10/DescribePortfolioShares +func (c *ServiceCatalog) DescribePortfolioShares(input *DescribePortfolioSharesInput) (*DescribePortfolioSharesOutput, error) { + req, out := c.DescribePortfolioSharesRequest(input) + return out, req.Send() +} + +// DescribePortfolioSharesWithContext is the same as DescribePortfolioShares with the addition of +// the ability to pass a context and additional request options. +// +// See DescribePortfolioShares 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 *ServiceCatalog) DescribePortfolioSharesWithContext(ctx aws.Context, input *DescribePortfolioSharesInput, opts ...request.Option) (*DescribePortfolioSharesOutput, error) { + req, out := c.DescribePortfolioSharesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribePortfolioSharesPages iterates over the pages of a DescribePortfolioShares operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribePortfolioShares method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribePortfolioShares operation. +// pageNum := 0 +// err := client.DescribePortfolioSharesPages(params, +// func(page *servicecatalog.DescribePortfolioSharesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *ServiceCatalog) DescribePortfolioSharesPages(input *DescribePortfolioSharesInput, fn func(*DescribePortfolioSharesOutput, bool) bool) error { + return c.DescribePortfolioSharesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribePortfolioSharesPagesWithContext same as DescribePortfolioSharesPages except +// it takes a Context and allows setting request options on the pages. +// +// 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 *ServiceCatalog) DescribePortfolioSharesPagesWithContext(ctx aws.Context, input *DescribePortfolioSharesInput, fn func(*DescribePortfolioSharesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribePortfolioSharesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribePortfolioSharesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribePortfolioSharesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opDescribeProduct = "DescribeProduct" // DescribeProductRequest generates a "aws/request.Request" representing the @@ -4574,7 +4733,7 @@ func (c *ServiceCatalog) ImportAsProvisionedProductRequest(input *ImportAsProvis // // Requests the import of a resource as a Service Catalog provisioned product // that is associated to a Service Catalog product and provisioning artifact. -// Once imported all supported Service Catalog governance actions are supported +// Once imported, all supported Service Catalog governance actions are supported // on the provisioned product. // // Resource import only supports CloudFormation stack ARNs. CloudFormation StackSets @@ -4587,6 +4746,9 @@ func (c *ServiceCatalog) ImportAsProvisionedProductRequest(input *ImportAsProvis // Import of the resource requires that the CloudFormation stack template matches // the associated Service Catalog product provisioning artifact. // +// The user or role that performs this operation must have the cloudformation:GetTemplate +// and cloudformation:DescribeStacks IAM policy permissions. +// // 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. @@ -7866,6 +8028,111 @@ func (c *ServiceCatalog) UpdatePortfolioWithContext(ctx aws.Context, input *Upda return out, req.Send() } +const opUpdatePortfolioShare = "UpdatePortfolioShare" + +// UpdatePortfolioShareRequest generates a "aws/request.Request" representing the +// client's request for the UpdatePortfolioShare 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 UpdatePortfolioShare for more information on using the UpdatePortfolioShare +// 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 UpdatePortfolioShareRequest method. +// req, resp := client.UpdatePortfolioShareRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/servicecatalog-2015-12-10/UpdatePortfolioShare +func (c *ServiceCatalog) UpdatePortfolioShareRequest(input *UpdatePortfolioShareInput) (req *request.Request, output *UpdatePortfolioShareOutput) { + op := &request.Operation{ + Name: opUpdatePortfolioShare, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UpdatePortfolioShareInput{} + } + + output = &UpdatePortfolioShareOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdatePortfolioShare API operation for AWS Service Catalog. +// +// Updates the specified portfolio share. You can use this API to enable or +// disable TagOptions sharing for an existing portfolio share. +// +// The portfolio share cannot be updated if the CreatePortfolioShare operation +// is IN_PROGRESS, as the share is not available to recipient entities. In this +// case, you must wait for the portfolio share to be COMPLETED. +// +// You must provide the accountId or organization node in the input, but not +// both. +// +// If the portfolio is shared to both an external account and an organization +// node, and both shares need to be updated, you must invoke UpdatePortfolioShare +// separately for each share type. +// +// This API cannot be used for removing the portfolio share. You must use DeletePortfolioShare +// API for that action. +// +// 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 AWS Service Catalog's +// API operation UpdatePortfolioShare for usage and error information. +// +// Returned Error Types: +// * ResourceNotFoundException +// The specified resource was not found. +// +// * InvalidParametersException +// One or more parameters provided to the operation are not valid. +// +// * OperationNotSupportedException +// The operation is not supported. +// +// * InvalidStateException +// An attempt was made to modify a resource that is in a state that is not valid. +// Check your resources to ensure that they are in valid states before retrying +// the operation. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/servicecatalog-2015-12-10/UpdatePortfolioShare +func (c *ServiceCatalog) UpdatePortfolioShare(input *UpdatePortfolioShareInput) (*UpdatePortfolioShareOutput, error) { + req, out := c.UpdatePortfolioShareRequest(input) + return out, req.Send() +} + +// UpdatePortfolioShareWithContext is the same as UpdatePortfolioShare with the addition of +// the ability to pass a context and additional request options. +// +// See UpdatePortfolioShare 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 *ServiceCatalog) UpdatePortfolioShareWithContext(ctx aws.Context, input *UpdatePortfolioShareInput, opts ...request.Option) (*UpdatePortfolioShareOutput, error) { + req, out := c.UpdatePortfolioShareRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUpdateProduct = "UpdateProduct" // UpdateProductRequest generates a "aws/request.Request" representing the @@ -9856,6 +10123,10 @@ type CreatePortfolioShareInput struct { // // PortfolioId is a required field PortfolioId *string `min:"1" type:"string" required:"true"` + + // Enables or disables TagOptions sharing when creating the portfolio share. + // If this flag is not provided, TagOptions sharing is disabled. + ShareTagOptions *bool `type:"boolean"` } // String returns the string representation @@ -9908,6 +10179,12 @@ func (s *CreatePortfolioShareInput) SetPortfolioId(v string) *CreatePortfolioSha return s } +// SetShareTagOptions sets the ShareTagOptions field's value. +func (s *CreatePortfolioShareInput) SetShareTagOptions(v bool) *CreatePortfolioShareInput { + s.ShareTagOptions = &v + return s +} + type CreatePortfolioShareOutput struct { _ struct{} `type:"structure"` @@ -9970,7 +10247,7 @@ type CreateProductInput struct { // ProductType is a required field ProductType *string `type:"string" required:"true" enum:"ProductType"` - // The configuration of the provisioning artifact. The info field accepts ImportFromPhysicalID. + // The configuration of the provisioning artifact. // // ProvisioningArtifactParameters is a required field ProvisioningArtifactParameters *ProvisioningArtifactProperties `type:"structure" required:"true"` @@ -9982,6 +10259,8 @@ type CreateProductInput struct { SupportEmail *string `type:"string"` // The contact URL for product support. + // + // ^https?:\/\// / is the pattern used to validate SupportUrl. SupportUrl *string `type:"string"` // One or more tags. @@ -10427,7 +10706,7 @@ type CreateProvisioningArtifactInput struct { // repeated request. IdempotencyToken *string `min:"1" type:"string" idempotencyToken:"true"` - // The configuration for the provisioning artifact. The info field accepts ImportFromPhysicalID. + // The configuration for the provisioning artifact. // // Parameters is a required field Parameters *ProvisioningArtifactProperties `type:"structure" required:"true"` @@ -10502,7 +10781,19 @@ func (s *CreateProvisioningArtifactInput) SetProductId(v string) *CreateProvisio type CreateProvisioningArtifactOutput struct { _ struct{} `type:"structure"` + // Specify the template source with one of the following options, but not both. + // Keys accepted: [ LoadTemplateFromURL, ImportFromPhysicalId ]. + // // The URL of the CloudFormation template in Amazon S3, in JSON format. + // + // LoadTemplateFromURL + // + // Use the URL of the CloudFormation template in Amazon S3 in JSON format. + // + // ImportFromPhysicalId + // + // Use the physical id of the resource that contains the template; currently + // supports CloudFormation stack ARN. Info map[string]*string `min:"1" type:"map"` // Information about the provisioning artifact. @@ -11782,6 +12073,124 @@ func (s *DescribePortfolioShareStatusOutput) SetStatus(v string) *DescribePortfo return s } +type DescribePortfolioSharesInput struct { + _ struct{} `type:"structure"` + + // The maximum number of items to return with this call. + PageSize *int64 `type:"integer"` + + // The page token for the next set of results. To retrieve the first set of + // results, use null. + PageToken *string `type:"string"` + + // The unique identifier of the portfolio for which shares will be retrieved. + // + // PortfolioId is a required field + PortfolioId *string `min:"1" type:"string" required:"true"` + + // The type of portfolio share to summarize. This field acts as a filter on + // the type of portfolio share, which can be one of the following: + // + // 1. ACCOUNT - Represents an external account to account share. + // + // 2. ORGANIZATION - Represents a share to an organization. This share is available + // to every account in the organization. + // + // 3. ORGANIZATIONAL_UNIT - Represents a share to an organizational unit. + // + // 4. ORGANIZATION_MEMBER_ACCOUNT - Represents a share to an account in the + // organization. + // + // Type is a required field + Type *string `type:"string" required:"true" enum:"DescribePortfolioShareType"` +} + +// String returns the string representation +func (s DescribePortfolioSharesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePortfolioSharesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribePortfolioSharesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribePortfolioSharesInput"} + if s.PortfolioId == nil { + invalidParams.Add(request.NewErrParamRequired("PortfolioId")) + } + if s.PortfolioId != nil && len(*s.PortfolioId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("PortfolioId", 1)) + } + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPageSize sets the PageSize field's value. +func (s *DescribePortfolioSharesInput) SetPageSize(v int64) *DescribePortfolioSharesInput { + s.PageSize = &v + return s +} + +// SetPageToken sets the PageToken field's value. +func (s *DescribePortfolioSharesInput) SetPageToken(v string) *DescribePortfolioSharesInput { + s.PageToken = &v + return s +} + +// SetPortfolioId sets the PortfolioId field's value. +func (s *DescribePortfolioSharesInput) SetPortfolioId(v string) *DescribePortfolioSharesInput { + s.PortfolioId = &v + return s +} + +// SetType sets the Type field's value. +func (s *DescribePortfolioSharesInput) SetType(v string) *DescribePortfolioSharesInput { + s.Type = &v + return s +} + +type DescribePortfolioSharesOutput struct { + _ struct{} `type:"structure"` + + // The page token to use to retrieve the next set of results. If there are no + // additional results, this value is null. + NextPageToken *string `type:"string"` + + // Summaries about each of the portfolio shares. + PortfolioShareDetails []*PortfolioShareDetail `type:"list"` +} + +// String returns the string representation +func (s DescribePortfolioSharesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribePortfolioSharesOutput) GoString() string { + return s.String() +} + +// SetNextPageToken sets the NextPageToken field's value. +func (s *DescribePortfolioSharesOutput) SetNextPageToken(v string) *DescribePortfolioSharesOutput { + s.NextPageToken = &v + return s +} + +// SetPortfolioShareDetails sets the PortfolioShareDetails field's value. +func (s *DescribePortfolioSharesOutput) SetPortfolioShareDetails(v []*PortfolioShareDetail) *DescribePortfolioSharesOutput { + s.PortfolioShareDetails = v + return s +} + type DescribeProductAsAdminInput struct { _ struct{} `type:"structure"` @@ -11799,6 +12208,16 @@ type DescribeProductAsAdminInput struct { // The product name. Name *string `type:"string"` + + // The unique identifier of the shared portfolio that the specified product + // is associated with. + // + // You can provide this parameter to retrieve the shared TagOptions associated + // with the product. If this parameter is provided and if TagOptions sharing + // is enabled in the portfolio share, the API returns both local and shared + // TagOptions associated with the product. Otherwise only local TagOptions will + // be returned. + SourcePortfolioId *string `min:"1" type:"string"` } // String returns the string representation @@ -11817,6 +12236,9 @@ func (s *DescribeProductAsAdminInput) Validate() error { if s.Id != nil && len(*s.Id) < 1 { invalidParams.Add(request.NewErrParamMinLen("Id", 1)) } + if s.SourcePortfolioId != nil && len(*s.SourcePortfolioId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("SourcePortfolioId", 1)) + } if invalidParams.Len() > 0 { return invalidParams @@ -11842,6 +12264,12 @@ func (s *DescribeProductAsAdminInput) SetName(v string) *DescribeProductAsAdminI return s } +// SetSourcePortfolioId sets the SourcePortfolioId field's value. +func (s *DescribeProductAsAdminInput) SetSourcePortfolioId(v string) *DescribeProductAsAdminInput { + s.SourcePortfolioId = &v + return s +} + type DescribeProductAsAdminOutput struct { _ struct{} `type:"structure"` @@ -16592,6 +17020,69 @@ func (s *PortfolioDetail) SetProviderName(v string) *PortfolioDetail { return s } +// Information about the portfolio share. +type PortfolioShareDetail struct { + _ struct{} `type:"structure"` + + // Indicates whether the shared portfolio is imported by the recipient account. + // If the recipient is in an organization node, the share is automatically imported, + // and the field is always set to true. + Accepted *bool `type:"boolean"` + + // The identifier of the recipient entity that received the portfolio share. + // The recipient entities can be one of the following: + // + // 1. An external account. + // + // 2. An organziation member account. + // + // 3. An organzational unit (OU). + // + // 4. The organization itself. (This shares with every account in the organization). + PrincipalId *string `min:"1" type:"string"` + + // Indicates whether TagOptions sharing is enabled or disabled for the portfolio + // share. + ShareTagOptions *bool `type:"boolean"` + + // The type of the portfolio share. + Type *string `type:"string" enum:"DescribePortfolioShareType"` +} + +// String returns the string representation +func (s PortfolioShareDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PortfolioShareDetail) GoString() string { + return s.String() +} + +// SetAccepted sets the Accepted field's value. +func (s *PortfolioShareDetail) SetAccepted(v bool) *PortfolioShareDetail { + s.Accepted = &v + return s +} + +// SetPrincipalId sets the PrincipalId field's value. +func (s *PortfolioShareDetail) SetPrincipalId(v string) *PortfolioShareDetail { + s.PrincipalId = &v + return s +} + +// SetShareTagOptions sets the ShareTagOptions field's value. +func (s *PortfolioShareDetail) SetShareTagOptions(v bool) *PortfolioShareDetail { + s.ShareTagOptions = &v + return s +} + +// SetType sets the Type field's value. +func (s *PortfolioShareDetail) SetType(v string) *PortfolioShareDetail { + s.Type = &v + return s +} + // Information about a principal. type Principal struct { _ struct{} `type:"structure"` @@ -18008,11 +18499,18 @@ type ProvisioningArtifactProperties struct { // artifact even if it is invalid. DisableTemplateValidation *bool `type:"boolean"` + // Specify the template source with one of the following options, but not both. + // Keys accepted: [ LoadTemplateFromURL, ImportFromPhysicalId ] + // // The URL of the CloudFormation template in Amazon S3. Specify the URL in JSON // format as follows: // // "LoadTemplateFromURL": "https://s3.amazonaws.com/cf-templates-ozkq9d3hgiq2-us-east-1/..." // + // ImportFromPhysicalId: The physical id of the resource that contains the template. + // Currently only supports CloudFormation stack arn. Specify the physical id + // in JSON format as follows: ImportFromPhysicalId: “arn:aws:cloudformation:[us-east-1]:[accountId]:stack/[StackName]/[resourceId] + // // Info is a required field Info map[string]*string `min:"1" type:"map" required:"true"` @@ -18230,19 +18728,30 @@ func (s *ProvisioningParameter) SetValue(v string) *ProvisioningParameter { } // The user-defined preferences that will be applied when updating a provisioned -// product. Not all preferences are applicable to all provisioned product types. +// product. Not all preferences are applicable to all provisioned product type +// +// One or more AWS accounts that will have access to the provisioned product. +// +// Applicable only to a CFN_STACKSET provisioned product type. +// +// The AWS accounts specified should be within the list of accounts in the STACKSET +// constraint. To get the list of accounts in the STACKSET constraint, use the +// DescribeProvisioningParameters operation. +// +// If no values are specified, the default value is all accounts from the STACKSET +// constraint. type ProvisioningPreferences struct { _ struct{} `type:"structure"` - // One or more AWS accounts that will have access to the provisioned product. + // One or more AWS accounts where the provisioned product will be available. // // Applicable only to a CFN_STACKSET provisioned product type. // - // The AWS accounts specified should be within the list of accounts in the STACKSET + // The specified accounts should be within the list of accounts from the STACKSET // constraint. To get the list of accounts in the STACKSET constraint, use the // DescribeProvisioningParameters operation. // - // If no values are specified, the default value is all accounts from the STACKSET + // If no values are specified, the default value is all acounts from the STACKSET // constraint. StackSetAccounts []*string `type:"list"` @@ -19933,6 +20442,9 @@ type TagOptionDetail struct { // The TagOption key. Key *string `min:"1" type:"string"` + // The AWS account Id of the owner account that created the TagOption. + Owner *string `type:"string"` + // The TagOption value. Value *string `min:"1" type:"string"` } @@ -19965,6 +20477,12 @@ func (s *TagOptionDetail) SetKey(v string) *TagOptionDetail { return s } +// SetOwner sets the Owner field's value. +func (s *TagOptionDetail) SetOwner(v string) *TagOptionDetail { + s.Owner = &v + return s +} + // SetValue sets the Value field's value. func (s *TagOptionDetail) SetValue(v string) *TagOptionDetail { s.Value = &v @@ -20511,6 +21029,126 @@ func (s *UpdatePortfolioOutput) SetTags(v []*Tag) *UpdatePortfolioOutput { return s } +type UpdatePortfolioShareInput struct { + _ struct{} `type:"structure"` + + // The language code. + // + // * en - English (default) + // + // * jp - Japanese + // + // * zh - Chinese + AcceptLanguage *string `type:"string"` + + // The AWS Account Id of the recipient account. This field is required when + // updating an external account to account type share. + AccountId *string `type:"string"` + + // Information about the organization node. + OrganizationNode *OrganizationNode `type:"structure"` + + // The unique identifier of the portfolio for which the share will be updated. + // + // PortfolioId is a required field + PortfolioId *string `min:"1" type:"string" required:"true"` + + // A flag to enable or disable TagOptions sharing for the portfolio share. If + // this field is not provided, the current state of TagOptions sharing on the + // portfolio share will not be modified. + ShareTagOptions *bool `type:"boolean"` +} + +// String returns the string representation +func (s UpdatePortfolioShareInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdatePortfolioShareInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdatePortfolioShareInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdatePortfolioShareInput"} + if s.PortfolioId == nil { + invalidParams.Add(request.NewErrParamRequired("PortfolioId")) + } + if s.PortfolioId != nil && len(*s.PortfolioId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("PortfolioId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAcceptLanguage sets the AcceptLanguage field's value. +func (s *UpdatePortfolioShareInput) SetAcceptLanguage(v string) *UpdatePortfolioShareInput { + s.AcceptLanguage = &v + return s +} + +// SetAccountId sets the AccountId field's value. +func (s *UpdatePortfolioShareInput) SetAccountId(v string) *UpdatePortfolioShareInput { + s.AccountId = &v + return s +} + +// SetOrganizationNode sets the OrganizationNode field's value. +func (s *UpdatePortfolioShareInput) SetOrganizationNode(v *OrganizationNode) *UpdatePortfolioShareInput { + s.OrganizationNode = v + return s +} + +// SetPortfolioId sets the PortfolioId field's value. +func (s *UpdatePortfolioShareInput) SetPortfolioId(v string) *UpdatePortfolioShareInput { + s.PortfolioId = &v + return s +} + +// SetShareTagOptions sets the ShareTagOptions field's value. +func (s *UpdatePortfolioShareInput) SetShareTagOptions(v bool) *UpdatePortfolioShareInput { + s.ShareTagOptions = &v + return s +} + +type UpdatePortfolioShareOutput struct { + _ struct{} `type:"structure"` + + // The token that tracks the status of the UpdatePortfolioShare operation for + // external account to account or organizational type sharing. + PortfolioShareToken *string `min:"1" type:"string"` + + // The status of UpdatePortfolioShare operation. You can also obtain the operation + // status using DescribePortfolioShareStatus API. + Status *string `type:"string" enum:"ShareStatus"` +} + +// String returns the string representation +func (s UpdatePortfolioShareOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdatePortfolioShareOutput) GoString() string { + return s.String() +} + +// SetPortfolioShareToken sets the PortfolioShareToken field's value. +func (s *UpdatePortfolioShareOutput) SetPortfolioShareToken(v string) *UpdatePortfolioShareOutput { + s.PortfolioShareToken = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *UpdatePortfolioShareOutput) SetStatus(v string) *UpdatePortfolioShareOutput { + s.Status = &v + return s +} + type UpdateProductInput struct { _ struct{} `type:"structure"` @@ -21793,6 +22431,30 @@ func CopyProductStatus_Values() []string { } } +const ( + // DescribePortfolioShareTypeAccount is a DescribePortfolioShareType enum value + DescribePortfolioShareTypeAccount = "ACCOUNT" + + // DescribePortfolioShareTypeOrganization is a DescribePortfolioShareType enum value + DescribePortfolioShareTypeOrganization = "ORGANIZATION" + + // DescribePortfolioShareTypeOrganizationalUnit is a DescribePortfolioShareType enum value + DescribePortfolioShareTypeOrganizationalUnit = "ORGANIZATIONAL_UNIT" + + // DescribePortfolioShareTypeOrganizationMemberAccount is a DescribePortfolioShareType enum value + DescribePortfolioShareTypeOrganizationMemberAccount = "ORGANIZATION_MEMBER_ACCOUNT" +) + +// DescribePortfolioShareType_Values returns all elements of the DescribePortfolioShareType enum +func DescribePortfolioShareType_Values() []string { + return []string{ + DescribePortfolioShareTypeAccount, + DescribePortfolioShareTypeOrganization, + DescribePortfolioShareTypeOrganizationalUnit, + DescribePortfolioShareTypeOrganizationMemberAccount, + } +} + const ( // EvaluationTypeStatic is a EvaluationType enum value EvaluationTypeStatic = "STATIC" diff --git a/service/servicecatalog/servicecatalogiface/interface.go b/service/servicecatalog/servicecatalogiface/interface.go index c96a87f7e7..5d30f4a1ef 100644 --- a/service/servicecatalog/servicecatalogiface/interface.go +++ b/service/servicecatalog/servicecatalogiface/interface.go @@ -176,6 +176,13 @@ type ServiceCatalogAPI interface { DescribePortfolioShareStatusWithContext(aws.Context, *servicecatalog.DescribePortfolioShareStatusInput, ...request.Option) (*servicecatalog.DescribePortfolioShareStatusOutput, error) DescribePortfolioShareStatusRequest(*servicecatalog.DescribePortfolioShareStatusInput) (*request.Request, *servicecatalog.DescribePortfolioShareStatusOutput) + DescribePortfolioShares(*servicecatalog.DescribePortfolioSharesInput) (*servicecatalog.DescribePortfolioSharesOutput, error) + DescribePortfolioSharesWithContext(aws.Context, *servicecatalog.DescribePortfolioSharesInput, ...request.Option) (*servicecatalog.DescribePortfolioSharesOutput, error) + DescribePortfolioSharesRequest(*servicecatalog.DescribePortfolioSharesInput) (*request.Request, *servicecatalog.DescribePortfolioSharesOutput) + + DescribePortfolioSharesPages(*servicecatalog.DescribePortfolioSharesInput, func(*servicecatalog.DescribePortfolioSharesOutput, bool) bool) error + DescribePortfolioSharesPagesWithContext(aws.Context, *servicecatalog.DescribePortfolioSharesInput, func(*servicecatalog.DescribePortfolioSharesOutput, bool) bool, ...request.Option) error + DescribeProduct(*servicecatalog.DescribeProductInput) (*servicecatalog.DescribeProductOutput, error) DescribeProductWithContext(aws.Context, *servicecatalog.DescribeProductInput, ...request.Option) (*servicecatalog.DescribeProductOutput, error) DescribeProductRequest(*servicecatalog.DescribeProductInput) (*request.Request, *servicecatalog.DescribeProductOutput) @@ -430,6 +437,10 @@ type ServiceCatalogAPI interface { UpdatePortfolioWithContext(aws.Context, *servicecatalog.UpdatePortfolioInput, ...request.Option) (*servicecatalog.UpdatePortfolioOutput, error) UpdatePortfolioRequest(*servicecatalog.UpdatePortfolioInput) (*request.Request, *servicecatalog.UpdatePortfolioOutput) + UpdatePortfolioShare(*servicecatalog.UpdatePortfolioShareInput) (*servicecatalog.UpdatePortfolioShareOutput, error) + UpdatePortfolioShareWithContext(aws.Context, *servicecatalog.UpdatePortfolioShareInput, ...request.Option) (*servicecatalog.UpdatePortfolioShareOutput, error) + UpdatePortfolioShareRequest(*servicecatalog.UpdatePortfolioShareInput) (*request.Request, *servicecatalog.UpdatePortfolioShareOutput) + UpdateProduct(*servicecatalog.UpdateProductInput) (*servicecatalog.UpdateProductOutput, error) UpdateProductWithContext(aws.Context, *servicecatalog.UpdateProductInput, ...request.Option) (*servicecatalog.UpdateProductOutput, error) UpdateProductRequest(*servicecatalog.UpdateProductInput) (*request.Request, *servicecatalog.UpdateProductOutput) diff --git a/service/sqs/api.go b/service/sqs/api.go index 45285d0a17..e1885a8f2c 100644 --- a/service/sqs/api.go +++ b/service/sqs/api.go @@ -86,7 +86,7 @@ func (c *SQS) AddPermissionRequest(input *AddPermissionInput) (req *request.Requ // &AttributeName.2=second // // Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -449,7 +449,7 @@ func (c *SQS) CreateQueueRequest(input *CreateQueueInput) (req *request.Request, // &AttributeName.2=second // // Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -754,7 +754,7 @@ func (c *SQS) DeleteQueueRequest(input *DeleteQueueInput) (req *request.Request, // a queue with the same name. // // Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1152,7 +1152,7 @@ func (c *SQS) ListQueueTagsRequest(input *ListQueueTagsInput) (req *request.Requ // in the Amazon Simple Queue Service Developer Guide. // // Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1246,7 +1246,7 @@ func (c *SQS) ListQueuesRequest(input *ListQueuesInput) (req *request.Request, o // request to listQueues to receive the next page of results. // // Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1605,7 +1605,7 @@ func (c *SQS) RemovePermissionRequest(input *RemovePermissionInput) (req *reques // * Only the owner of a queue can remove permissions from it. // // * Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // * To remove the ability to change queue permissions, you must deny permission @@ -1909,7 +1909,7 @@ func (c *SQS) SetQueueAttributesRequest(input *SetQueueAttributesInput) (req *re // can handle new attributes gracefully. // // * Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // * To remove the ability to change queue permissions, you must deny permission @@ -2014,7 +2014,7 @@ func (c *SQS) TagQueueRequest(input *TagQueueInput) (req *request.Request, outpu // in the Amazon Simple Queue Service Developer Guide. // // Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2095,7 +2095,7 @@ func (c *SQS) UntagQueueRequest(input *UntagQueueInput) (req *request.Request, o // in the Amazon Simple Queue Service Developer Guide. // // Cross-account permissions don't apply to this action. For more information, -// see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) +// see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2655,22 +2655,22 @@ type CreateQueueInput struct { // // The following attributes apply only to FIFO (first-in-first-out) queues (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html): // - // * FifoQueue – Designates a queue as FIFO. Valid values: true, false. - // If you don't specify the FifoQueue attribute, Amazon SQS creates a standard - // queue. You can provide this attribute only during queue creation. You - // can't change it for an existing queue. When you set this attribute, you - // must also provide the MessageGroupId for your messages explicitly. For - // more information, see FIFO Queue Logic (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-understanding-logic) + // * FifoQueue – Designates a queue as FIFO. Valid values are true and + // false. If you don't specify the FifoQueue attribute, Amazon SQS creates + // a standard queue. You can provide this attribute only during queue creation. + // You can't change it for an existing queue. When you set this attribute, + // you must also provide the MessageGroupId for your messages explicitly. + // For more information, see FIFO Queue Logic (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-understanding-logic) // in the Amazon Simple Queue Service Developer Guide. // // * ContentBasedDeduplication – Enables content-based deduplication. Valid - // values: true, false. For more information, see Exactly-Once Processing + // values are true and false. For more information, see Exactly-Once Processing // (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-exactly-once-processing) - // in the Amazon Simple Queue Service Developer Guide. Every message must - // have a unique MessageDeduplicationId, You may provide a MessageDeduplicationId - // explicitly. If you aren't able to provide a MessageDeduplicationId and - // you enable ContentBasedDeduplication for your queue, Amazon SQS uses a - // SHA-256 hash to generate the MessageDeduplicationId using the body of + // in the Amazon Simple Queue Service Developer Guide. Note the following: + // Every message must have a unique MessageDeduplicationId. You may provide + // a MessageDeduplicationId explicitly. If you aren't able to provide a MessageDeduplicationId + // and you enable ContentBasedDeduplication for your queue, Amazon SQS uses + // a SHA-256 hash to generate the MessageDeduplicationId using the body of // the message (but not the attributes of the message). If you don't provide // a MessageDeduplicationId and the queue doesn't have ContentBasedDeduplication // set, the action fails with an error. If the queue has ContentBasedDeduplication @@ -2681,6 +2681,49 @@ type CreateQueueInput struct { // and then another message with a MessageDeduplicationId that is the same // as the one generated for the first MessageDeduplicationId, the two messages // are treated as duplicates and only one copy of the message is delivered. + // + // Preview: High throughput for FIFO queues + // + // High throughput for Amazon SQS FIFO queues is in preview release and is subject + // to change. This feature provides a high number of transactions per second + // (TPS) for messages in FIFO queues. For information on throughput quotas, + // see Quotas related to messages (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) + // in the Amazon Simple Queue Service Developer Guide. + // + // This preview includes two new attributes: + // + // * DeduplicationScope – Specifies whether message deduplication occurs + // at the message group or queue level. Valid values are messageGroup and + // queue. + // + // * FifoThroughputLimit – Specifies whether the FIFO queue throughput + // quota applies to the entire queue or per message group. Valid values are + // perQueue and perMessageGroupId. The perMessageGroupId value is allowed + // only when the value for DeduplicationScope is messageGroup. + // + // To enable high throughput for FIFO queues, do the following: + // + // * Set DeduplicationScope to messageGroup. + // + // * Set FifoThroughputLimit to perMessageGroupId. + // + // If you set these attributes to anything other than the values shown for enabling + // high throughput, standard throughput is in effect and deduplication occurs + // as specified. + // + // This preview is available in the following AWS Regions: + // + // * US East (Ohio); us-east-2 + // + // * US East (N. Virginia); us-east-1 + // + // * US West (Oregon); us-west-2 + // + // * Europe (Ireland); eu-west-1 + // + // For more information about high throughput for FIFO queues, see Preview: + // High throughput for FIFO queues (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) + // in the Amazon Simple Queue Service Developer Guide. Attributes map[string]*string `locationName:"Attribute" locationNameKey:"Name" locationNameValue:"Value" type:"map" flattened:"true"` // The name of the new queue. The following limits apply to this name: @@ -2720,7 +2763,7 @@ type CreateQueueInput struct { // and sqs:TagQueue permissions. // // Cross-account permissions don't apply to this action. For more information, - // see Grant Cross-Account Permissions to a Role and a User Name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) + // see Grant cross-account permissions to a role and a user name (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name) // in the Amazon Simple Queue Service Developer Guide. Tags map[string]*string `locationName:"Tag" locationNameKey:"Key" locationNameValue:"Value" type:"map" flattened:"true"` } @@ -3182,8 +3225,8 @@ type GetQueueAttributesInput struct { // // The following attributes apply only to FIFO (first-in-first-out) queues (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html): // - // * FifoQueue – Returns whether the queue is FIFO. For more information, - // see FIFO Queue Logic (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-understanding-logic) + // * FifoQueue – Returns information about whether the queue is FIFO. For + // more information, see FIFO Queue Logic (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-understanding-logic) // in the Amazon Simple Queue Service Developer Guide. To determine whether // a queue is FIFO (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html), // you can check whether QueueName ends with the .fifo suffix. @@ -3192,6 +3235,49 @@ type GetQueueAttributesInput struct { // is enabled for the queue. For more information, see Exactly-Once Processing // (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-exactly-once-processing) // in the Amazon Simple Queue Service Developer Guide. + // + // Preview: High throughput for FIFO queues + // + // High throughput for Amazon SQS FIFO queues is in preview release and is subject + // to change. This feature provides a high number of transactions per second + // (TPS) for messages in FIFO queues. For information on throughput quotas, + // see Quotas related to messages (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) + // in the Amazon Simple Queue Service Developer Guide. + // + // This preview includes two new attributes: + // + // * DeduplicationScope – Specifies whether message deduplication occurs + // at the message group or queue level. Valid values are messageGroup and + // queue. + // + // * FifoThroughputLimit – Specifies whether the FIFO queue throughput + // quota applies to the entire queue or per message group. Valid values are + // perQueue and perMessageGroupId. The perMessageGroupId value is allowed + // only when the value for DeduplicationScope is messageGroup. + // + // To enable high throughput for FIFO queues, do the following: + // + // * Set DeduplicationScope to messageGroup. + // + // * Set FifoThroughputLimit to perMessageGroupId. + // + // If you set these attributes to anything other than the values shown for enabling + // high throughput, standard throughput is in effect and deduplication occurs + // as specified. + // + // This preview is available in the following AWS Regions: + // + // * US East (Ohio); us-east-2 + // + // * US East (N. Virginia); us-east-1 + // + // * US West (Oregon); us-west-2 + // + // * Europe (Ireland); eu-west-1 + // + // For more information about high throughput for FIFO queues, see Preview: + // High throughput for FIFO queues (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) + // in the Amazon Simple Queue Service Developer Guide. AttributeNames []*string `locationNameList:"AttributeName" type:"list" flattened:"true"` // The URL of the Amazon SQS queue whose attribute information is retrieved. @@ -4962,11 +5048,11 @@ type SetQueueAttributesInput struct { // // * ContentBasedDeduplication – Enables content-based deduplication. For // more information, see Exactly-Once Processing (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-exactly-once-processing) - // in the Amazon Simple Queue Service Developer Guide. Every message must - // have a unique MessageDeduplicationId, You may provide a MessageDeduplicationId - // explicitly. If you aren't able to provide a MessageDeduplicationId and - // you enable ContentBasedDeduplication for your queue, Amazon SQS uses a - // SHA-256 hash to generate the MessageDeduplicationId using the body of + // in the Amazon Simple Queue Service Developer Guide. Note the following: + // Every message must have a unique MessageDeduplicationId. You may provide + // a MessageDeduplicationId explicitly. If you aren't able to provide a MessageDeduplicationId + // and you enable ContentBasedDeduplication for your queue, Amazon SQS uses + // a SHA-256 hash to generate the MessageDeduplicationId using the body of // the message (but not the attributes of the message). If you don't provide // a MessageDeduplicationId and the queue doesn't have ContentBasedDeduplication // set, the action fails with an error. If the queue has ContentBasedDeduplication @@ -4978,6 +5064,49 @@ type SetQueueAttributesInput struct { // as the one generated for the first MessageDeduplicationId, the two messages // are treated as duplicates and only one copy of the message is delivered. // + // Preview: High throughput for FIFO queues + // + // High throughput for Amazon SQS FIFO queues is in preview release and is subject + // to change. This feature provides a high number of transactions per second + // (TPS) for messages in FIFO queues. For information on throughput quotas, + // see Quotas related to messages (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) + // in the Amazon Simple Queue Service Developer Guide. + // + // This preview includes two new attributes: + // + // * DeduplicationScope – Specifies whether message deduplication occurs + // at the message group or queue level. Valid values are messageGroup and + // queue. + // + // * FifoThroughputLimit – Specifies whether the FIFO queue throughput + // quota applies to the entire queue or per message group. Valid values are + // perQueue and perMessageGroupId. The perMessageGroupId value is allowed + // only when the value for DeduplicationScope is messageGroup. + // + // To enable high throughput for FIFO queues, do the following: + // + // * Set DeduplicationScope to messageGroup. + // + // * Set FifoThroughputLimit to perMessageGroupId. + // + // If you set these attributes to anything other than the values shown for enabling + // high throughput, standard throughput is in effect and deduplication occurs + // as specified. + // + // This preview is available in the following AWS Regions: + // + // * US East (Ohio); us-east-2 + // + // * US East (N. Virginia); us-east-1 + // + // * US West (Oregon); us-west-2 + // + // * Europe (Ireland); eu-west-1 + // + // For more information about high throughput for FIFO queues, see Preview: + // High throughput for FIFO queues (https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) + // in the Amazon Simple Queue Service Developer Guide. + // // Attributes is a required field Attributes map[string]*string `locationName:"Attribute" locationNameKey:"Name" locationNameValue:"Value" type:"map" flattened:"true" required:"true"` @@ -5279,6 +5408,12 @@ const ( // QueueAttributeNameKmsDataKeyReusePeriodSeconds is a QueueAttributeName enum value QueueAttributeNameKmsDataKeyReusePeriodSeconds = "KmsDataKeyReusePeriodSeconds" + + // QueueAttributeNameDeduplicationScope is a QueueAttributeName enum value + QueueAttributeNameDeduplicationScope = "DeduplicationScope" + + // QueueAttributeNameFifoThroughputLimit is a QueueAttributeName enum value + QueueAttributeNameFifoThroughputLimit = "FifoThroughputLimit" ) // QueueAttributeName_Values returns all elements of the QueueAttributeName enum @@ -5302,5 +5437,7 @@ func QueueAttributeName_Values() []string { QueueAttributeNameContentBasedDeduplication, QueueAttributeNameKmsMasterKeyId, QueueAttributeNameKmsDataKeyReusePeriodSeconds, + QueueAttributeNameDeduplicationScope, + QueueAttributeNameFifoThroughputLimit, } }