diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d9fa32a15b..8b2c71890ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +Release v1.44.305 (2023-07-20) +=== + +### Service Client Updates +* `service/connectcases`: Updates service API and documentation +* `service/models.lex.v2`: Updates service API and documentation +* `service/route53resolver`: Updates service API, documentation, and paginators +* `service/s3`: Updates service examples + * Improve performance of S3 clients by simplifying and optimizing endpoint resolution. +* `service/sagemaker`: Updates service API, documentation, and paginators + * Cross account support for SageMaker Feature Store +* `service/sagemaker-featurestore-runtime`: Updates service API and documentation +* `service/securitylake`: Updates service API and documentation +* `service/transcribe`: Updates service API and documentation + Release v1.44.304 (2023-07-20) === diff --git a/aws/version.go b/aws/version.go index 6e7f262b2ec..93a8e5a089d 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.44.304" +const SDKVersion = "1.44.305" diff --git a/models/apis/connectcases/2022-10-03/api-2.json b/models/apis/connectcases/2022-10-03/api-2.json index 3ae2fd936ac..c81ee3cf981 100644 --- a/models/apis/connectcases/2022-10-03/api-2.json +++ b/models/apis/connectcases/2022-10-03/api-2.json @@ -688,7 +688,8 @@ "members":{ "andAll":{"shape":"CaseFilterAndAllList"}, "field":{"shape":"FieldFilter"}, - "not":{"shape":"CaseFilter"} + "not":{"shape":"CaseFilter"}, + "orAll":{"shape":"CaseFilterOrAllList"} }, "union":true }, @@ -698,6 +699,12 @@ "max":10, "min":0 }, + "CaseFilterOrAllList":{ + "type":"list", + "member":{"shape":"CaseFilter"}, + "max":10, + "min":0 + }, "CaseId":{ "type":"string", "max":500, @@ -1047,6 +1054,11 @@ "type":"double", "box":true }, + "EmptyFieldValue":{ + "type":"structure", + "members":{ + } + }, "EventBridgeConfiguration":{ "type":"structure", "required":["enabled"], @@ -1233,6 +1245,7 @@ "members":{ "booleanValue":{"shape":"Boolean"}, "doubleValue":{"shape":"Double"}, + "emptyValue":{"shape":"EmptyFieldValue"}, "stringValue":{"shape":"FieldValueUnionStringValueString"} }, "union":true diff --git a/models/apis/connectcases/2022-10-03/docs-2.json b/models/apis/connectcases/2022-10-03/docs-2.json index 361cf329227..a8f3a8e30b1 100644 --- a/models/apis/connectcases/2022-10-03/docs-2.json +++ b/models/apis/connectcases/2022-10-03/docs-2.json @@ -5,12 +5,12 @@ "BatchGetField": "

Returns the description for the list of fields in the request parameters.

", "BatchPutFieldOptions": "

Creates and updates a set of field options for a single select field in a Cases domain.

", "CreateCase": "

Creates a case in the specified Cases domain. Case system and custom fields are taken as an array id/value pairs with a declared data types.

The following fields are required when creating a case:

 <ul> <li> <p> <code>customer_id</code> - You must provide the full customer profile ARN in this format: <code>arn:aws:profile:your AWS Region:your AWS account ID:domains/profiles domain name/profiles/profile ID</code> </p> </li> <li> <p> <code>title</code> </p> </li> </ul> </note> 
", - "CreateDomain": "

Creates a domain, which is a container for all case data, such as cases, fields, templates and layouts. Each Amazon Connect instance can be associated with only one Cases domain.

This will not associate your connect instance to Cases domain. Instead, use the Amazon Connect CreateIntegrationAssociation API. You need specific IAM permissions to successfully associate the Cases domain. For more information, see Onboard to Cases.

", + "CreateDomain": "

Creates a domain, which is a container for all case data, such as cases, fields, templates and layouts. Each Amazon Connect instance can be associated with only one Cases domain.

This will not associate your connect instance to Cases domain. Instead, use the Amazon Connect CreateIntegrationAssociation API. You need specific IAM permissions to successfully associate the Cases domain. For more information, see Onboard to Cases.

 </important> 
", "CreateField": "

Creates a field in the Cases domain. This field is used to define the case object model (that is, defines what data can be captured on cases) in a Cases domain.

", "CreateLayout": "

Creates a layout in the Cases domain. Layouts define the following configuration in the top section and More Info tab of the Cases user interface:

Title and Status fields cannot be part of layouts since they are not configurable.

", "CreateRelatedItem": "

Creates a related item (comments, tasks, and contacts) and associates it with a case.

A Related Item is a resource that is associated with a case. It may or may not have an external identifier linking it to an external resource (for example, a contactArn). All Related Items have their own internal identifier, the relatedItemArn. Examples of related items include comments and contacts.

", "CreateTemplate": "

Creates a template in the Cases domain. This template is used to define the case object model (that is, to define what data can be captured on cases) in a Cases domain. A template must have a unique name within a domain, and it must reference existing field IDs and layout IDs. Additionally, multiple fields with same IDs are not allowed within the same Template. A template can be either Active or Inactive, as indicated by its status. Inactive templates cannot be used to create cases.

", - "DeleteDomain": "

Deletes a domain.

", + "DeleteDomain": "

Deletes a Cases domain.

 <note> <p>After deleting your domain you must disassociate the deleted domain from your Amazon Connect instance with another API call before being able to use Cases again with this Amazon Connect instance. See <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_DeleteIntegrationAssociation.html">DeleteIntegrationAssociation</a>.</p> </note> 
", "GetCase": "

Returns information about a specific case if it exists.

", "GetCaseEventConfiguration": "

Returns the case event publishing configuration.

", "GetDomain": "

Returns information about a specific domain if it exists.

", @@ -141,6 +141,7 @@ "refs": { "CaseFilter$not": null, "CaseFilterAndAllList$member": null, + "CaseFilterOrAllList$member": null, "SearchCasesRequest$filter": "

A list of filter objects.

" } }, @@ -150,6 +151,12 @@ "CaseFilter$andAll": "

Provides \"and all\" filtering.

" } }, + "CaseFilterOrAllList": { + "base": null, + "refs": { + "CaseFilter$orAll": "

Provides \"or all\" filtering.

" + } + }, "CaseId": { "base": null, "refs": { @@ -406,6 +413,12 @@ "FieldValueUnion$doubleValue": "

Can be either null, or have a Double number value type. Only one value can be provided.

" } }, + "EmptyFieldValue": { + "base": "

An empty value. You cannot set EmptyFieldValue on a field that is required on a case template.

This structure will never have any data members. It signifies an empty value on a case field.

", + "refs": { + "FieldValueUnion$emptyValue": "

An empty value.

" + } + }, "EventBridgeConfiguration": { "base": "

Configuration to enable EventBridge case event delivery and determine what data is delivered.

", "refs": { diff --git a/models/apis/models.lex.v2/2020-08-07/api-2.json b/models/apis/models.lex.v2/2020-08-07/api-2.json index b073c87ad04..54aa6a9bd24 100644 --- a/models/apis/models.lex.v2/2020-08-07/api-2.json +++ b/models/apis/models.lex.v2/2020-08-07/api-2.json @@ -1753,6 +1753,11 @@ "min":1 }, "AnalyticsBinValue":{"type":"long"}, + "AnalyticsChannel":{ + "type":"string", + "max":50, + "min":1 + }, "AnalyticsCommonFilterName":{ "type":"string", "enum":[ @@ -2663,14 +2668,6 @@ "localeId":{"shape":"LocaleId"} } }, - "BotChannelType":{ - "type":"string", - "enum":[ - "Facebook", - "Slack", - "TwilioSms" - ] - }, "BotExportSpecification":{ "type":"structure", "required":[ @@ -6998,7 +6995,7 @@ "botAliasId":{"shape":"BotAliasId"}, "botVersion":{"shape":"NumericalBotVersion"}, "localeId":{"shape":"LocaleId"}, - "channel":{"shape":"BotChannelType"}, + "channel":{"shape":"AnalyticsChannel"}, "sessionId":{"shape":"AnalyticsSessionId"}, "conversationStartTime":{"shape":"Timestamp"}, "conversationEndTime":{"shape":"Timestamp"}, @@ -8724,7 +8721,7 @@ "botVersion":{"shape":"NumericalBotVersion"}, "localeId":{"shape":"LocaleId"}, "sessionId":{"shape":"AnalyticsSessionId"}, - "channel":{"shape":"BotChannelType"}, + "channel":{"shape":"AnalyticsChannel"}, "mode":{"shape":"AnalyticsModality"}, "conversationStartTime":{"shape":"Timestamp"}, "conversationEndTime":{"shape":"Timestamp"}, diff --git a/models/apis/models.lex.v2/2020-08-07/docs-2.json b/models/apis/models.lex.v2/2020-08-07/docs-2.json index feb0b2e89a0..ece9ae292e4 100644 --- a/models/apis/models.lex.v2/2020-08-07/docs-2.json +++ b/models/apis/models.lex.v2/2020-08-07/docs-2.json @@ -62,7 +62,7 @@ "ListImports": "

Lists the imports for a bot, bot locale, or custom vocabulary. Imports are kept in the list for 7 days.

", "ListIntentMetrics": "

Retrieves summary metrics for the intents in your bot. The following fields are required:

Of the optional fields, you can organize the results in the following ways:

Note that an order field exists in both binBy and metrics. You can specify only one order in a given request.

", "ListIntentPaths": "

Retrieves summary statistics for a path of intents that users take over sessions with your bot. The following fields are required:

Use the optional filters field to filter the results.

", - "ListIntentStageMetrics": "

Retrieves summary metrics for the intent stages in your bot. The following fields are required:

Of the optional fields, you can organize the results in the following ways:

Note that an order field exists in both binBy and metrics. You can only specify one order in a given request.

", + "ListIntentStageMetrics": "

Retrieves summary metrics for the stages within intents in your bot. The following fields are required:

Of the optional fields, you can organize the results in the following ways:

Note that an order field exists in both binBy and metrics. You can only specify one order in a given request.

", "ListIntents": "

Get a list of intents that meet the specified criteria.

", "ListRecommendedIntents": "

Gets a list of recommended intents provided by the bot recommendation that you can use in your bot. Intents in the response are ordered by relevance.

", "ListSessionAnalyticsData": "

Retrieves a list of metadata for individual user sessions with your bot. The startDateTime and endDateTime fields are required. These fields define a time range for which you want to retrieve results. Of the optional fields, you can organize the results in the following ways:

", @@ -74,8 +74,8 @@ "ListTestExecutions": "

The list of test set executions.

", "ListTestSetRecords": "

The list of test set records.

", "ListTestSets": "

The list of the test sets

", - "ListUtteranceAnalyticsData": "

Retrieves a list of metadata for individual user utterances to your bot. The startDateTime and endDateTime fields are required. These fields define a time range for which you want to retrieve results. Of the optional fields, you can organize the results in the following ways:

", - "ListUtteranceMetrics": "

Retrieves summary metrics for the utterances in your bot. The following fields are required:

Of the optional fields, you can organize the results in the following ways:

Note that an order field exists in both binBy and metrics. Currently, you can specify it in either field, but not in both.

", + "ListUtteranceAnalyticsData": "

To use this API operation, your IAM role must have permissions to perform the ListAggregatedUtterances operation, which provides access to utterance-related analytics. See Viewing utterance statistics for the IAM policy to apply to the IAM role.

Retrieves a list of metadata for individual user utterances to your bot. The following fields are required:

Of the optional fields, you can organize the results in the following ways:

", + "ListUtteranceMetrics": "

To use this API operation, your IAM role must have permissions to perform the ListAggregatedUtterances operation, which provides access to utterance-related analytics. See Viewing utterance statistics for the IAM policy to apply to the IAM role.

Retrieves summary metrics for the utterances in your bot. The following fields are required:

Of the optional fields, you can organize the results in the following ways:

Note that an order field exists in both binBy and metrics. Currently, you can specify it in either field, but not in both.

", "SearchAssociatedTranscripts": "

Search for associated transcripts that meet the specified criteria.

", "StartBotRecommendation": "

Use this to provide your transcript data, and to start the bot recommendation process.

", "StartImport": "

Starts importing a bot, bot locale, or custom vocabulary from a zip archive that you uploaded to an S3 bucket.

", @@ -250,6 +250,13 @@ "AnalyticsBinKey$value": "

The value of the criterion that defines the bin.

" } }, + "AnalyticsChannel": { + "base": null, + "refs": { + "SessionSpecification$channel": "

The channel that is integrated with the bot that the session was held with.

", + "UtteranceSpecification$channel": "

The channel that is integrated with the bot that the utterance was made to.

" + } + }, "AnalyticsCommonFilterName": { "base": null, "refs": { @@ -781,7 +788,7 @@ "base": null, "refs": { "AnalyticsUtteranceMetric$name": "

The metric for which you want to get utterance summary statistics.

", - "AnalyticsUtteranceMetricResult$name": "

The metric that you requested.

" + "AnalyticsUtteranceMetricResult$name": "

The metric that you requested.

" } }, "AnalyticsUtteranceMetricResult": { @@ -817,7 +824,7 @@ "AnalyticsUtteranceSortByName": { "base": null, "refs": { - "UtteranceDataSortBy$name": "

The measure by which to sort the utterance analytics data.

" + "UtteranceDataSortBy$name": "

The measure by which to sort the utterance analytics data.

" } }, "AssociatedTranscript": { @@ -1034,13 +1041,6 @@ "TestExecutionTarget$botAliasTarget": "

Contains information about the bot alias used for the test execution.

" } }, - "BotChannelType": { - "base": null, - "refs": { - "SessionSpecification$channel": "

The channel that is integrated with the bot that the session was held with.

", - "UtteranceSpecification$channel": "

The channel that is integrated with the bot that the utterance was made to.

" - } - }, "BotExportSpecification": { "base": "

Provides the identity of a the bot that was exported.

", "refs": { diff --git a/models/apis/route53resolver/2018-04-01/api-2.json b/models/apis/route53resolver/2018-04-01/api-2.json index 2fc27585e05..880b958cbd4 100644 --- a/models/apis/route53resolver/2018-04-01/api-2.json +++ b/models/apis/route53resolver/2018-04-01/api-2.json @@ -136,6 +136,23 @@ {"shape":"ThrottlingException"} ] }, + "CreateOutpostResolver":{ + "name":"CreateOutpostResolver", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"CreateOutpostResolverRequest"}, + "output":{"shape":"CreateOutpostResolverResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceQuotaExceededException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, "CreateResolverEndpoint":{ "name":"CreateResolverEndpoint", "http":{ @@ -240,6 +257,23 @@ {"shape":"ThrottlingException"} ] }, + "DeleteOutpostResolver":{ + "name":"DeleteOutpostResolver", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DeleteOutpostResolverRequest"}, + "output":{"shape":"DeleteOutpostResolverResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, "DeleteResolverEndpoint":{ "name":"DeleteResolverEndpoint", "http":{ @@ -432,6 +466,22 @@ {"shape":"ThrottlingException"} ] }, + "GetOutpostResolver":{ + "name":"GetOutpostResolver", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"GetOutpostResolverRequest"}, + "output":{"shape":"GetOutpostResolverResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, "GetResolverConfig":{ "name":"GetResolverConfig", "http":{ @@ -686,6 +736,22 @@ {"shape":"ThrottlingException"} ] }, + "ListOutpostResolvers":{ + "name":"ListOutpostResolvers", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListOutpostResolversRequest"}, + "output":{"shape":"ListOutpostResolversResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, "ListResolverConfigs":{ "name":"ListResolverConfigs", "http":{ @@ -987,6 +1053,24 @@ {"shape":"ThrottlingException"} ] }, + "UpdateOutpostResolver":{ + "name":"UpdateOutpostResolver", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"UpdateOutpostResolverRequest"}, + "output":{"shape":"UpdateOutpostResolverResponse"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"ConflictException"}, + {"shape":"InternalServiceErrorException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"ServiceQuotaExceededException"}, + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"} + ] + }, "UpdateResolverConfig":{ "name":"UpdateResolverConfig", "http":{ @@ -1302,6 +1386,35 @@ "FirewallRule":{"shape":"FirewallRule"} } }, + "CreateOutpostResolverRequest":{ + "type":"structure", + "required":[ + "CreatorRequestId", + "Name", + "PreferredInstanceType", + "OutpostArn" + ], + "members":{ + "CreatorRequestId":{"shape":"CreatorRequestId"}, + "Name":{"shape":"OutpostResolverName"}, + "InstanceCount":{ + "shape":"InstanceCount", + "box":true + }, + "PreferredInstanceType":{"shape":"OutpostInstanceType"}, + "OutpostArn":{"shape":"OutpostArn"}, + "Tags":{ + "shape":"TagList", + "box":true + } + } + }, + "CreateOutpostResolverResponse":{ + "type":"structure", + "members":{ + "OutpostResolver":{"shape":"OutpostResolver"} + } + }, "CreateResolverEndpointRequest":{ "type":"structure", "required":[ @@ -1326,6 +1439,14 @@ "ResolverEndpointType":{ "shape":"ResolverEndpointType", "box":true + }, + "OutpostArn":{ + "shape":"OutpostArn", + "box":true + }, + "PreferredInstanceType":{ + "shape":"OutpostInstanceType", + "box":true } } }, @@ -1441,6 +1562,19 @@ "FirewallRule":{"shape":"FirewallRule"} } }, + "DeleteOutpostResolverRequest":{ + "type":"structure", + "required":["Id"], + "members":{ + "Id":{"shape":"ResourceId"} + } + }, + "DeleteOutpostResolverResponse":{ + "type":"structure", + "members":{ + "OutpostResolver":{"shape":"OutpostResolver"} + } + }, "DeleteResolverEndpointRequest":{ "type":"structure", "required":["ResolverEndpointId"], @@ -1825,6 +1959,19 @@ "FirewallRuleGroup":{"shape":"FirewallRuleGroup"} } }, + "GetOutpostResolverRequest":{ + "type":"structure", + "required":["Id"], + "members":{ + "Id":{"shape":"ResourceId"} + } + }, + "GetOutpostResolverResponse":{ + "type":"structure", + "members":{ + "OutpostResolver":{"shape":"OutpostResolver"} + } + }, "GetResolverConfigRequest":{ "type":"structure", "required":["ResourceId"], @@ -1964,6 +2111,7 @@ "StatusMessage":{"shape":"StatusMessage"} } }, + "InstanceCount":{"type":"integer"}, "InternalServiceErrorException":{ "type":"structure", "members":{ @@ -2055,7 +2203,8 @@ "FAILED_RESOURCE_GONE", "DELETING", "DELETE_FAILED_FAS_EXPIRED", - "UPDATING" + "UPDATING", + "UPDATE_FAILED" ] }, "IpAddressUpdate":{ @@ -2260,6 +2409,30 @@ "FirewallRules":{"shape":"FirewallRules"} } }, + "ListOutpostResolversRequest":{ + "type":"structure", + "members":{ + "OutpostArn":{ + "shape":"OutpostArn", + "box":true + }, + "MaxResults":{ + "shape":"MaxResults", + "box":true + }, + "NextToken":{ + "shape":"NextToken", + "box":true + } + } + }, + "ListOutpostResolversResponse":{ + "type":"structure", + "members":{ + "OutpostResolvers":{"shape":"OutpostResolverList"}, + "NextToken":{"shape":"NextToken"} + } + }, "ListResolverConfigsMaxResult":{ "type":"integer", "max":100, @@ -2494,6 +2667,58 @@ "pattern":"(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)" }, "NextToken":{"type":"string"}, + "OutpostArn":{ + "type":"string", + "max":255, + "min":1, + "pattern":"^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$" + }, + "OutpostInstanceType":{ + "type":"string", + "max":255, + "min":1 + }, + "OutpostResolver":{ + "type":"structure", + "members":{ + "Arn":{"shape":"Arn"}, + "CreationTime":{"shape":"Rfc3339TimeString"}, + "ModificationTime":{"shape":"Rfc3339TimeString"}, + "CreatorRequestId":{"shape":"CreatorRequestId"}, + "Id":{"shape":"ResourceId"}, + "InstanceCount":{"shape":"InstanceCount"}, + "PreferredInstanceType":{"shape":"OutpostInstanceType"}, + "Name":{"shape":"OutpostResolverName"}, + "Status":{"shape":"OutpostResolverStatus"}, + "StatusMessage":{"shape":"OutpostResolverStatusMessage"}, + "OutpostArn":{"shape":"OutpostArn"} + } + }, + "OutpostResolverList":{ + "type":"list", + "member":{"shape":"OutpostResolver"} + }, + "OutpostResolverName":{ + "type":"string", + "max":255, + "min":1 + }, + "OutpostResolverStatus":{ + "type":"string", + "enum":[ + "CREATING", + "OPERATIONAL", + "UPDATING", + "DELETING", + "ACTION_NEEDED", + "FAILED_CREATION", + "FAILED_DELETION" + ] + }, + "OutpostResolverStatusMessage":{ + "type":"string", + "max":4096 + }, "Port":{ "type":"integer", "max":65535, @@ -2614,7 +2839,9 @@ "StatusMessage":{"shape":"StatusMessage"}, "CreationTime":{"shape":"Rfc3339TimeString"}, "ModificationTime":{"shape":"Rfc3339TimeString"}, - "ResolverEndpointType":{"shape":"ResolverEndpointType"} + "ResolverEndpointType":{"shape":"ResolverEndpointType"}, + "OutpostArn":{"shape":"OutpostArn"}, + "PreferredInstanceType":{"shape":"OutpostInstanceType"} } }, "ResolverEndpointDirection":{ @@ -2849,6 +3076,13 @@ "max":512, "min":1 }, + "ServiceQuotaExceededException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"} + }, + "exception":true + }, "ShareStatus":{ "type":"string", "enum":[ @@ -3105,6 +3339,31 @@ "max":50, "min":0 }, + "UpdateOutpostResolverRequest":{ + "type":"structure", + "required":["Id"], + "members":{ + "Id":{"shape":"ResourceId"}, + "Name":{ + "shape":"OutpostResolverName", + "box":true + }, + "InstanceCount":{ + "shape":"InstanceCount", + "box":true + }, + "PreferredInstanceType":{ + "shape":"OutpostInstanceType", + "box":true + } + } + }, + "UpdateOutpostResolverResponse":{ + "type":"structure", + "members":{ + "OutpostResolver":{"shape":"OutpostResolver"} + } + }, "UpdateResolverConfigRequest":{ "type":"structure", "required":[ diff --git a/models/apis/route53resolver/2018-04-01/docs-2.json b/models/apis/route53resolver/2018-04-01/docs-2.json index bc90bb38ecc..f0f058bfc37 100644 --- a/models/apis/route53resolver/2018-04-01/docs-2.json +++ b/models/apis/route53resolver/2018-04-01/docs-2.json @@ -9,12 +9,14 @@ "CreateFirewallDomainList": "

Creates an empty firewall domain list for use in DNS Firewall rules. You can populate the domains for the new list with a file, using ImportFirewallDomains, or with domain strings, using UpdateFirewallDomains.

", "CreateFirewallRule": "

Creates a single DNS Firewall rule in the specified rule group, using the specified domain list.

", "CreateFirewallRuleGroup": "

Creates an empty DNS Firewall rule group for filtering DNS network traffic in a VPC. You can add rules to the new rule group by calling CreateFirewallRule.

", + "CreateOutpostResolver": "

Creates an Route 53 Resolver on an Outpost.

", "CreateResolverEndpoint": "

Creates a Resolver endpoint. There are two types of Resolver endpoints, inbound and outbound:

", "CreateResolverQueryLogConfig": "

Creates a Resolver query logging configuration, which defines where you want Resolver to save DNS query logs that originate in your VPCs. Resolver can log queries only for VPCs that are in the same Region as the query logging configuration.

To specify which VPCs you want to log queries for, you use AssociateResolverQueryLogConfig. For more information, see AssociateResolverQueryLogConfig.

You can optionally use Resource Access Manager (RAM) to share a query logging configuration with other Amazon Web Services accounts. The other accounts can then associate VPCs with the configuration. The query logs that Resolver creates for a configuration include all DNS queries that originate in all VPCs that are associated with the configuration.

", "CreateResolverRule": "

For DNS queries that originate in your VPCs, specifies which Resolver endpoint the queries pass through, one domain name that you want to forward to your network, and the IP addresses of the DNS resolvers in your network.

", "DeleteFirewallDomainList": "

Deletes the specified domain list.

", "DeleteFirewallRule": "

Deletes the specified firewall rule.

", "DeleteFirewallRuleGroup": "

Deletes the specified firewall rule group.

", + "DeleteOutpostResolver": "

Deletes a Resolver on the Outpost.

", "DeleteResolverEndpoint": "

Deletes a Resolver endpoint. The effect of deleting a Resolver endpoint depends on whether it's an inbound or an outbound Resolver endpoint:

", "DeleteResolverQueryLogConfig": "

Deletes a query logging configuration. When you delete a configuration, Resolver stops logging DNS queries for all of the Amazon VPCs that are associated with the configuration. This also applies if the query logging configuration is shared with other Amazon Web Services accounts, and the other accounts have associated VPCs with the shared configuration.

Before you can delete a query logging configuration, you must first disassociate all VPCs from the configuration. See DisassociateResolverQueryLogConfig.

If you used Resource Access Manager (RAM) to share a query logging configuration with other accounts, you must stop sharing the configuration before you can delete a configuration. The accounts that you shared the configuration with can first disassociate VPCs that they associated with the configuration, but that's not necessary. If you stop sharing the configuration, those VPCs are automatically disassociated from the configuration.

", "DeleteResolverRule": "

Deletes a Resolver rule. Before you can delete a Resolver rule, you must disassociate it from all the VPCs that you associated the Resolver rule with. For more information, see DisassociateResolverRule.

", @@ -27,6 +29,7 @@ "GetFirewallRuleGroup": "

Retrieves the specified firewall rule group.

", "GetFirewallRuleGroupAssociation": "

Retrieves a firewall rule group association, which enables DNS filtering for a VPC with one rule group. A VPC can have more than one firewall rule group association, and a rule group can be associated with more than one VPC.

", "GetFirewallRuleGroupPolicy": "

Returns the Identity and Access Management (Amazon Web Services IAM) policy for sharing the specified rule group. You can use the policy to share the rule group using Resource Access Manager (RAM).

", + "GetOutpostResolver": "

Gets information about a specified Resolver on the Outpost, such as its instance count and type, name, and the current status of the Resolver.

", "GetResolverConfig": "

Retrieves the behavior configuration of Route 53 Resolver behavior for a single VPC from Amazon Virtual Private Cloud.

", "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.

", @@ -43,6 +46,7 @@ "ListFirewallRuleGroupAssociations": "

Retrieves the firewall rule group associations that you have defined. Each association enables DNS filtering for a VPC with one rule group.

A single call might return only a partial list of the associations. For information, see MaxResults.

", "ListFirewallRuleGroups": "

Retrieves the minimal high-level information for the rule groups that you have defined.

A single call might return only a partial list of the rule groups. For information, see MaxResults.

", "ListFirewallRules": "

Retrieves the firewall rules that you have defined for the specified firewall rule group. DNS Firewall uses the rules in a rule group to filter DNS network traffic for a VPC.

A single call might return only a partial list of the rules. For information, see MaxResults.

", + "ListOutpostResolvers": "

Lists all the Resolvers on Outposts that were created using the current Amazon Web Services account.

", "ListResolverConfigs": "

Retrieves the Resolver configurations that you have defined. Route 53 Resolver uses the configurations to manage DNS resolution behavior for your VPCs.

", "ListResolverDnssecConfigs": "

Lists the configurations for DNSSEC validation that are associated with the current Amazon Web Services account.

", "ListResolverEndpointIpAddresses": "

Gets the IP addresses for a specified Resolver endpoint.

", @@ -61,6 +65,7 @@ "UpdateFirewallDomains": "

Updates the firewall domain list from an array of domain specifications.

", "UpdateFirewallRule": "

Updates the specified firewall rule.

", "UpdateFirewallRuleGroupAssociation": "

Changes the association of a FirewallRuleGroup with a VPC. The association enables DNS filtering for the VPC.

", + "UpdateOutpostResolver": "

You can use UpdateOutpostResolver to update the instance count, type, or name of a Resolver on an Outpost.

", "UpdateResolverConfig": "

Updates the behavior configuration of Route 53 Resolver behavior for a single VPC from Amazon Virtual Private Cloud.

", "UpdateResolverDnssecConfig": "

Updates an existing DNSSEC validation configuration. If there is no existing DNSSEC validation configuration, one is created.

", "UpdateResolverEndpoint": "

Updates the name, or enpoint type for an inbound or an outbound Resolver endpoint. You can only update between IPV4 and DUALSTACK, IPV6 endpoint type can't be updated to other type.

", @@ -105,6 +110,7 @@ "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 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.

", + "OutpostResolver$Arn": "

The ARN (Amazon Resource Name) for the Resolver on an Outpost.

", "PutFirewallRuleGroupPolicyRequest$Arn": "

The ARN (Amazon Resource Name) for the rule group that you want to share.

", "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 rule that you want to share with another account.

", @@ -245,6 +251,16 @@ "refs": { } }, + "CreateOutpostResolverRequest": { + "base": null, + "refs": { + } + }, + "CreateOutpostResolverResponse": { + "base": null, + "refs": { + } + }, "CreateResolverEndpointRequest": { "base": null, "refs": { @@ -282,6 +298,7 @@ "CreateFirewallDomainListRequest$CreatorRequestId": "

A unique string that identifies the request and that allows you to retry failed requests without the risk of running the operation twice. CreatorRequestId can be any unique string, for example, a date/time stamp.

", "CreateFirewallRuleGroupRequest$CreatorRequestId": "

A unique string defined by you to identify the request. This allows you to retry failed requests without the risk of running the operation twice. This can be any unique string, for example, a timestamp.

", "CreateFirewallRuleRequest$CreatorRequestId": "

A unique string that identifies the request and that allows you to retry failed requests without the risk of running the operation twice. CreatorRequestId can be any unique string, for example, a date/time stamp.

", + "CreateOutpostResolverRequest$CreatorRequestId": "

A unique string that identifies the request and that allows failed requests to be retried without the risk of running the operation twice.

CreatorRequestId can be any unique string, for example, a date/time stamp.

", "CreateResolverEndpointRequest$CreatorRequestId": "

A unique string that identifies the request and that allows failed requests to be retried without the risk of running the operation twice. CreatorRequestId can be any unique string, for example, a date/time stamp.

", "CreateResolverQueryLogConfigRequest$CreatorRequestId": "

A unique string that identifies the request and that allows failed requests to be retried without the risk of running the operation twice. CreatorRequestId can be any unique string, for example, a date/time stamp.

", "CreateResolverRuleRequest$CreatorRequestId": "

A unique string that identifies the request and that allows failed requests to be retried without the risk of running the operation twice. CreatorRequestId can be any unique string, for example, a date/time stamp.

", @@ -291,6 +308,7 @@ "FirewallRuleGroup$CreatorRequestId": "

A unique string defined by you to identify the request. This allows you to retry failed requests without the risk of running the operation twice. This can be any unique string, for example, a timestamp.

", "FirewallRuleGroupAssociation$CreatorRequestId": "

A unique string defined by you to identify the request. This allows you to retry failed requests without the risk of running the operation twice. This can be any unique string, for example, a timestamp.

", "FirewallRuleGroupMetadata$CreatorRequestId": "

A unique string defined by you to identify the request. This allows you to retry failed requests without the risk of running the operation twice. This can be any unique string, for example, a timestamp.

", + "OutpostResolver$CreatorRequestId": "

A unique string that identifies the request that created the Resolver endpoint. The CreatorRequestId allows failed requests to be retried without the risk of running the operation twice.

", "ResolverEndpoint$CreatorRequestId": "

A unique string that identifies the request that created the Resolver endpoint. The CreatorRequestId allows failed requests to be retried without the risk of running the operation twice.

", "ResolverQueryLogConfig$CreatorRequestId": "

A unique string that identifies the request that created the query logging configuration. The CreatorRequestId allows failed requests to be retried without the risk of running the operation twice.

", "ResolverRule$CreatorRequestId": "

A unique string that you specified when you created the Resolver rule. CreatorRequestId identifies the request and allows failed requests to be retried without the risk of running the operation twice.

" @@ -326,6 +344,16 @@ "refs": { } }, + "DeleteOutpostResolverRequest": { + "base": null, + "refs": { + } + }, + "DeleteOutpostResolverResponse": { + "base": null, + "refs": { + } + }, "DeleteResolverEndpointRequest": { "base": null, "refs": { @@ -426,6 +454,7 @@ "InvalidPolicyDocument$Message": null, "InvalidRequestException$Message": null, "InvalidTagException$Message": null, + "ServiceQuotaExceededException$Message": null, "ThrottlingException$Message": null, "UnknownResourceException$Message": null, "ValidationException$Message": null @@ -661,6 +690,16 @@ "refs": { } }, + "GetOutpostResolverRequest": { + "base": null, + "refs": { + } + }, + "GetOutpostResolverResponse": { + "base": null, + "refs": { + } + }, "GetResolverConfigRequest": { "base": null, "refs": { @@ -761,6 +800,14 @@ "refs": { } }, + "InstanceCount": { + "base": null, + "refs": { + "CreateOutpostResolverRequest$InstanceCount": "

Number of Amazon EC2 instances for the Resolver on Outpost. The default and minimal value is 4.

", + "OutpostResolver$InstanceCount": "

Amazon EC2 instance count for the Resolver on the Outpost.

", + "UpdateOutpostResolverRequest$InstanceCount": "

The Amazon EC2 instance count for a Resolver on the Outpost.

" + } + }, "InternalServiceErrorException": { "base": "

We encountered an unknown error. Try again in a few minutes.

", "refs": { @@ -930,6 +977,16 @@ "refs": { } }, + "ListOutpostResolversRequest": { + "base": null, + "refs": { + } + }, + "ListOutpostResolversResponse": { + "base": null, + "refs": { + } + }, "ListResolverConfigsMaxResult": { "base": null, "refs": { @@ -1033,6 +1090,7 @@ "ListFirewallRuleGroupAssociationsRequest$MaxResults": "

The maximum number of objects that you want Resolver to return for this request. If more objects are available, in the response, Resolver provides a NextToken value that you can use in a subsequent call to get the next batch of objects.

If you don't specify a value for MaxResults, Resolver returns up to 100 objects.

", "ListFirewallRuleGroupsRequest$MaxResults": "

The maximum number of objects that you want Resolver to return for this request. If more objects are available, in the response, Resolver provides a NextToken value that you can use in a subsequent call to get the next batch of objects.

If you don't specify a value for MaxResults, Resolver returns up to 100 objects.

", "ListFirewallRulesRequest$MaxResults": "

The maximum number of objects that you want Resolver to return for this request. If more objects are available, in the response, Resolver provides a NextToken value that you can use in a subsequent call to get the next batch of objects.

If you don't specify a value for MaxResults, Resolver returns up to 100 objects.

", + "ListOutpostResolversRequest$MaxResults": "

The maximum number of Resolvers on the Outpost that you want to return in the response to a ListOutpostResolver request. If you don't specify a value for MaxResults, the request returns up to 100 Resolvers.

", "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.

", @@ -1097,6 +1155,8 @@ "ListFirewallRuleGroupsResponse$NextToken": "

If objects are still available for retrieval, Resolver returns this token in the response. To retrieve the next batch of objects, provide this token in your next request.

", "ListFirewallRulesRequest$NextToken": "

For the first call to this list request, omit this value.

When you request a list of objects, Resolver returns at most the number of objects specified in MaxResults. If more objects are available for retrieval, Resolver returns a NextToken value in the response. To retrieve the next batch of objects, use the token that was returned for the prior request in your next request.

", "ListFirewallRulesResponse$NextToken": "

If objects are still available for retrieval, Resolver returns this token in the response. To retrieve the next batch of objects, provide this token in your next request.

", + "ListOutpostResolversRequest$NextToken": "

For the first ListOutpostResolver request, omit this value.

", + "ListOutpostResolversResponse$NextToken": "

If more than MaxResults Resolvers match the specified criteria, you can submit another ListOutpostResolver request to get the next group of results. In the next request, specify the value of NextToken from the previous response.

", "ListResolverConfigsRequest$NextToken": "

(Optional) If the current Amazon Web Services account has more than MaxResults Resolver configurations, use NextToken to get the second and subsequent pages of results.

For the first ListResolverConfigs 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.

", "ListResolverConfigsResponse$NextToken": "

If a response includes the last of the Resolver configurations that are associated with the current Amazon Web Services 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 ListResolverConfigs request. Get the value of NextToken that Amazon Route 53 returned in the previous response and include it in NextToken in the next request.

", "ListResolverDnssecConfigsRequest$NextToken": "

(Optional) If the current Amazon Web Services 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.

", @@ -1117,6 +1177,62 @@ "ListTagsForResourceResponse$NextToken": "

If more than MaxResults tags match the specified criteria, you can submit another ListTagsForResource request to get the next group of results. In the next request, specify the value of NextToken from the previous response.

" } }, + "OutpostArn": { + "base": null, + "refs": { + "CreateOutpostResolverRequest$OutpostArn": "

The Amazon Resource Name (ARN) of the Outpost. If you specify this, you must also specify a value for the PreferredInstanceType.

", + "CreateResolverEndpointRequest$OutpostArn": "

The Amazon Resource Name (ARN) of the Outpost. If you specify this, you must also specify a value for the PreferredInstanceType.

", + "ListOutpostResolversRequest$OutpostArn": "

The Amazon Resource Name (ARN) of the Outpost.

", + "OutpostResolver$OutpostArn": "

The ARN (Amazon Resource Name) for the Outpost.

", + "ResolverEndpoint$OutpostArn": "

The ARN (Amazon Resource Name) for the Outpost.

" + } + }, + "OutpostInstanceType": { + "base": null, + "refs": { + "CreateOutpostResolverRequest$PreferredInstanceType": "

The Amazon EC2 instance type. If you specify this, you must also specify a value for the OutpostArn.

", + "CreateResolverEndpointRequest$PreferredInstanceType": "

The instance type. If you specify this, you must also specify a value for the OutpostArn.

", + "OutpostResolver$PreferredInstanceType": "

The Amazon EC2 instance type.

", + "ResolverEndpoint$PreferredInstanceType": "

The Amazon EC2 instance type.

", + "UpdateOutpostResolverRequest$PreferredInstanceType": "

Amazon EC2 instance type.

" + } + }, + "OutpostResolver": { + "base": "

A complex type that contains settings for an existing Resolver on an Outpost.

", + "refs": { + "CreateOutpostResolverResponse$OutpostResolver": "

Information about the CreateOutpostResolver request, including the status of the request.

", + "DeleteOutpostResolverResponse$OutpostResolver": "

Information about the DeleteOutpostResolver request, including the status of the request.

", + "GetOutpostResolverResponse$OutpostResolver": "

Information about the GetOutpostResolver request, including the status of the request.

", + "OutpostResolverList$member": null, + "UpdateOutpostResolverResponse$OutpostResolver": "

The response to an UpdateOutpostResolver request.

" + } + }, + "OutpostResolverList": { + "base": null, + "refs": { + "ListOutpostResolversResponse$OutpostResolvers": "

The Resolvers on Outposts that were created by using the current Amazon Web Services account, and that match the specified filters, if any.

" + } + }, + "OutpostResolverName": { + "base": null, + "refs": { + "CreateOutpostResolverRequest$Name": "

A friendly name that lets you easily find a configuration in the Resolver dashboard in the Route 53 console.

", + "OutpostResolver$Name": "

Name of the Resolver.

", + "UpdateOutpostResolverRequest$Name": "

Name of the Resolver on the Outpost.

" + } + }, + "OutpostResolverStatus": { + "base": null, + "refs": { + "OutpostResolver$Status": "

Status of the Resolver.

" + } + }, + "OutpostResolverStatusMessage": { + "base": null, + "refs": { + "OutpostResolver$StatusMessage": "

A detailed description of the Resolver.

" + } + }, "Port": { "base": null, "refs": { @@ -1234,9 +1350,9 @@ "ResolverEndpointType": { "base": null, "refs": { - "CreateResolverEndpointRequest$ResolverEndpointType": "

For the endpoint type you can choose either IPv4, IPv6. or dual-stack. A dual-stack endpoint means that it will resolve via both IPv4 and IPv6. This endpoint type is applied to all IP addresses.

", + "CreateResolverEndpointRequest$ResolverEndpointType": "

For the endpoint type you can choose either IPv4, IPv6, or dual-stack. A dual-stack endpoint means that it will resolve via both IPv4 and IPv6. This endpoint type is applied to all IP addresses.

", "ResolverEndpoint$ResolverEndpointType": "

The Resolver endpoint IP address type.

", - "UpdateResolverEndpointRequest$ResolverEndpointType": "

Specifies the endpoint type for what type of IP address the endpoint uses to forward DNS queries.

" + "UpdateResolverEndpointRequest$ResolverEndpointType": "

Specifies the endpoint type for what type of IP address the endpoint uses to forward DNS queries.

Updating to IPV6 type isn't currently supported.

" } }, "ResolverEndpoints": { @@ -1304,7 +1420,7 @@ "base": null, "refs": { "GetResolverQueryLogConfigPolicyResponse$ResolverQueryLogConfigPolicy": "

Information about the query logging policy for the query logging configuration that you specified in a GetResolverQueryLogConfigPolicy request.

", - "PutResolverQueryLogConfigPolicyRequest$ResolverQueryLogConfigPolicy": "

An Identity and Access Management policy statement that lists the query logging configurations that you want to share with another Amazon Web Services 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 query logging configurations that you want to share with the account that you specified in Arn.

" + "PutResolverQueryLogConfigPolicyRequest$ResolverQueryLogConfigPolicy": "

An Identity and Access Management policy statement that lists the query logging configurations that you want to share with another Amazon Web Services 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 query logging configurations that you want to share with the account that you specified in Arn.

" } }, "ResolverQueryLogConfigStatus": { @@ -1391,6 +1507,7 @@ "DeleteFirewallRuleGroupRequest$FirewallRuleGroupId": "

The unique identifier of the firewall rule group that you want to delete.

", "DeleteFirewallRuleRequest$FirewallRuleGroupId": "

The unique identifier of the firewall rule group that you want to delete the rule from.

", "DeleteFirewallRuleRequest$FirewallDomainListId": "

The ID of the domain list that's used in the rule.

", + "DeleteOutpostResolverRequest$Id": "

A unique string that identifies the Resolver on the Outpost.

", "DeleteResolverEndpointRequest$ResolverEndpointId": "

The ID of the Resolver endpoint that you want to delete.

", "DeleteResolverQueryLogConfigRequest$ResolverQueryLogConfigId": "

The ID of the query logging configuration that you want to delete.

", "DeleteResolverRuleRequest$ResolverRuleId": "

The ID of the Resolver rule that you want to delete.

", @@ -1415,6 +1532,7 @@ "GetFirewallDomainListRequest$FirewallDomainListId": "

The ID of the domain list.

", "GetFirewallRuleGroupAssociationRequest$FirewallRuleGroupAssociationId": "

The identifier of the FirewallRuleGroupAssociation.

", "GetFirewallRuleGroupRequest$FirewallRuleGroupId": "

The unique identifier of the firewall rule group.

", + "GetOutpostResolverRequest$Id": "

The ID of the Resolver on the Outpost.

", "GetResolverConfigRequest$ResourceId": "

Resource ID of the Amazon VPC that you want to get information about.

", "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.

", @@ -1431,6 +1549,7 @@ "ListFirewallRuleGroupAssociationsRequest$VpcId": "

The unique identifier of the VPC that you want to retrieve the associations for. Leave this blank to retrieve associations for any VPC.

", "ListFirewallRulesRequest$FirewallRuleGroupId": "

The unique identifier of the firewall rule group that you want to retrieve the rules for.

", "ListResolverEndpointIpAddressesRequest$ResolverEndpointId": "

The ID of the Resolver endpoint that you want to get IP addresses for.

", + "OutpostResolver$Id": "

The ID of the Resolver on Outpost.

", "ResolverConfig$Id": "

ID for the Resolver configuration.

", "ResolverConfig$ResourceId": "

The ID of the Amazon Virtual Private Cloud VPC that you're configuring Resolver for.

", "ResolverDnssecConfig$Id": "

The ID for a configuration for DNSSEC validation.

", @@ -1455,6 +1574,7 @@ "UpdateFirewallRuleRequest$FirewallRuleGroupId": "

The unique identifier of the firewall rule group for the rule.

", "UpdateFirewallRuleRequest$FirewallDomainListId": "

The ID of the domain list to use in the rule.

", "UpdateIpAddress$IpId": "

The ID of the IP address, specified by the ResolverEndpointId.

", + "UpdateOutpostResolverRequest$Id": "

A unique string that identifies Resolver on an Outpost.

", "UpdateResolverConfigRequest$ResourceId": "

Resource ID of the Amazon VPC that you want to update the Resolver configuration for.

", "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.

", @@ -1489,6 +1609,8 @@ "FirewallRuleGroupAssociation$ModificationTime": "

The date and time that the association was last modified, in Unix time format and Coordinated Universal Time (UTC).

", "IpAddressResponse$CreationTime": "

The date and time that the IP address was created, in Unix time format and Coordinated Universal Time (UTC).

", "IpAddressResponse$ModificationTime": "

The date and time that the IP address was last modified, in Unix time format and Coordinated Universal Time (UTC).

", + "OutpostResolver$CreationTime": "

The date and time that the Outpost Resolver was created, in Unix time format and Coordinated Universal Time (UTC).

", + "OutpostResolver$ModificationTime": "

The date and time that the Outpost Resolver was modified, in Unix time format and Coordinated Universal Time (UTC).

", "ResolverEndpoint$CreationTime": "

The date and time that the endpoint was created, in Unix time format and Coordinated Universal Time (UTC).

", "ResolverEndpoint$ModificationTime": "

The date and time that the endpoint was last modified, in Unix time format and Coordinated Universal Time (UTC).

", "ResolverQueryLogConfig$CreationTime": "

The date and time that the query logging configuration was created, in Unix time format and Coordinated Universal Time (UTC).

", @@ -1519,6 +1641,11 @@ "FirewallRuleGroupAssociation$ManagedOwnerName": "

The owner of the association, used only for associations that are not managed by you. If you use Firewall Manager to manage your DNS Firewalls, then this reports Firewall Manager as the managed owner.

" } }, + "ServiceQuotaExceededException": { + "base": "

Fulfilling the request would cause one or more quotas to be exceeded.

", + "refs": { + } + }, "ShareStatus": { "base": null, "refs": { @@ -1606,6 +1733,7 @@ "AssociateFirewallRuleGroupRequest$Tags": "

A list of the tag keys and values that you want to associate with the rule group association.

", "CreateFirewallDomainListRequest$Tags": "

A list of the tag keys and values that you want to associate with the domain list.

", "CreateFirewallRuleGroupRequest$Tags": "

A list of the tag keys and values that you want to associate with the rule group.

", + "CreateOutpostResolverRequest$Tags": "

A string that helps identify the Route 53 Resolvers on Outpost.

", "CreateResolverEndpointRequest$Tags": "

A list of the tag keys and values that you want to associate with the endpoint.

", "CreateResolverQueryLogConfigRequest$Tags": "

A list of the tag keys and values that you want to associate with the query logging configuration.

", "CreateResolverRuleRequest$Tags": "

A list of the tag keys and values that you want to associate with the endpoint.

", @@ -1638,8 +1766,8 @@ "TargetList": { "base": null, "refs": { - "CreateResolverRuleRequest$TargetIps": "

The IPs that you want Resolver to forward DNS queries to. You can specify only IPv4 addresses. Separate IP addresses with a space.

TargetIps is available only when the value of Rule type is FORWARD.

", - "ResolverRule$TargetIps": "

An array that contains the IP addresses and ports that an outbound endpoint forwards DNS queries to. Typically, these are the IP addresses of DNS resolvers on your network. Specify IPv4 addresses. IPv6 is not supported.

", + "CreateResolverRuleRequest$TargetIps": "

The IPs that you want Resolver to forward DNS queries to. You can specify either Ipv4 or Ipv6 addresses but not both in the same rule. Separate IP addresses with a space.

TargetIps is available only when the value of Rule type is FORWARD.

", + "ResolverRule$TargetIps": "

An array that contains the IP addresses and ports that an outbound endpoint forwards DNS queries to. Typically, these are the IP addresses of DNS resolvers on your network.

", "ResolverRuleConfig$TargetIps": "

For DNS queries that originate in your VPC, the new IP addresses that you want to route outbound DNS queries to.

" } }, @@ -1720,7 +1848,17 @@ "UpdateIpAddresses": { "base": null, "refs": { - "UpdateResolverEndpointRequest$UpdateIpAddresses": "

Updates the Resolver endpoint type to IpV4, Ipv6, or dual-stack.

" + "UpdateResolverEndpointRequest$UpdateIpAddresses": "

Specifies the IPv6 address when you update the Resolver endpoint from IPv4 to dual-stack. If you don't specify an IPv6 address, one will be automatically chosen from your subnet.

" + } + }, + "UpdateOutpostResolverRequest": { + "base": null, + "refs": { + } + }, + "UpdateOutpostResolverResponse": { + "base": null, + "refs": { } }, "UpdateResolverConfigRequest": { diff --git a/models/apis/route53resolver/2018-04-01/endpoint-rule-set-1.json b/models/apis/route53resolver/2018-04-01/endpoint-rule-set-1.json index 500b0fc14fc..55379714836 100644 --- a/models/apis/route53resolver/2018-04-01/endpoint-rule-set-1.json +++ b/models/apis/route53resolver/2018-04-01/endpoint-rule-set-1.json @@ -242,44 +242,6 @@ "conditions": [], "type": "tree", "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-gov-east-1" - ] - } - ], - "endpoint": { - "url": "https://route53resolver.us-gov-east-1.amazonaws.com", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-gov-west-1" - ] - } - ], - "endpoint": { - "url": "https://route53resolver.us-gov-west-1.amazonaws.com", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - }, { "conditions": [], "endpoint": { diff --git a/models/apis/route53resolver/2018-04-01/endpoint-tests-1.json b/models/apis/route53resolver/2018-04-01/endpoint-tests-1.json index d8c59410ea6..4b0253c80e8 100644 --- a/models/apis/route53resolver/2018-04-01/endpoint-tests-1.json +++ b/models/apis/route53resolver/2018-04-01/endpoint-tests-1.json @@ -403,19 +403,6 @@ "UseDualStack": false } }, - { - "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://route53resolver.us-gov-east-1.amazonaws.com" - } - }, - "params": { - "Region": "us-gov-east-1", - "UseFIPS": true, - "UseDualStack": false - } - }, { "documentation": "For region us-gov-west-1 with FIPS disabled and DualStack disabled", "expect": { @@ -430,29 +417,29 @@ } }, { - "documentation": "For region us-gov-west-1 with FIPS enabled and DualStack disabled", + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://route53resolver.us-gov-west-1.amazonaws.com" + "url": "https://route53resolver-fips.us-gov-east-1.api.aws" } }, "params": { - "Region": "us-gov-west-1", + "Region": "us-gov-east-1", "UseFIPS": true, - "UseDualStack": false + "UseDualStack": true } }, { - "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://route53resolver-fips.us-gov-east-1.api.aws" + "url": "https://route53resolver-fips.us-gov-east-1.amazonaws.com" } }, "params": { "Region": "us-gov-east-1", "UseFIPS": true, - "UseDualStack": true + "UseDualStack": false } }, { diff --git a/models/apis/route53resolver/2018-04-01/paginators-1.json b/models/apis/route53resolver/2018-04-01/paginators-1.json index a295a8fbb98..eb31ed3449a 100644 --- a/models/apis/route53resolver/2018-04-01/paginators-1.json +++ b/models/apis/route53resolver/2018-04-01/paginators-1.json @@ -36,6 +36,12 @@ "limit_key": "MaxResults", "result_key": "FirewallRules" }, + "ListOutpostResolvers": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "OutpostResolvers" + }, "ListResolverConfigs": { "input_token": "NextToken", "output_token": "NextToken", diff --git a/models/apis/s3/2006-03-01/endpoint-rule-set-1.json b/models/apis/s3/2006-03-01/endpoint-rule-set-1.json index c624befb251..29eb0d2ba21 100644 --- a/models/apis/s3/2006-03-01/endpoint-rule-set-1.json +++ b/models/apis/s3/2006-03-01/endpoint-rule-set-1.json @@ -34,7 +34,8 @@ }, "ForcePathStyle": { "builtIn": "AWS::S3::ForcePathStyle", - "required": false, + "required": true, + "default": false, "documentation": "When true, force a path-style endpoint to be used where the bucket name is part of the path.", "type": "Boolean" }, @@ -78,100 +79,357 @@ }, "rules": [ { - "conditions": [], + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], "type": "tree", "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Accelerate cannot be used with FIPS", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "error": "Cannot set dual-stack in combination with a custom endpoint.", + "type": "error" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "A custom endpoint cannot be combined with FIPS", + "type": "error" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + } + ], + "error": "A custom endpoint cannot be combined with S3 Accelerate", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + }, + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "partitionResult" + }, + "name" + ] + }, + "aws-cn" + ] + } + ], + "error": "Partition does not support FIPS", + "type": "error" + }, { "conditions": [ { "fn": "isSet", + "argv": [ + { + "ref": "Bucket" + } + ] + }, + { + "fn": "substring", + "argv": [ + { + "ref": "Bucket" + }, + 49, + 50, + true + ], + "assign": "hardwareType" + }, + { + "fn": "substring", + "argv": [ + { + "ref": "Bucket" + }, + 8, + 12, + true + ], + "assign": "regionPrefix" + }, + { + "fn": "substring", + "argv": [ + { + "ref": "Bucket" + }, + 0, + 7, + true + ], + "assign": "bucketAliasSuffix" + }, + { + "fn": "substring", + "argv": [ + { + "ref": "Bucket" + }, + 32, + 49, + true + ], + "assign": "outpostId" + }, + { + "fn": "aws.partition", "argv": [ { "ref": "Region" } + ], + "assign": "regionPartition" + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "bucketAliasSuffix" + }, + "--op-s3" ] } ], "type": "tree", "rules": [ { - "conditions": [], + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "outpostId" + }, + false + ] + } + ], "type": "tree", "rules": [ { "conditions": [ { - "fn": "isSet", + "fn": "stringEquals", "argv": [ { - "ref": "Bucket" - } + "ref": "hardwareType" + }, + "e" ] - }, + } + ], + "type": "tree", + "rules": [ { - "fn": "substring", - "argv": [ + "conditions": [ { - "ref": "Bucket" - }, - 49, - 50, - true + "fn": "stringEquals", + "argv": [ + { + "ref": "regionPrefix" + }, + "beta" + ] + } ], - "assign": "hardwareType" - }, - { - "fn": "substring", - "argv": [ + "type": "tree", + "rules": [ { - "ref": "Bucket" + "conditions": [ + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + } + ], + "error": "Expected a endpoint to be specified but no endpoint was found", + "type": "error" }, - 8, - 12, - true - ], - "assign": "regionPrefix" - }, - { - "fn": "substring", - "argv": [ { - "ref": "Bucket" - }, - 0, - 7, - true - ], - "assign": "abbaSuffix" + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + } + ], + "endpoint": { + "url": "https://{Bucket}.ec2.{url#authority}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-outposts", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] }, { - "fn": "substring", - "argv": [ - { - "ref": "Bucket" + "conditions": [], + "endpoint": { + "url": "https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-outposts", + "signingRegion": "{Region}" + } + ] }, - 32, - 49, - true - ], - "assign": "outpostId" - }, - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "regionPartition" - }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ { "fn": "stringEquals", "argv": [ { - "ref": "abbaSuffix" + "ref": "hardwareType" }, - "--op-s3" + "o" ] } ], @@ -180,11234 +438,2748 @@ { "conditions": [ { - "fn": "isValidHostLabel", + "fn": "stringEquals", "argv": [ { - "ref": "outpostId" + "ref": "regionPrefix" }, - false + "beta" ] } ], "type": "tree", "rules": [ { - "conditions": [], - "type": "tree", - "rules": [ + "conditions": [ { - "conditions": [ + "fn": "not", + "argv": [ { - "fn": "stringEquals", + "fn": "isSet", "argv": [ { - "ref": "hardwareType" - }, - "e" + "ref": "Endpoint" + } ] } - ], - "type": "tree", - "rules": [ + ] + } + ], + "error": "Expected a endpoint to be specified but no endpoint was found", + "type": "error" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "regionPrefix" - }, - "beta" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - } - ], - "error": "Expected a endpoint to be specified but no endpoint was found", - "type": "error" - }, - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - } - ], - "endpoint": { - "url": "https://{Bucket}.ec2.{url#authority}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-outposts", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-outposts", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + "ref": "Endpoint" } ] }, { - "conditions": [ + "fn": "parseURL", + "argv": [ { - "fn": "stringEquals", - "argv": [ - { - "ref": "hardwareType" - }, - "o" - ] + "ref": "Endpoint" } ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "regionPrefix" - }, - "beta" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - } - ], - "error": "Expected a endpoint to be specified but no endpoint was found", - "type": "error" - }, - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - } - ], - "endpoint": { - "url": "https://{Bucket}.op-{outpostId}.{url#authority}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-outposts", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, + "assign": "url" + } + ], + "endpoint": { + "url": "https://{Bucket}.op-{outpostId}.{url#authority}", + "properties": { + "authSchemes": [ { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-outposts", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-outposts", + "signingRegion": "{Region}" } ] }, - { - "conditions": [], - "error": "Unrecognized hardware type: \"Expected hardware type o or e but got {hardwareType}\"", - "type": "error" - } - ] + "headers": {} + }, + "type": "endpoint" } ] }, { "conditions": [], - "error": "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.", - "type": "error" + "endpoint": { + "url": "https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-outposts", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" } ] }, { - "conditions": [ + "conditions": [], + "error": "Unrecognized hardware type: \"Expected hardware type o or e but got {hardwareType}\"", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.", + "type": "error" + } + ] + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Bucket" + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "not", + "argv": [ { "fn": "isSet", "argv": [ { - "ref": "Bucket" + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ] } ] } + ] + } + ], + "error": "Custom endpoint `{Endpoint}` was not a valid URI", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "ForcePathStyle" + }, + false + ] + }, + { + "fn": "aws.isVirtualHostableS3Bucket", + "argv": [ + { + "ref": "Bucket" + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + } ], "type": "tree", "rules": [ { "conditions": [ { - "fn": "isSet", + "fn": "isValidHostLabel", "argv": [ { - "ref": "Endpoint" - } + "ref": "Region" + }, + false ] - }, + } + ], + "type": "tree", + "rules": [ { - "fn": "not", - "argv": [ + "conditions": [ { - "fn": "isSet", + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "stringEquals", "argv": [ { - "fn": "parseURL", + "fn": "getAttr", "argv": [ { - "ref": "Endpoint" - } + "ref": "partitionResult" + }, + "name" ] - } + }, + "aws-cn" ] } - ] - } - ], - "error": "Custom endpoint `{Endpoint}` was not a valid URI", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ + ], + "error": "S3 Accelerate cannot be used in this region", + "type": "error" + }, { "conditions": [ { - "fn": "isSet", + "fn": "booleanEquals", "argv": [ { - "ref": "ForcePathStyle" - } + "ref": "UseDualStack" + }, + true ] }, { "fn": "booleanEquals", "argv": [ { - "ref": "ForcePathStyle" + "ref": "UseFIPS" }, true ] - } - ], - "type": "tree", - "rules": [ + }, { - "conditions": [], - "type": "tree", - "rules": [ + "fn": "booleanEquals", + "argv": [ { - "conditions": [ - { - "fn": "aws.parseArn", - "argv": [ - { - "ref": "Bucket" - } - ] + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" } - ], - "error": "Path-style addressing cannot be used with ARN buckets", - "type": "error" + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ { - "conditions": [ + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ { - "fn": "uriEncode", - "argv": [ - { - "ref": "Bucket" - } - ], - "assign": "uri_encoded_bucket" + "ref": "Endpoint" } - ], - "type": "tree", - "rules": [ + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ], - "error": "Cannot set dual-stack in combination with a custom endpoint.", - "type": "error" + "ref": "Region" }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Path-style addressing cannot be used with S3 Accelerate", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [ - { - "fn": "aws.isVirtualHostableS3Bucket", - "argv": [ - { - "ref": "Bucket" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "Region" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "partitionResult" - }, - "name" - ] - }, - "aws-cn" - ] - } - ], - "error": "Partition does not support FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "error": "Accelerate cannot be used with FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "partitionResult" - }, - "name" - ] - }, - "aws-cn" - ] - } - ], - "error": "S3 Accelerate cannot be used in this region", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - } - ], - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "isIp" - ] - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid region: region was not a valid DNS name.", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "url" - }, - "scheme" - ] - }, - "http" - ] - }, - { - "fn": "aws.isVirtualHostableS3Bucket", - "argv": [ - { - "ref": "Bucket" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "Region" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [], - "error": "Invalid region: region was not a valid DNS name.", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "aws.parseArn", - "argv": [ - { - "ref": "Bucket" - } - ], - "assign": "bucketArn" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[0]" - ], - "assign": "arnType" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "arnType" - }, - "" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "service" - ] - }, - "s3-object-lambda" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "arnType" - }, - "accesspoint" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[1]" - ], - "assign": "accessPointName" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "accessPointName" - }, - "" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "error": "S3 Object Lambda does not support Dual-stack", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - } - ], - "error": "S3 Object Lambda does not support S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - "" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "DisableAccessPoints" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "DisableAccessPoints" - }, - true - ] - } - ], - "error": "Access points are not supported for this operation", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[2]" - ] - } - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "UseArnRegion" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseArnRegion" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - "{Region}" - ] - } - ] - } - ], - "error": "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - } - ], - "assign": "bucketPartition" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketPartition" - }, - "name" - ] - }, - { - "fn": "getAttr", - "argv": [ - { - "ref": "partitionResult" - }, - "name" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "accountId" - ] - }, - "" - ] - } - ], - "error": "Invalid ARN: Missing account id", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "accountId" - ] - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "accessPointName" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketPartition" - }, - "name" - ] - }, - "aws-cn" - ] - } - ], - "error": "Partition does not support FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - } - ], - "endpoint": { - "url": "{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-object-lambda", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-object-lambda", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-object-lambda", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", - "type": "error" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Could not load partition for ARN region `{bucketArn#region}`", - "type": "error" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.", - "type": "error" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: bucket ARN is missing a region", - "type": "error" - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "arnType" - }, - "accesspoint" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[1]" - ], - "assign": "accessPointName" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "accessPointName" - }, - "" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - "" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "arnType" - }, - "accesspoint" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - "" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "DisableAccessPoints" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "DisableAccessPoints" - }, - true - ] - } - ], - "error": "Access points are not supported for this operation", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[2]" - ] - } - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "UseArnRegion" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseArnRegion" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - "{Region}" - ] - } - ] - } - ], - "error": "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - } - ], - "assign": "bucketPartition" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketPartition" - }, - "name" - ] - }, - "{partitionResult#name}" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "service" - ] - }, - "s3" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "accountId" - ] - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "accessPointName" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - } - ], - "error": "Access Points do not support S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketPartition" - }, - "name" - ] - }, - "aws-cn" - ] - } - ], - "error": "Partition does not support FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ], - "error": "DualStack cannot be combined with a Host override (PrivateLink)", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - } - ], - "endpoint": { - "url": "{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - } - ], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Could not load partition for ARN region `{bucketArn#region}`", - "type": "error" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.", - "type": "error" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: bucket ARN is missing a region", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "accessPointName" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "error": "S3 MRAP does not support dual-stack", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "error": "S3 MRAP does not support FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - } - ], - "error": "S3 MRAP does not support S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "DisableMultiRegionAccessPoints" - }, - true - ] - } - ], - "error": "Invalid configuration: Multi-Region Access Point ARNs are disabled.", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "mrapPartition" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "mrapPartition" - }, - "name" - ] - }, - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "partition" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4a", - "signingName": "s3", - "signingRegionSet": [ - "*" - ] - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [], - "error": "Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "{Region} was not a valid region", - "type": "error" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid Access Point Name", - "type": "error" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "service" - ] - }, - "s3-outposts" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "error": "S3 Outposts does not support Dual-stack", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "error": "S3 Outposts does not support FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - } - ], - "error": "S3 Outposts does not support S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[4]" - ] - } - ] - } - ], - "error": "Invalid Arn: Outpost Access Point ARN contains sub resources", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[1]" - ], - "assign": "outpostId" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "outpostId" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "UseArnRegion" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseArnRegion" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - "{Region}" - ] - } - ] - } - ], - "error": "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - } - ], - "assign": "bucketPartition" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketPartition" - }, - "name" - ] - }, - { - "fn": "getAttr", - "argv": [ - { - "ref": "partitionResult" - }, - "name" - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "region" - ] - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "accountId" - ] - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[2]" - ], - "assign": "outpostType" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "bucketArn" - }, - "resourceId[3]" - ], - "assign": "accessPointName" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "outpostType" - }, - "accesspoint" - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - } - ], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-outposts", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-outposts", - "signingRegion": "{bucketArn#region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Expected an outpost type `accesspoint`, found {outpostType}", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: expected an access point name", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: Expected a 4-component resource", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Could not load partition for ARN region {bucketArn#region}", - "type": "error" - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: The Outpost Id was not set", - "type": "error" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid ARN: No ARN type specified", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "substring", - "argv": [ - { - "ref": "Bucket" - }, - 0, - 4, - false - ], - "assign": "arnPrefix" - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "arnPrefix" - }, - "arn:" - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "fn": "aws.parseArn", - "argv": [ - { - "ref": "Bucket" - } - ] - } - ] - } - ] - } - ], - "error": "Invalid ARN: `{Bucket}` was not a valid ARN", - "type": "error" - }, - { - "conditions": [ - { - "fn": "uriEncode", - "argv": [ - { - "ref": "Bucket" - } - ], - "assign": "uri_encoded_bucket" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ], - "error": "Cannot set dual-stack in combination with a custom endpoint.", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - false - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - }, - { - "conditions": [], - "error": "Path-style addressing cannot be used with S3 Accelerate", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "UseObjectLambdaEndpoint" - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseObjectLambdaEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "Region" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "error": "S3 Object Lambda does not support Dual-stack", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "Accelerate" - }, - true - ] - } - ], - "error": "S3 Object Lambda does not support S3 Accelerate", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "partitionResult" - }, - "name" - ] - }, - "aws-cn" - ] - } - ], - "error": "Partition does not support FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-object-lambda", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "endpoint": { - "url": "https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-object-lambda", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3-object-lambda", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "conditions": [], - "error": "Invalid region: region was not a valid DNS name.", - "type": "error" - } - ] - } - ] - }, - { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Bucket" - } - ] - } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "aws.partition", - "argv": [ - { - "ref": "Region" - } - ], - "assign": "partitionResult" - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "isValidHostLabel", - "argv": [ - { - "ref": "Region" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "partitionResult" - }, - "name" - ] - }, - "aws-cn" - ] - } - ], - "error": "Partition does not support FIPS", - "type": "error" - }, - { - "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "url" + }, + "isIp" + ] + }, + true + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "url" + }, + "isIp" + ] + }, + false + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "url" + }, + "isIp" + ] + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "url" + }, + "isIp" + ] + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "url" + }, + "isIp" + ] + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "url" + }, + "isIp" + ] + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Invalid region: region was not a valid DNS name.", + "type": "error" + } + ] + } + ] + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "url" + }, + "scheme" + ] + }, + "http" + ] + }, + { + "fn": "aws.isVirtualHostableS3Bucket", + "argv": [ + { + "ref": "Bucket" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "ForcePathStyle" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "Region" + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "{url#scheme}://{Bucket}.{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Invalid region: region was not a valid DNS name.", + "type": "error" + } + ] + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "ForcePathStyle" + }, + false + ] + }, + { + "fn": "aws.parseArn", + "argv": [ + { + "ref": "Bucket" + } + ], + "assign": "bucketArn" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[0]" + ], + "assign": "arnType" + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "service" + ] + }, + "s3-object-lambda" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "accesspoint" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[1]" + ], + "assign": "accessPointName" + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "accessPointName" }, + "" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "S3 Object Lambda does not support Dual-stack", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" }, + true + ] + } + ], + "error": "S3 Object Lambda does not support S3 Accelerate", + "type": "error" + }, + { + "conditions": [ + { + "fn": "not", + "argv": [ { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, + "fn": "stringEquals", + "argv": [ { - "fn": "booleanEquals", + "fn": "getAttr", "argv": [ { - "ref": "UseDualStack" + "ref": "bucketArn" }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } + "region" ] }, + "" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] + "ref": "DisableAccessPoints" } - ], - "endpoint": { - "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + ] }, { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, + "fn": "booleanEquals", + "argv": [ { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] + "ref": "DisableAccessPoints" }, + true + ] + } + ], + "error": "Access points are not supported for this operation", + "type": "error" + }, + { + "conditions": [ + { + "fn": "not", + "argv": [ { - "fn": "not", + "fn": "isSet", "argv": [ { - "fn": "stringEquals", + "fn": "getAttr", "argv": [ { - "ref": "Region" + "ref": "bucketArn" }, - "aws-global" + "resourceId[2]" ] } ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" } ] - }, + } + ], + "type": "tree", + "rules": [ { "conditions": [ { - "fn": "booleanEquals", + "fn": "isSet", "argv": [ { - "ref": "UseFIPS" - }, - false + "ref": "UseArnRegion" + } ] }, { "fn": "booleanEquals", "argv": [ { - "ref": "UseDualStack" + "ref": "UseArnRegion" }, - true - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } + false ] }, { @@ -11417,224 +3189,454 @@ "fn": "stringEquals", "argv": [ { - "ref": "Region" + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] }, - "aws-global" + "{Region}" ] } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + ] + } + ], + "error": "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", + "type": "error" }, { "conditions": [ { - "fn": "booleanEquals", + "fn": "aws.partition", "argv": [ { - "ref": "UseFIPS" - }, - false - ] - }, + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] + } + ], + "assign": "bucketPartition" + } + ], + "type": "tree", + "rules": [ { - "fn": "booleanEquals", - "argv": [ + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + } + ], + "type": "tree", + "rules": [ { - "ref": "UseDualStack" + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketPartition" + }, + "name" + ] + }, + { + "fn": "getAttr", + "argv": [ + { + "ref": "partitionResult" + }, + "name" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "accountId" + ] + }, + "" + ] + } + ], + "error": "Invalid ARN: Missing account id", + "type": "error" + }, + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "accountId" + ] + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "accessPointName" + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + } + ], + "endpoint": { + "url": "{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-object-lambda", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-object-lambda", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-object-lambda", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", + "type": "error" + } + ] }, - false - ] - }, - { - "fn": "isSet", - "argv": [ { - "ref": "Endpoint" + "conditions": [], + "error": "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", + "type": "error" } ] - }, + } + ] + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: bucket ARN is missing a region", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`", + "type": "error" + } + ] + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "accesspoint" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[1]" + ], + "assign": "accessPointName" + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "accessPointName" + }, + "" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" + "ref": "bucketArn" }, + "region" + ] + }, + "" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "accesspoint" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "not", + "argv": [ { "fn": "stringEquals", "argv": [ { - "ref": "Region" + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] }, - "aws-global" + "" ] } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, + ] + } + ], + "type": "tree", + "rules": [ { "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, { "fn": "isSet", "argv": [ { - "ref": "Endpoint" + "ref": "DisableAccessPoints" } ] }, { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, - { - "fn": "stringEquals", + "fn": "booleanEquals", "argv": [ { - "ref": "Region" + "ref": "DisableAccessPoints" }, - "aws-global" + true ] } ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + "error": "Access points are not supported for this operation", + "type": "error" }, { "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - }, - { - "fn": "parseURL", - "argv": [ - { - "ref": "Endpoint" - } - ], - "assign": "url" - }, { "fn": "not", "argv": [ { - "fn": "stringEquals", + "fn": "isSet", "argv": [ { - "ref": "Region" - }, - "aws-global" + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[2]" + ] + } ] } ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] } ], "type": "tree", @@ -11642,301 +3644,819 @@ { "conditions": [ { - "fn": "stringEquals", + "fn": "isSet", "argv": [ { - "ref": "Region" - }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" + "ref": "UseArnRegion" } ] }, - "headers": {} - }, - "type": "endpoint" - }, - { - "conditions": [], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ + { + "fn": "booleanEquals", + "argv": [ { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } + "ref": "UseArnRegion" + }, + false ] }, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "isSet", - "argv": [ { - "ref": "Endpoint" + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] + }, + "{Region}" + ] + } + ] } - ] + ], + "error": "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", + "type": "error" }, { - "fn": "parseURL", - "argv": [ + "conditions": [ { - "ref": "Endpoint" + "fn": "aws.partition", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] + } + ], + "assign": "bucketPartition" } ], - "assign": "url" - }, - { - "fn": "not", - "argv": [ + "type": "tree", + "rules": [ { - "fn": "stringEquals", - "argv": [ + "conditions": [ { - "ref": "Region" + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketPartition" + }, + "name" + ] + }, + "{partitionResult#name}" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "service" + ] + }, + "s3" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "accountId" + ] + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "accessPointName" + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + } + ], + "error": "Access Points do not support S3 Accelerate", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + } + ], + "endpoint": { + "url": "{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + } + ], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", + "type": "error" + } + ] }, - "aws-global" + { + "conditions": [], + "error": "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", + "type": "error" + } ] } ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] } - ], - "endpoint": { - "url": "{url#scheme}://{url#authority}{url#path}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + ] }, { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, + "conditions": [], + "error": "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.", + "type": "error" + } + ] + } + ] + } + ] + }, + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "accessPointName" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "S3 MRAP does not support dual-stack", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "S3 MRAP does not support FIPS", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + } + ], + "error": "S3 MRAP does not support S3 Accelerate", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "DisableMultiRegionAccessPoints" + }, + true + ] + } + ], + "error": "Invalid configuration: Multi-Region Access Point ARNs are disabled.", + "type": "error" + }, + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "mrapPartition" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ { - "fn": "booleanEquals", + "fn": "getAttr", "argv": [ { - "ref": "UseDualStack" + "ref": "mrapPartition" }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } + "name" ] }, { - "fn": "stringEquals", + "fn": "getAttr", "argv": [ { - "ref": "Region" + "ref": "bucketArn" }, - "aws-global" + "partition" ] } - ], + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}", + "url": "https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}", "properties": { "authSchemes": [ { "disableDoubleEncoding": true, - "name": "sigv4", + "name": "sigv4a", "signingName": "s3", - "signingRegion": "us-east-1" + "signingRegionSet": [ + "*" + ] } ] }, "headers": {} }, "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`", + "type": "error" + } + ] + } + ] + }, + { + "conditions": [], + "error": "Invalid Access Point Name", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided", + "type": "error" + } + ] + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "service" + ] + }, + "s3-outposts" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "S3 Outposts does not support Dual-stack", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "S3 Outposts does not support FIPS", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + } + ], + "error": "S3 Outposts does not support S3 Accelerate", + "type": "error" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[4]" + ] + } + ] + } + ], + "error": "Invalid Arn: Outpost Access Point ARN contains sub resources", + "type": "error" + }, + { + "conditions": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[1]" + ], + "assign": "outpostId" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "outpostId" + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "UseArnRegion" + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseArnRegion" }, + false + ] + }, + { + "fn": "not", + "argv": [ { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, + "fn": "stringEquals", + "argv": [ { - "fn": "booleanEquals", + "fn": "getAttr", "argv": [ { - "ref": "UseDualStack" + "ref": "bucketArn" }, - false + "region" ] }, + "{Region}" + ] + } + ] + } + ], + "error": "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", + "type": "error" + }, + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "fn": "getAttr", + "argv": [ { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] + "ref": "bucketArn" }, + "region" + ] + } + ], + "assign": "bucketPartition" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] + "ref": "Region" } ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-east-1" - } - ] - }, - "headers": {} - }, - "type": "endpoint" - }, + "assign": "partitionResult" + } + ], + "type": "tree", + "rules": [ { "conditions": [ { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", + "fn": "stringEquals", "argv": [ { - "fn": "isSet", + "fn": "getAttr", "argv": [ { - "ref": "Endpoint" - } + "ref": "bucketPartition" + }, + "name" ] - } - ] - }, - { - "fn": "not", - "argv": [ + }, { - "fn": "stringEquals", + "fn": "getAttr", "argv": [ { - "ref": "Region" + "ref": "partitionResult" }, - "aws-global" + "name" ] } ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - true - ] } ], "type": "tree", @@ -11944,123 +4464,182 @@ { "conditions": [ { - "fn": "stringEquals", + "fn": "isValidHostLabel", "argv": [ { - "ref": "Region" + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "region" + ] + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "accountId" + ] + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[2]" + ], + "assign": "outpostType" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "bucketArn" + }, + "resourceId[3]" + ], + "assign": "accessPointName" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "outpostType" + }, + "accesspoint" + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + } + ], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-outposts", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-outposts", + "signingRegion": "{bucketArn#region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Expected an outpost type `accesspoint`, found {outpostType}", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: expected an access point name", + "type": "error" + } + ] }, - "us-east-1" - ] - } - ], - "endpoint": { - "url": "https://s3.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" + "conditions": [], + "error": "Invalid ARN: Expected a 4-component resource", + "type": "error" } ] }, - "headers": {} - }, - "type": "endpoint" + { + "conditions": [], + "error": "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", + "type": "error" + } + ] }, { "conditions": [], - "endpoint": { - "url": "https://s3.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + "error": "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", + "type": "error" } ] }, { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - false - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - false - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "isSet", - "argv": [ - { - "ref": "Endpoint" - } - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ - { - "ref": "Region" - }, - "aws-global" - ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseGlobalEndpoint" - }, - false - ] - } - ], - "endpoint": { - "url": "https://s3.{Region}.{partitionResult#dnsSuffix}", - "properties": { - "authSchemes": [ - { - "disableDoubleEncoding": true, - "name": "sigv4", - "signingName": "s3", - "signingRegion": "{Region}" - } - ] - }, - "headers": {} - }, - "type": "endpoint" + "conditions": [], + "error": "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", + "type": "error" } ] } @@ -12069,31 +4648,2638 @@ ] }, { - "conditions": [], - "error": "Invalid region: region was not a valid DNS name.", - "type": "error" + "conditions": [], + "error": "Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: The Outpost Id was not set", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})", + "type": "error" + } + ] + }, + { + "conditions": [], + "error": "Invalid ARN: No ARN type specified", + "type": "error" + } + ] + }, + { + "conditions": [ + { + "fn": "substring", + "argv": [ + { + "ref": "Bucket" + }, + 0, + 4, + false + ], + "assign": "arnPrefix" + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnPrefix" + }, + "arn:" + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "fn": "aws.parseArn", + "argv": [ + { + "ref": "Bucket" + } + ] + } + ] + } + ] + } + ], + "error": "Invalid ARN: `{Bucket}` was not a valid ARN", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "ForcePathStyle" + }, + true + ] + }, + { + "fn": "aws.parseArn", + "argv": [ + { + "ref": "Bucket" + } + ] + } + ], + "error": "Path-style addressing cannot be used with ARN buckets", + "type": "error" + }, + { + "conditions": [ + { + "fn": "uriEncode", + "argv": [ + { + "ref": "Bucket" + } + ], + "assign": "uri_encoded_bucket" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + false + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Path-style addressing cannot be used with S3 Accelerate", + "type": "error" + } + ] + } + ] + } + ] + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "UseObjectLambdaEndpoint" + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseObjectLambdaEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "Region" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "S3 Object Lambda does not support Dual-stack", + "type": "error" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "Accelerate" + }, + true + ] + } + ], + "error": "S3 Object Lambda does not support S3 Accelerate", + "type": "error" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-object-lambda", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "endpoint": { + "url": "https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-object-lambda", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3-object-lambda", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [], + "error": "Invalid region: region was not a valid DNS name.", + "type": "error" + } + ] + } + ] + }, + { + "conditions": [ + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Bucket" + } + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "partitionResult" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "Region" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3-fips.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + } + ] + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "parseURL", + "argv": [ + { + "ref": "Endpoint" + } + ], + "assign": "url" + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "{url#scheme}://{url#authority}{url#path}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ], + "endpoint": { + "url": "https://s3.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "us-east-1" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] } ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "https://s3.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://s3.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" } ] }, { - "conditions": [], - "error": "A valid partition could not be determined", - "type": "error" + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + false + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + false + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "aws-global" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseGlobalEndpoint" + }, + false + ] + } + ], + "endpoint": { + "url": "https://s3.{Region}.{partitionResult#dnsSuffix}", + "properties": { + "authSchemes": [ + { + "disableDoubleEncoding": true, + "name": "sigv4", + "signingName": "s3", + "signingRegion": "{Region}" + } + ] + }, + "headers": {} + }, + "type": "endpoint" } ] + }, + { + "conditions": [], + "error": "Invalid region: region was not a valid DNS name.", + "type": "error" } ] } ] - }, - { - "conditions": [], - "error": "A region must be set when sending requests to S3.", - "type": "error" } ] + }, + { + "conditions": [], + "error": "A region must be set when sending requests to S3.", + "type": "error" } ] } \ No newline at end of file diff --git a/models/apis/s3/2006-03-01/endpoint-tests-1.json b/models/apis/s3/2006-03-01/endpoint-tests-1.json index f1dc6f77dcc..cad90f95e8f 100644 --- a/models/apis/s3/2006-03-01/endpoint-tests-1.json +++ b/models/apis/s3/2006-03-01/endpoint-tests-1.json @@ -281,7 +281,7 @@ { "documentation": "SDK::Host + access point + Dualstack is an error", "expect": { - "error": "DualStack cannot be combined with a Host override (PrivateLink)" + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "operationInputs": [ { @@ -2629,21 +2629,9 @@ } }, { - "documentation": "non-bucket endpoint with FIPS: TODO(descriptive)", + "documentation": "non-bucket endpoint override with FIPS = error", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-west-2", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://beta.example.com:1234/path" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "us-west-2", @@ -2653,21 +2641,9 @@ } }, { - "documentation": "FIPS + dualstack + custom endpoint TODO(descriptive)", + "documentation": "FIPS + dualstack + custom endpoint", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-west-2", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://beta.example.com:1234/path" - } + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "params": { "Region": "us-west-2", @@ -2677,21 +2653,9 @@ } }, { - "documentation": "dualstack + custom endpoint TODO(descriptive)", + "documentation": "dualstack + custom endpoint", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "signingRegion": "us-west-2", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://beta.example.com:1234/path" - } + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "params": { "Region": "us-west-2", @@ -2956,19 +2920,7 @@ { "documentation": "endpoint override + FIPS + dualstack (BUG)", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true, - "signingRegion": "us-east-1" - } - ] - }, - "url": "http://foo.com/bucket%21" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "us-east-1", @@ -2982,19 +2934,7 @@ { "documentation": "endpoint override + non-dns bucket + FIPS (BUG)", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true, - "signingRegion": "us-east-1" - } - ] - }, - "url": "http://foo.com/bucket%21" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "us-east-1", @@ -3084,19 +3024,7 @@ { "documentation": "URI encoded bucket + use global endpoint", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true, - "signingRegion": "us-east-1" - } - ] - }, - "url": "https://foo.com/bucket%21" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "us-east-1", @@ -3215,19 +3143,7 @@ { "documentation": "endpoint override + non-uri safe endpoint + force path style", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true, - "signingRegion": "us-east-1" - } - ] - }, - "url": "http://foo.com/bucket%21" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "us-east-1", @@ -3267,21 +3183,9 @@ } }, { - "documentation": "endpoint override + FIPS + dualstack (this is wrong—it's a bug in the UseGlobalEndpoint branch)", + "documentation": "endpoint override + FIPS + dualstack", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true, - "signingRegion": "us-east-1" - } - ] - }, - "url": "http://foo.com" - } + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "params": { "Region": "us-east-1", @@ -3294,19 +3198,7 @@ { "documentation": "non-bucket endpoint override + dualstack + global endpoint", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true, - "signingRegion": "us-east-1" - } - ] - }, - "url": "http://foo.com" - } + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "params": { "Region": "us-east-1", @@ -3319,19 +3211,7 @@ { "documentation": "Endpoint override + UseGlobalEndpoint + us-east-1", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true, - "signingRegion": "us-east-1" - } - ] - }, - "url": "http://foo.com" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "us-east-1", @@ -3350,8 +3230,7 @@ "Region": "cn-north-1", "UseFIPS": true, "UseDualStack": false, - "UseGlobalEndpoint": true, - "Endpoint": "http://foo.com" + "UseGlobalEndpoint": true } }, { @@ -3453,21 +3332,9 @@ } }, { - "documentation": "aws-global + fips + custom endpoint (TODO: should be an error)", + "documentation": "aws-global + fips + custom endpoint", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "signingRegion": "us-east-1", - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://foo.com/bucket%21" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "aws-global", @@ -3505,21 +3372,9 @@ } }, { - "documentation": "aws-global + dualstack + custom endpoint (TODO: should be an error)", + "documentation": "aws-global + dualstack + custom endpoint", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "signingRegion": "us-east-1", - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://foo.com" - } + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "params": { "Region": "aws-global", @@ -3555,7 +3410,7 @@ } }, { - "documentation": "FIPS + aws-global + path only bucket. TODO: this should be an error", + "documentation": "FIPS + aws-global + path only bucket. This is not supported by S3 but we allow garbage in garbage out", "expect": { "endpoint": { "properties": { @@ -3581,21 +3436,9 @@ } }, { - "documentation": "aws-global + FIPS + endpoint override. TODO: should this be an error?", + "documentation": "aws-global + FIPS + endpoint override.", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "signingRegion": "us-east-1", - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://foo.com" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "aws-global", @@ -3604,21 +3447,9 @@ } }, { - "documentation": "force path style, aws-global & endpoint override", + "documentation": "force path style, FIPS, aws-global & endpoint override", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "signingRegion": "us-east-1", - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://foo.com/bucket%21" - } + "error": "A custom endpoint cannot be combined with FIPS" }, "params": { "Region": "aws-global", @@ -3654,19 +3485,7 @@ { "documentation": "endpoint override with aws-global region", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "signingRegion": "us-east-1", - "name": "sigv4", - "signingName": "s3", - "disableDoubleEncoding": true - } - ] - }, - "url": "http://foo.com" - } + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "params": { "Region": "aws-global", @@ -4934,19 +4753,7 @@ { "documentation": "path style + fips@cn-north-1", "expect": { - "endpoint": { - "properties": { - "authSchemes": [ - { - "signingName": "s3", - "signingRegion": "cn-north-1", - "disableDoubleEncoding": true, - "name": "sigv4" - } - ] - }, - "url": "https://s3-fips.cn-north-1.amazonaws.com.cn/bucket-name" - } + "error": "Partition does not support FIPS" }, "operationInputs": [ { @@ -5491,7 +5298,7 @@ { "documentation": "SDK::Host + FIPS@us-west-2", "expect": { - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate" + "error": "A custom endpoint cannot be combined with FIPS" }, "operationInputs": [ { @@ -5521,7 +5328,7 @@ { "documentation": "SDK::Host + DualStack@us-west-2", "expect": { - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate" + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "operationInputs": [ { @@ -5551,7 +5358,7 @@ { "documentation": "SDK::HOST + accelerate@us-west-2", "expect": { - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate" + "error": "A custom endpoint cannot be combined with S3 Accelerate" }, "operationInputs": [ { @@ -5704,7 +5511,7 @@ } }, { - "documentation": "SDK::Host + FIPS@cn-north-1", + "documentation": "FIPS@cn-north-1", "expect": { "error": "Partition does not support FIPS" }, @@ -5712,7 +5519,6 @@ "Accelerate": false, "Bucket": "bucket-name", "ForcePathStyle": false, - "Endpoint": "https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com", "Region": "cn-north-1", "UseDualStack": false, "UseFIPS": true @@ -5721,7 +5527,7 @@ { "documentation": "SDK::Host + DualStack@cn-north-1", "expect": { - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate" + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "operationInputs": [ { @@ -5751,7 +5557,7 @@ { "documentation": "SDK::HOST + accelerate@cn-north-1", "expect": { - "error": "S3 Accelerate cannot be used in this region" + "error": "A custom endpoint cannot be combined with S3 Accelerate" }, "params": { "Accelerate": true, @@ -5891,7 +5697,7 @@ { "documentation": "SDK::Host + FIPS@af-south-1", "expect": { - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate" + "error": "A custom endpoint cannot be combined with FIPS" }, "operationInputs": [ { @@ -5921,7 +5727,7 @@ { "documentation": "SDK::Host + DualStack@af-south-1", "expect": { - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate" + "error": "Cannot set dual-stack in combination with a custom endpoint." }, "operationInputs": [ { @@ -5951,7 +5757,7 @@ { "documentation": "SDK::HOST + accelerate@af-south-1", "expect": { - "error": "Host override cannot be combined with Dualstack, FIPS, or S3 Accelerate" + "error": "A custom endpoint cannot be combined with S3 Accelerate" }, "operationInputs": [ { @@ -7666,7 +7472,7 @@ } }, { - "documentation": "S3 Outposts Abba Real Outpost Prod us-west-1", + "documentation": "S3 Outposts bucketAlias Real Outpost Prod us-west-1", "expect": { "endpoint": { "properties": { @@ -7691,7 +7497,7 @@ } }, { - "documentation": "S3 Outposts Abba Real Outpost Prod ap-east-1", + "documentation": "S3 Outposts bucketAlias Real Outpost Prod ap-east-1", "expect": { "endpoint": { "properties": { @@ -7716,7 +7522,7 @@ } }, { - "documentation": "S3 Outposts Abba Ec2 Outpost Prod us-east-1", + "documentation": "S3 Outposts bucketAlias Ec2 Outpost Prod us-east-1", "expect": { "endpoint": { "properties": { @@ -7741,7 +7547,7 @@ } }, { - "documentation": "S3 Outposts Abba Ec2 Outpost Prod me-south-1", + "documentation": "S3 Outposts bucketAlias Ec2 Outpost Prod me-south-1", "expect": { "endpoint": { "properties": { @@ -7766,7 +7572,7 @@ } }, { - "documentation": "S3 Outposts Abba Real Outpost Beta", + "documentation": "S3 Outposts bucketAlias Real Outpost Beta", "expect": { "endpoint": { "properties": { @@ -7792,7 +7598,7 @@ } }, { - "documentation": "S3 Outposts Abba Ec2 Outpost Beta", + "documentation": "S3 Outposts bucketAlias Ec2 Outpost Beta", "expect": { "endpoint": { "properties": { @@ -7818,7 +7624,7 @@ } }, { - "documentation": "S3 Outposts Abba - No endpoint set for beta", + "documentation": "S3 Outposts bucketAlias - No endpoint set for beta", "expect": { "error": "Expected a endpoint to be specified but no endpoint was found" }, @@ -7831,7 +7637,7 @@ } }, { - "documentation": "S3 Outposts Abba Invalid hardware type", + "documentation": "S3 Outposts bucketAlias Invalid hardware type", "expect": { "error": "Unrecognized hardware type: \"Expected hardware type o or e but got h\"" }, @@ -7844,7 +7650,7 @@ } }, { - "documentation": "S3 Outposts Abba Special character in Outpost Arn", + "documentation": "S3 Outposts bucketAlias Special character in Outpost Arn", "expect": { "error": "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`." }, @@ -7857,7 +7663,7 @@ } }, { - "documentation": "S3 Outposts Abba - No endpoint set for beta", + "documentation": "S3 Outposts bucketAlias - No endpoint set for beta", "expect": { "error": "Expected a endpoint to be specified but no endpoint was found" }, diff --git a/models/apis/s3/2006-03-01/examples-1.json b/models/apis/s3/2006-03-01/examples-1.json index d4cbbd175a9..51762e4436b 100644 --- a/models/apis/s3/2006-03-01/examples-1.json +++ b/models/apis/s3/2006-03-01/examples-1.json @@ -1567,13 +1567,13 @@ "PutObject": [ { "input": { - "Body": "filetoupload", + "Body": "HappyFace.jpg", "Bucket": "examplebucket", - "Key": "objectkey" + "Key": "HappyFace.jpg" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ" + "VersionId": "tpf3zF08nBplQK1XLOefGskR7mGDwcDk" }, "comments": { "input": { @@ -1581,9 +1581,9 @@ "output": { } }, - "description": "The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-create-an-object-1483147613675", - "title": "To create an object." + "description": "The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file syntax. S3 returns VersionId of the newly created object.", + "id": "to-upload-an-object-1481760101010", + "title": "To upload an object" }, { "input": { @@ -1613,11 +1613,14 @@ "input": { "Body": "HappyFace.jpg", "Bucket": "examplebucket", - "Key": "HappyFace.jpg" + "Key": "HappyFace.jpg", + "ServerSideEncryption": "AES256", + "StorageClass": "STANDARD_IA" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "tpf3zF08nBplQK1XLOefGskR7mGDwcDk" + "ServerSideEncryption": "AES256", + "VersionId": "CG612hodqujkf8FaaNfp8U..FIhLROcp" }, "comments": { "input": { @@ -1625,20 +1628,19 @@ "output": { } }, - "description": "The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file syntax. S3 returns VersionId of the newly created object.", - "id": "to-upload-an-object-1481760101010", - "title": "To upload an object" + "description": "The following example uploads an object. The request specifies optional request headers to directs S3 to use specific storage class and use server-side encryption.", + "id": "to-upload-an-object-(specify-optional-headers)", + "title": "To upload an object (specify optional headers)" }, { "input": { - "ACL": "authenticated-read", "Body": "filetoupload", "Bucket": "examplebucket", - "Key": "exampleobject" + "Key": "objectkey" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "VersionId": "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr" + "VersionId": "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ" }, "comments": { "input": { @@ -1646,22 +1648,22 @@ "output": { } }, - "description": "The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-upload-an-object-and-specify-canned-acl-1483397779571", - "title": "To upload an object and specify canned ACL." + "description": "The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.", + "id": "to-create-an-object-1483147613675", + "title": "To create an object." }, { "input": { - "Body": "HappyFace.jpg", + "Body": "filetoupload", "Bucket": "examplebucket", - "Key": "HappyFace.jpg", + "Key": "exampleobject", "ServerSideEncryption": "AES256", - "StorageClass": "STANDARD_IA" + "Tagging": "key1=value1&key2=value2" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", "ServerSideEncryption": "AES256", - "VersionId": "CG612hodqujkf8FaaNfp8U..FIhLROcp" + "VersionId": "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt" }, "comments": { "input": { @@ -1669,9 +1671,9 @@ "output": { } }, - "description": "The following example uploads an object. The request specifies optional request headers to directs S3 to use specific storage class and use server-side encryption.", - "id": "to-upload-an-object-(specify-optional-headers)", - "title": "To upload an object (specify optional headers)" + "description": "The following example uploads an object. The request specifies the optional server-side encryption option. The request also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.", + "id": "to-upload-an-object-and-specify-server-side-encryption-and-object-tags-1483398331831", + "title": "To upload an object and specify server-side encryption and object tags" }, { "input": { @@ -1696,16 +1698,14 @@ }, { "input": { + "ACL": "authenticated-read", "Body": "filetoupload", "Bucket": "examplebucket", - "Key": "exampleobject", - "ServerSideEncryption": "AES256", - "Tagging": "key1=value1&key2=value2" + "Key": "exampleobject" }, "output": { "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"", - "ServerSideEncryption": "AES256", - "VersionId": "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt" + "VersionId": "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr" }, "comments": { "input": { @@ -1713,9 +1713,9 @@ "output": { } }, - "description": "The following example uploads an object. The request specifies the optional server-side encryption option. The request also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.", - "id": "to-upload-an-object-and-specify-server-side-encryption-and-object-tags-1483398331831", - "title": "To upload an object and specify server-side encryption and object tags" + "description": "The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.", + "id": "to-upload-an-object-and-specify-canned-acl-1483397779571", + "title": "To upload an object and specify canned ACL." } ], "PutObjectAcl": [ diff --git a/models/apis/sagemaker-featurestore-runtime/2020-07-01/api-2.json b/models/apis/sagemaker-featurestore-runtime/2020-07-01/api-2.json index b301858e7e4..49001e52526 100644 --- a/models/apis/sagemaker-featurestore-runtime/2020-07-01/api-2.json +++ b/models/apis/sagemaker-featurestore-runtime/2020-07-01/api-2.json @@ -109,7 +109,7 @@ "RecordIdentifiersValueAsString" ], "members":{ - "FeatureGroupName":{"shape":"FeatureGroupName"}, + "FeatureGroupName":{"shape":"FeatureGroupNameOrArn"}, "RecordIdentifiersValueAsString":{"shape":"RecordIdentifiers"}, "FeatureNames":{"shape":"FeatureNames"} } @@ -169,7 +169,7 @@ ], "members":{ "FeatureGroupName":{ - "shape":"FeatureGroupName", + "shape":"FeatureGroupNameOrArn", "location":"uri", "locationName":"FeatureGroupName" }, @@ -210,11 +210,11 @@ ] }, "ExpiresAt":{"type":"string"}, - "FeatureGroupName":{ + "FeatureGroupNameOrArn":{ "type":"string", - "max":64, + "max":150, "min":1, - "pattern":"^[a-zA-Z0-9]([-_]*[a-zA-Z0-9]){0,63}" + "pattern":"(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:feature-group/)?([a-zA-Z0-9]([-_]*[a-zA-Z0-9]){0,63})" }, "FeatureName":{ "type":"string", @@ -246,7 +246,7 @@ ], "members":{ "FeatureGroupName":{ - "shape":"FeatureGroupName", + "shape":"FeatureGroupNameOrArn", "location":"uri", "locationName":"FeatureGroupName" }, @@ -296,7 +296,7 @@ ], "members":{ "FeatureGroupName":{ - "shape":"FeatureGroupName", + "shape":"FeatureGroupNameOrArn", "location":"uri", "locationName":"FeatureGroupName" }, diff --git a/models/apis/sagemaker-featurestore-runtime/2020-07-01/docs-2.json b/models/apis/sagemaker-featurestore-runtime/2020-07-01/docs-2.json index 97184ef66b9..c2c50ef6fb5 100644 --- a/models/apis/sagemaker-featurestore-runtime/2020-07-01/docs-2.json +++ b/models/apis/sagemaker-featurestore-runtime/2020-07-01/docs-2.json @@ -5,7 +5,7 @@ "BatchGetRecord": "

Retrieves a batch of Records from a FeatureGroup.

", "DeleteRecord": "

Deletes a Record from a FeatureGroup in the OnlineStore. Feature Store supports both SoftDelete and HardDelete. For SoftDelete (default), feature columns are set to null and the record is no longer retrievable by GetRecord or BatchGetRecord. For HardDelete, the complete Record is removed from the OnlineStore. In both cases, Feature Store appends the deleted record marker to the OfflineStore with feature values set to null, is_deleted value set to True, and EventTime set to the delete input EventTime.

Note that the EventTime specified in DeleteRecord should be set later than the EventTime of the existing record in the OnlineStore for that RecordIdentifer. If it is not, the deletion does not occur:

  • For SoftDelete, the existing (undeleted) record remains in the OnlineStore, though the delete record marker is still written to the OfflineStore.

  • HardDelete returns EventTime: 400 ValidationException to indicate that the delete operation failed. No delete record marker is written to the OfflineStore.

", "GetRecord": "

Use for OnlineStore serving from a FeatureStore. Only the latest records stored in the OnlineStore can be retrieved. If no Record with RecordIdentifierValue is found, then an empty result is returned.

", - "PutRecord": "

Used for data ingestion into the FeatureStore. The PutRecord API writes to both the OnlineStore and OfflineStore. If the record is the latest record for the recordIdentifier, the record is written to both the OnlineStore and OfflineStore. If the record is a historic record, it is written only to the OfflineStore.

" + "PutRecord": "

The PutRecord API is used to ingest a list of Records into your feature group.

If a new record’s EventTime is greater, the new record is written to both the OnlineStore and OfflineStore. Otherwise, the record is a historic record and it is written only to the OfflineStore.

You can specify the ingestion to be applied to the OnlineStore, OfflineStore, or both by using the TargetStores request parameter.

You can set the ingested record to expire at a given time to live (TTL) duration after the record’s event time, ExpiresAt = EventTime + TtlDuration, by specifying the TtlDuration parameter. A record level TtlDuration is set when specifying the TtlDuration parameter using the PutRecord API call. If the input TtlDuration is null or unspecified, TtlDuration is set to the default feature group level TtlDuration. A record level TtlDuration supersedes the group level TtlDuration.

" }, "shapes": { "AccessForbidden": { @@ -35,7 +35,7 @@ "BatchGetRecordIdentifiers": { "base": null, "refs": { - "BatchGetRecordRequest$Identifiers": "

A list of FeatureGroup names, with their corresponding RecordIdentifier value, and Feature name that have been requested to be retrieved in batch.

" + "BatchGetRecordRequest$Identifiers": "

A list containing the name or Amazon Resource Name (ARN) of the FeatureGroup, the list of names of Features to be retrieved, and the corresponding RecordIdentifier values as strings.

" } }, "BatchGetRecordRequest": { @@ -49,7 +49,7 @@ } }, "BatchGetRecordResultDetail": { - "base": "

The output of Records that have been retrieved in a batch.

", + "base": "

The output of records that have been retrieved in a batch.

", "refs": { "BatchGetRecordResultDetails$member": null } @@ -75,7 +75,7 @@ "base": null, "refs": { "BatchGetRecordRequest$ExpirationTimeResponse": "

Parameter to request ExpiresAt in response. If Enabled, BatchGetRecord will return the value of ExpiresAt, if it is not null. If Disabled and null, BatchGetRecord will return null.

", - "GetRecordRequest$ExpirationTimeResponse": "

Parameter to request ExpiresAt in response. If Enabled, BatchGetRecord will return the value of ExpiresAt, if it is not null. If Disabled and null, BatchGetRecord will return null.

" + "GetRecordRequest$ExpirationTimeResponse": "

Parameter to request ExpiresAt in response. If Enabled, GetRecord will return the value of ExpiresAt, if it is not null. If Disabled and null, GetRecord will return null.

" } }, "ExpiresAt": { @@ -85,13 +85,13 @@ "GetRecordResponse$ExpiresAt": "

The ExpiresAt ISO string of the requested record.

" } }, - "FeatureGroupName": { + "FeatureGroupNameOrArn": { "base": null, "refs": { - "BatchGetRecordIdentifier$FeatureGroupName": "

A FeatureGroupName containing Records you are retrieving in a batch.

", - "DeleteRecordRequest$FeatureGroupName": "

The name of the feature group to delete the record from.

", - "GetRecordRequest$FeatureGroupName": "

The name of the feature group from which you want to retrieve a record.

", - "PutRecordRequest$FeatureGroupName": "

The name of the feature group that you want to insert the record into.

" + "BatchGetRecordIdentifier$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the FeatureGroup containing the records you are retrieving in a batch.

", + "DeleteRecordRequest$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the feature group to delete the record from.

", + "GetRecordRequest$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the feature group from which you want to retrieve a record.

", + "PutRecordRequest$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the feature group that you want to insert the record into.

" } }, "FeatureName": { diff --git a/models/apis/sagemaker/2017-07-24/api-2.json b/models/apis/sagemaker/2017-07-24/api-2.json index 365a59d62a4..5fc388501e2 100644 --- a/models/apis/sagemaker/2017-07-24/api-2.json +++ b/models/apis/sagemaker/2017-07-24/api-2.json @@ -2551,6 +2551,15 @@ "input":{"shape":"ListProjectsInput"}, "output":{"shape":"ListProjectsOutput"} }, + "ListResourceCatalogs":{ + "name":"ListResourceCatalogs", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ListResourceCatalogsRequest"}, + "output":{"shape":"ListResourceCatalogsResponse"} + }, "ListSpaces":{ "name":"ListSpaces", "http":{ @@ -6913,6 +6922,13 @@ } }, "CreationTime":{"type":"timestamp"}, + "CrossAccountFilterOption":{ + "type":"string", + "enum":[ + "SameAccount", + "CrossAccount" + ] + }, "CsvContentType":{ "type":"string", "max":256, @@ -8283,7 +8299,7 @@ "type":"structure", "required":["FeatureGroupName"], "members":{ - "FeatureGroupName":{"shape":"FeatureGroupName"}, + "FeatureGroupName":{"shape":"FeatureGroupNameOrArn"}, "NextToken":{"shape":"NextToken"} } }, @@ -8325,7 +8341,7 @@ "FeatureName" ], "members":{ - "FeatureGroupName":{"shape":"FeatureGroupName"}, + "FeatureGroupName":{"shape":"FeatureGroupNameOrArn"}, "FeatureName":{"shape":"FeatureName"} } }, @@ -10522,6 +10538,12 @@ "max":64, "min":1 }, + "FeatureGroupNameOrArn":{ + "type":"string", + "max":256, + "min":1, + "pattern":"(arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:feature-group\\/)?([a-zA-Z0-9]([_-]*[a-zA-Z0-9]){0,63})" + }, "FeatureGroupSortBy":{ "type":"string", "enum":[ @@ -14026,6 +14048,25 @@ "NextToken":{"shape":"NextToken"} } }, + "ListResourceCatalogsRequest":{ + "type":"structure", + "members":{ + "NameContains":{"shape":"ResourceCatalogName"}, + "CreationTimeAfter":{"shape":"Timestamp"}, + "CreationTimeBefore":{"shape":"Timestamp"}, + "SortOrder":{"shape":"ResourceCatalogSortOrder"}, + "SortBy":{"shape":"ResourceCatalogSortBy"}, + "MaxResults":{"shape":"MaxResults"}, + "NextToken":{"shape":"NextToken"} + } + }, + "ListResourceCatalogsResponse":{ + "type":"structure", + "members":{ + "ResourceCatalogs":{"shape":"ResourceCatalogList"}, + "NextToken":{"shape":"NextToken"} + } + }, "ListSpacesRequest":{ "type":"structure", "members":{ @@ -18035,6 +18076,50 @@ "max":256, "pattern":"arn:aws[a-z-]*:sagemaker:[a-z0-9-]*:[0-9]{12}:.+" }, + "ResourceCatalog":{ + "type":"structure", + "required":[ + "ResourceCatalogArn", + "ResourceCatalogName", + "Description", + "CreationTime" + ], + "members":{ + "ResourceCatalogArn":{"shape":"ResourceCatalogArn"}, + "ResourceCatalogName":{"shape":"ResourceCatalogName"}, + "Description":{"shape":"ResourceCatalogDescription"}, + "CreationTime":{"shape":"Timestamp"} + } + }, + "ResourceCatalogArn":{ + "type":"string", + "max":256, + "pattern":"arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:sagemaker-catalog/.*" + }, + "ResourceCatalogDescription":{ + "type":"string", + "max":256 + }, + "ResourceCatalogList":{ + "type":"list", + "member":{"shape":"ResourceCatalog"} + }, + "ResourceCatalogName":{ + "type":"string", + "max":64, + "min":1 + }, + "ResourceCatalogSortBy":{ + "type":"string", + "enum":["CreationTime"] + }, + "ResourceCatalogSortOrder":{ + "type":"string", + "enum":[ + "Ascending", + "Descending" + ] + }, "ResourceConfig":{ "type":"structure", "required":["VolumeSizeInGB"], @@ -18401,7 +18486,8 @@ "MaxResults":{ "shape":"MaxResults", "box":true - } + }, + "CrossAccountFilterOption":{"shape":"CrossAccountFilterOption"} } }, "SearchResponse":{ @@ -20517,7 +20603,7 @@ "type":"structure", "required":["FeatureGroupName"], "members":{ - "FeatureGroupName":{"shape":"FeatureGroupName"}, + "FeatureGroupName":{"shape":"FeatureGroupNameOrArn"}, "FeatureAdditions":{"shape":"FeatureAdditions"}, "OnlineStoreConfig":{"shape":"OnlineStoreConfigUpdate"} } @@ -20536,7 +20622,7 @@ "FeatureName" ], "members":{ - "FeatureGroupName":{"shape":"FeatureGroupName"}, + "FeatureGroupName":{"shape":"FeatureGroupNameOrArn"}, "FeatureName":{"shape":"FeatureName"}, "Description":{"shape":"FeatureDescription"}, "ParameterAdditions":{"shape":"FeatureParameterAdditions"}, diff --git a/models/apis/sagemaker/2017-07-24/docs-2.json b/models/apis/sagemaker/2017-07-24/docs-2.json index 2e263fc685a..3f91fe12a3c 100644 --- a/models/apis/sagemaker/2017-07-24/docs-2.json +++ b/models/apis/sagemaker/2017-07-24/docs-2.json @@ -231,6 +231,7 @@ "ListPipelines": "

Gets a list of pipelines.

", "ListProcessingJobs": "

Lists processing jobs that satisfy various filters.

", "ListProjects": "

Gets a list of the projects in an Amazon Web Services account.

", + "ListResourceCatalogs": "

Lists Amazon SageMaker Catalogs based on given filters and orders. The maximum number of ResourceCatalogs viewable is 1000.

", "ListSpaces": "

Lists spaces.

", "ListStageDevices": "

Lists devices allocated to the stage, containing detailed device information and deployment status.

", "ListStudioLifecycleConfigs": "

Lists the Studio Lifecycle Configurations in your Amazon Web Services Account.

", @@ -282,7 +283,7 @@ "UpdateEndpoint": "

Deploys the new EndpointConfig specified in the request, switches to using newly created endpoint, and then deletes resources provisioned for the endpoint using the previous EndpointConfig (there is no availability loss).

When SageMaker receives the request, it sets the endpoint status to Updating. After updating the endpoint, it sets the status to InService. To check the status of an endpoint, use the DescribeEndpoint API.

You must not delete an EndpointConfig in use by an endpoint that is live or while the UpdateEndpoint or CreateEndpoint operations are being performed on the endpoint. To update an endpoint, you must create a new EndpointConfig.

If you delete the EndpointConfig of an endpoint that is active or being created or updated you may lose visibility into the instance type the endpoint is using. The endpoint must be deleted in order to stop incurring charges.

", "UpdateEndpointWeightsAndCapacities": "

Updates variant weight of one or more variants associated with an existing endpoint, or capacity of one variant associated with an existing endpoint. When it receives the request, SageMaker sets the endpoint status to Updating. After updating the endpoint, it sets the status to InService. To check the status of an endpoint, use the DescribeEndpoint API.

", "UpdateExperiment": "

Adds, updates, or removes the description of an experiment. Updates the display name of an experiment.

", - "UpdateFeatureGroup": "

Updates the feature group.

", + "UpdateFeatureGroup": "

Updates the feature group by either adding features or updating the online store configuration. Use one of the following request parameters at a time while using the UpdateFeatureGroup API.

You can add features for your feature group using the FeatureAdditions request parameter. Features cannot be removed from a feature group.

You can update the online store configuration by using the OnlineStoreConfig request parameter. If a TtlDuration is specified, the default TtlDuration applies for all records added to the feature group after the feature group is updated. If a record level TtlDuration exists from using the PutRecord API, the record level TtlDuration applies to that record instead of the default TtlDuration.

", "UpdateFeatureMetadata": "

Updates the description and parameters of the feature group.

", "UpdateHub": "

Update a hub.

Hub APIs are only callable through SageMaker Studio.

", "UpdateImage": "

Updates the properties of a SageMaker image. To change the image's tags, use the AddTags and DeleteTags APIs.

", @@ -2847,6 +2848,12 @@ "UserProfileDetails$CreationTime": "

The creation time.

" } }, + "CrossAccountFilterOption": { + "base": null, + "refs": { + "SearchRequest$CrossAccountFilterOption": "

A cross account filter option. When the value is \"CrossAccount\" the search results will only include resources made discoverable to you from other accounts. When the value is \"SameAccount\" or null the search results will only include resources from your account. Default is null. For more information on searching for resources made discoverable to your account, see Search discoverable resources in the SageMaker Developer Guide. The maximum number of ResourceCatalogs viewable is 1000.

" + } + }, "CsvContentType": { "base": null, "refs": { @@ -5300,16 +5307,12 @@ "refs": { "CreateFeatureGroupRequest$FeatureGroupName": "

The name of the FeatureGroup. The name must be unique within an Amazon Web Services Region in an Amazon Web Services account. The name:

  • Must start and end with an alphanumeric character.

  • Can only contain alphanumeric character and hyphens. Spaces are not allowed.

", "DeleteFeatureGroupRequest$FeatureGroupName": "

The name of the FeatureGroup you want to delete. The name must be unique within an Amazon Web Services Region in an Amazon Web Services account.

", - "DescribeFeatureGroupRequest$FeatureGroupName": "

The name of the FeatureGroup you want described.

", "DescribeFeatureGroupResponse$FeatureGroupName": "

he name of the FeatureGroup.

", - "DescribeFeatureMetadataRequest$FeatureGroupName": "

The name of the feature group containing the feature.

", "DescribeFeatureMetadataResponse$FeatureGroupName": "

The name of the feature group that you've specified.

", "FeatureGroup$FeatureGroupName": "

The name of the FeatureGroup.

", "FeatureGroupSummary$FeatureGroupName": "

The name of FeatureGroup.

", "FeatureMetadata$FeatureGroupName": "

The name of the feature group containing the feature.

", - "ProcessingFeatureStoreOutput$FeatureGroupName": "

The name of the Amazon SageMaker FeatureGroup to use as the destination for processing job output. Note that your processing script is responsible for putting records into your Feature Store.

", - "UpdateFeatureGroupRequest$FeatureGroupName": "

The name of the feature group that you're updating.

", - "UpdateFeatureMetadataRequest$FeatureGroupName": "

The name of the feature group containing the feature that you're updating.

" + "ProcessingFeatureStoreOutput$FeatureGroupName": "

The name of the Amazon SageMaker FeatureGroup to use as the destination for processing job output. Note that your processing script is responsible for putting records into your Feature Store.

" } }, "FeatureGroupNameContains": { @@ -5318,6 +5321,15 @@ "ListFeatureGroupsRequest$NameContains": "

A string that partially matches one or more FeatureGroups names. Filters FeatureGroups by name.

" } }, + "FeatureGroupNameOrArn": { + "base": null, + "refs": { + "DescribeFeatureGroupRequest$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the FeatureGroup you want described.

", + "DescribeFeatureMetadataRequest$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the feature group containing the feature.

", + "UpdateFeatureGroupRequest$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the feature group that you're updating.

", + "UpdateFeatureMetadataRequest$FeatureGroupName": "

The name or Amazon Resource Name (ARN) of the feature group containing the feature that you're updating.

" + } + }, "FeatureGroupSortBy": { "base": null, "refs": { @@ -5346,7 +5358,7 @@ } }, "FeatureGroupSummary": { - "base": "

The name, Arn, CreationTime, FeatureGroup values, LastUpdatedTime and EnableOnlineStorage status of a FeatureGroup.

", + "base": "

The name, ARN, CreationTime, FeatureGroup values, LastUpdatedTime and EnableOnlineStorage status of a FeatureGroup.

", "refs": { "FeatureGroupSummaries$member": null } @@ -8005,6 +8017,16 @@ "refs": { } }, + "ListResourceCatalogsRequest": { + "base": null, + "refs": { + } + }, + "ListResourceCatalogsResponse": { + "base": null, + "refs": { + } + }, "ListSpacesRequest": { "base": null, "refs": { @@ -8325,6 +8347,7 @@ "ListPipelinesRequest$MaxResults": "

The maximum number of pipelines to return in the response.

", "ListProcessingJobsRequest$MaxResults": "

The maximum number of processing jobs to return in the response.

", "ListProjectsInput$MaxResults": "

The maximum number of projects to return in the response.

", + "ListResourceCatalogsRequest$MaxResults": "

The maximum number of results returned by ListResourceCatalogs.

", "ListSpacesRequest$MaxResults": "

The total number of items to return in the response. If the total number of items available is more than the value specified, a NextToken is provided in the response. To resume pagination, provide the NextToken value in the as part of a subsequent call. The default value is 10.

", "ListStudioLifecycleConfigsRequest$MaxResults": "

The total number of items to return in the response. If the total number of items available is more than the value specified, a NextToken is provided in the response. To resume pagination, provide the NextToken value in the as part of a subsequent call. The default value is 10.

", "ListSubscribedWorkteamsRequest$MaxResults": "

The maximum number of work teams to return in each page of the response.

", @@ -9906,6 +9929,8 @@ "ListProcessingJobsResponse$NextToken": "

If the response is truncated, Amazon SageMaker returns this token. To retrieve the next set of processing jobs, use it in the subsequent request.

", "ListProjectsInput$NextToken": "

If the result of the previous ListProjects request was truncated, the response includes a NextToken. To retrieve the next set of projects, use the token in the next request.

", "ListProjectsOutput$NextToken": "

If the result of the previous ListCompilationJobs request was truncated, the response includes a NextToken. To retrieve the next set of model compilation jobs, use the token in the next request.

", + "ListResourceCatalogsRequest$NextToken": "

A token to resume pagination of ListResourceCatalogs results.

", + "ListResourceCatalogsResponse$NextToken": "

A token to resume pagination of ListResourceCatalogs results.

", "ListSpacesRequest$NextToken": "

If the previous response was truncated, you will receive this token. Use it in your next request to receive the next set of results.

", "ListSpacesResponse$NextToken": "

If the previous response was truncated, you will receive this token. Use it in your next request to receive the next set of results.

", "ListStageDevicesRequest$NextToken": "

The response from the last list when returning a list large enough to neeed tokening.

", @@ -11716,6 +11741,49 @@ "ListTagsInput$ResourceArn": "

The Amazon Resource Name (ARN) of the resource whose tags you want to retrieve.

" } }, + "ResourceCatalog": { + "base": "

A resource catalog containing all of the resources of a specific resource type within a resource owner account. For an example on sharing the Amazon SageMaker Feature Store DefaultFeatureGroupCatalog, see Share Amazon SageMaker Catalog resource type in the Amazon SageMaker Developer Guide.

", + "refs": { + "ResourceCatalogList$member": null + } + }, + "ResourceCatalogArn": { + "base": null, + "refs": { + "ResourceCatalog$ResourceCatalogArn": "

The Amazon Resource Name (ARN) of the ResourceCatalog.

" + } + }, + "ResourceCatalogDescription": { + "base": null, + "refs": { + "ResourceCatalog$Description": "

A free form description of the ResourceCatalog.

" + } + }, + "ResourceCatalogList": { + "base": null, + "refs": { + "ListResourceCatalogsResponse$ResourceCatalogs": "

A list of the requested ResourceCatalogs.

" + } + }, + "ResourceCatalogName": { + "base": null, + "refs": { + "ListResourceCatalogsRequest$NameContains": "

A string that partially matches one or more ResourceCatalogs names. Filters ResourceCatalog by name.

", + "ResourceCatalog$ResourceCatalogName": "

The name of the ResourceCatalog.

" + } + }, + "ResourceCatalogSortBy": { + "base": null, + "refs": { + "ListResourceCatalogsRequest$SortBy": "

The value on which the resource catalog list is sorted.

" + } + }, + "ResourceCatalogSortOrder": { + "base": null, + "refs": { + "ListResourceCatalogsRequest$SortOrder": "

The order in which the resource catalogs are listed.

" + } + }, "ResourceConfig": { "base": "

Describes the resources, including machine learning (ML) compute instances and ML storage volumes, to use for model training.

", "refs": { @@ -13674,6 +13742,8 @@ "ListProcessingJobsRequest$LastModifiedTimeBefore": "

A filter that returns only processing jobs modified before the specified time.

", "ListProjectsInput$CreationTimeAfter": "

A filter that returns the projects that were created after a specified time.

", "ListProjectsInput$CreationTimeBefore": "

A filter that returns the projects that were created before a specified time.

", + "ListResourceCatalogsRequest$CreationTimeAfter": "

Use this parameter to search for ResourceCatalogs created after a specific date and time.

", + "ListResourceCatalogsRequest$CreationTimeBefore": "

Use this parameter to search for ResourceCatalogs created before a specific date and time.

", "ListStudioLifecycleConfigsRequest$CreationTimeBefore": "

A filter that returns only Lifecycle Configurations created on or before the specified time.

", "ListStudioLifecycleConfigsRequest$CreationTimeAfter": "

A filter that returns only Lifecycle Configurations created on or after the specified time.

", "ListStudioLifecycleConfigsRequest$ModifiedTimeBefore": "

A filter that returns only Lifecycle Configurations modified before the specified time.

", @@ -13747,6 +13817,7 @@ "QueryFilters$CreatedAfter": "

Filter the lineage entities connected to the StartArn(s) after the create date.

", "QueryFilters$ModifiedBefore": "

Filter the lineage entities connected to the StartArn(s) before the last modified date.

", "QueryFilters$ModifiedAfter": "

Filter the lineage entities connected to the StartArn(s) after the last modified date.

", + "ResourceCatalog$CreationTime": "

The time the ResourceCatalog was created.

", "SecondaryStatusTransition$StartTime": "

A timestamp that shows when the training job transitioned to the current secondary status state.

", "SecondaryStatusTransition$EndTime": "

A timestamp that shows when the training job transitioned out of this secondary status state into another secondary status state or when the training job has ended.

", "StudioLifecycleConfigDetails$CreationTime": "

The creation time of the Studio Lifecycle Configuration.

", diff --git a/models/apis/sagemaker/2017-07-24/paginators-1.json b/models/apis/sagemaker/2017-07-24/paginators-1.json index ba5ee3d0da5..8605e895899 100644 --- a/models/apis/sagemaker/2017-07-24/paginators-1.json +++ b/models/apis/sagemaker/2017-07-24/paginators-1.json @@ -329,6 +329,12 @@ "output_token": "NextToken", "limit_key": "MaxResults" }, + "ListResourceCatalogs": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ResourceCatalogs" + }, "ListSpaces": { "input_token": "NextToken", "output_token": "NextToken", diff --git a/models/apis/securitylake/2018-05-10/api-2.json b/models/apis/securitylake/2018-05-10/api-2.json index 054bfeb5f97..2f9c834fb0d 100644 --- a/models/apis/securitylake/2018-05-10/api-2.json +++ b/models/apis/securitylake/2018-05-10/api-2.json @@ -433,6 +433,24 @@ {"shape":"ThrottlingException"} ] }, + "ListTagsForResource":{ + "name":"ListTagsForResource", + "http":{ + "method":"GET", + "requestUri":"/v1/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"ListTagsForResourceRequest"}, + "output":{"shape":"ListTagsForResourceResponse"}, + "errors":[ + {"shape":"BadRequestException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ] + }, "RegisterDataLakeDelegatedAdministrator":{ "name":"RegisterDataLakeDelegatedAdministrator", "http":{ @@ -451,6 +469,44 @@ {"shape":"ThrottlingException"} ] }, + "TagResource":{ + "name":"TagResource", + "http":{ + "method":"POST", + "requestUri":"/v1/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"TagResourceRequest"}, + "output":{"shape":"TagResourceResponse"}, + "errors":[ + {"shape":"BadRequestException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "idempotent":true + }, + "UntagResource":{ + "name":"UntagResource", + "http":{ + "method":"DELETE", + "requestUri":"/v1/tags/{resourceArn}", + "responseCode":200 + }, + "input":{"shape":"UntagResourceRequest"}, + "output":{"shape":"UntagResourceResponse"}, + "errors":[ + {"shape":"BadRequestException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"InternalServerException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "idempotent":true + }, "UpdateDataLake":{ "name":"UpdateDataLake", "http":{ @@ -723,7 +779,8 @@ ], "members":{ "configurations":{"shape":"DataLakeConfigurationList"}, - "metaStoreManagerRoleArn":{"shape":"RoleArn"} + "metaStoreManagerRoleArn":{"shape":"RoleArn"}, + "tags":{"shape":"TagList"} } }, "CreateDataLakeResponse":{ @@ -765,7 +822,8 @@ "sources":{"shape":"LogSourceResourceList"}, "subscriberDescription":{"shape":"DescriptionString"}, "subscriberIdentity":{"shape":"AwsIdentity"}, - "subscriberName":{"shape":"CreateSubscriberRequestSubscriberNameString"} + "subscriberName":{"shape":"CreateSubscriberRequestSubscriberNameString"}, + "tags":{"shape":"TagList"} } }, "CreateSubscriberRequestSubscriberNameString":{ @@ -1278,6 +1336,23 @@ "subscribers":{"shape":"SubscriberResourceList"} } }, + "ListTagsForResourceRequest":{ + "type":"structure", + "required":["resourceArn"], + "members":{ + "resourceArn":{ + "shape":"AmazonResourceName", + "location":"uri", + "locationName":"resourceArn" + } + } + }, + "ListTagsForResourceResponse":{ + "type":"structure", + "members":{ + "tags":{"shape":"TagList"} + } + }, "LogSource":{ "type":"structure", "members":{ @@ -1447,6 +1522,59 @@ "type":"timestamp", "timestampFormat":"iso8601" }, + "Tag":{ + "type":"structure", + "required":[ + "key", + "value" + ], + "members":{ + "key":{"shape":"TagKey"}, + "value":{"shape":"TagValue"} + } + }, + "TagKey":{ + "type":"string", + "max":128, + "min":1 + }, + "TagKeyList":{ + "type":"list", + "member":{"shape":"TagKey"}, + "max":50, + "min":0 + }, + "TagList":{ + "type":"list", + "member":{"shape":"Tag"}, + "max":50, + "min":0 + }, + "TagResourceRequest":{ + "type":"structure", + "required":[ + "resourceArn", + "tags" + ], + "members":{ + "resourceArn":{ + "shape":"AmazonResourceName", + "location":"uri", + "locationName":"resourceArn" + }, + "tags":{"shape":"TagList"} + } + }, + "TagResourceResponse":{ + "type":"structure", + "members":{ + } + }, + "TagValue":{ + "type":"string", + "max":256, + "min":0 + }, "ThrottlingException":{ "type":"structure", "members":{ @@ -1470,6 +1598,30 @@ "type":"string", "pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$" }, + "UntagResourceRequest":{ + "type":"structure", + "required":[ + "resourceArn", + "tagKeys" + ], + "members":{ + "resourceArn":{ + "shape":"AmazonResourceName", + "location":"uri", + "locationName":"resourceArn" + }, + "tagKeys":{ + "shape":"TagKeyList", + "location":"querystring", + "locationName":"tagKeys" + } + } + }, + "UntagResourceResponse":{ + "type":"structure", + "members":{ + } + }, "UpdateDataLakeExceptionSubscriptionRequest":{ "type":"structure", "required":[ diff --git a/models/apis/securitylake/2018-05-10/docs-2.json b/models/apis/securitylake/2018-05-10/docs-2.json index f4856568356..91e4d9c86b4 100644 --- a/models/apis/securitylake/2018-05-10/docs-2.json +++ b/models/apis/securitylake/2018-05-10/docs-2.json @@ -2,9 +2,9 @@ "version": "2.0", "service": "

Amazon Security Lake is a fully managed security data lake service. You can use Security Lake to automatically centralize security data from cloud, on-premises, and custom sources into a data lake that's stored in your Amazon Web Services account. Amazon Web Services Organizations is an account management service that lets you consolidate multiple Amazon Web Services accounts into an organization that you create and centrally manage. With Organizations, you can create member accounts and invite existing accounts to join your organization. Security Lake helps you analyze security data for a more complete understanding of your security posture across the entire organization. It can also help you improve the protection of your workloads, applications, and data.

The data lake is backed by Amazon Simple Storage Service (Amazon S3) buckets, and you retain ownership over your data.

Amazon Security Lake integrates with CloudTrail, a service that provides a record of actions taken by a user, role, or an Amazon Web Services service. In Security Lake, CloudTrail captures API calls for Security Lake as events. The calls captured include calls from the Security Lake console and code calls to the Security Lake API operations. If you create a trail, you can enable continuous delivery of CloudTrail events to an Amazon S3 bucket, including events for Security Lake. If you don't configure a trail, you can still view the most recent events in the CloudTrail console in Event history. Using the information collected by CloudTrail you can determine the request that was made to Security Lake, the IP address from which the request was made, who made the request, when it was made, and additional details. To learn more about Security Lake information in CloudTrail, see the Amazon Security Lake User Guide.

Security Lake automates the collection of security-related log and event data from integrated Amazon Web Services and third-party services. It also helps you manage the lifecycle of data with customizable retention and replication settings. Security Lake converts ingested data into Apache Parquet format and a standard open-source schema called the Open Cybersecurity Schema Framework (OCSF).

Other Amazon Web Services and third-party services can subscribe to the data that's stored in Security Lake for incident response and security data analytics.

", "operations": { - "CreateAwsLogSource": "

Adds a natively supported Amazon Web Service as an Amazon Security Lake source. Enables source types for member accounts in required Amazon Web Services Regions, based on the parameters you specify. You can choose any source type in any Region for either accounts that are part of a trusted organization or standalone accounts. Once you add an Amazon Web Service as a source, Security Lake starts collecting logs and events from it,

You can use this API only to enable natively supported Amazon Web Services as a source. Use CreateCustomLogSource to enable data collection from a custom source.

", + "CreateAwsLogSource": "

Adds a natively supported Amazon Web Service as an Amazon Security Lake source. Enables source types for member accounts in required Amazon Web Services Regions, based on the parameters you specify. You can choose any source type in any Region for either accounts that are part of a trusted organization or standalone accounts. Once you add an Amazon Web Service as a source, Security Lake starts collecting logs and events from it.

You can use this API only to enable natively supported Amazon Web Services as a source. Use CreateCustomLogSource to enable data collection from a custom source.

", "CreateCustomLogSource": "

Adds a third-party custom source in Amazon Security Lake, from the Amazon Web Services Region where you want to create a custom source. Security Lake can collect logs and events from third-party custom sources. After creating the appropriate IAM role to invoke Glue crawler, use this API to add a custom source name in Security Lake. This operation creates a partition in the Amazon S3 bucket for Security Lake as the target location for log files from the custom source. In addition, this operation also creates an associated Glue table and an Glue crawler.

", - "CreateDataLake": "

Initializes an Amazon Security Lake instance with the provided (or default) configuration. You can enable Security Lake in Amazon Web Services Regions with customized settings before enabling log collection in Regions. By default, the CreateDataLake Security Lake in all Regions. To specify particular Regions, configure these Regions using the configurations parameter. If you have already enabled Security Lake in a Region when you call this command, the command will update the Region if you provide new configuration parameters. If you have not already enabled Security Lake in the Region when you call this API, it will set up the data lake in the Region with the specified configurations.

When you enable Security Lake, it starts ingesting security data after the CreateAwsLogSource call. This includes ingesting security data from sources, storing data, and making data accessible to subscribers. Security Lake also enables all the existing settings and resources that it stores or maintains for your Amazon Web Services account in the current Region, including security log and event data. For more information, see the Amazon Security Lake User Guide.

", + "CreateDataLake": "

Initializes an Amazon Security Lake instance with the provided (or default) configuration. You can enable Security Lake in Amazon Web Services Regions with customized settings before enabling log collection in Regions. To specify particular Regions, configure these Regions using the configurations parameter. If you have already enabled Security Lake in a Region when you call this command, the command will update the Region if you provide new configuration parameters. If you have not already enabled Security Lake in the Region when you call this API, it will set up the data lake in the Region with the specified configurations.

When you enable Security Lake, it starts ingesting security data after the CreateAwsLogSource call. This includes ingesting security data from sources, storing data, and making data accessible to subscribers. Security Lake also enables all the existing settings and resources that it stores or maintains for your Amazon Web Services account in the current Region, including security log and event data. For more information, see the Amazon Security Lake User Guide.

", "CreateDataLakeExceptionSubscription": "

Creates the specified notification subscription in Amazon Security Lake for the organization you specify.

", "CreateDataLakeOrganizationConfiguration": "

Automatically enables Amazon Security Lake for new member accounts in your organization. Security Lake is not automatically enabled for any existing member accounts in your organization.

", "CreateSubscriber": "

Creates a subscription permission for accounts that are already enabled in Amazon Security Lake. You can create a subscriber with access to data in the current Amazon Web Services Region.

", @@ -13,7 +13,7 @@ "DeleteCustomLogSource": "

Removes a custom log source from Amazon Security Lake, to stop sending data from the custom source to Security Lake.

", "DeleteDataLake": "

When you disable Amazon Security Lake from your account, Security Lake is disabled in all Amazon Web Services Regions and it stops collecting data from your sources. Also, this API automatically takes steps to remove the account from Security Lake. However, Security Lake retains all of your existing settings and the resources that it created in your Amazon Web Services account in the current Amazon Web Services Region.

The DeleteDataLake operation does not delete the data that is stored in your Amazon S3 bucket, which is owned by your Amazon Web Services account. For more information, see the Amazon Security Lake User Guide.

", "DeleteDataLakeExceptionSubscription": "

Deletes the specified notification subscription in Amazon Security Lake for the organization you specify.

", - "DeleteDataLakeOrganizationConfiguration": "

Removes automatic the enablement of configuration settings for new member accounts (but retains the settings for the delegated administrator) from Amazon Security Lake. You must run this API using the credentials of the delegated administrator. When you run this API, new member accounts that are added after the organization enables Security Lake won't contribute to the data lake.

", + "DeleteDataLakeOrganizationConfiguration": "

Turns off automatic enablement of Amazon Security Lake for member accounts that are added to an organization in Organizations. Only the delegated Security Lake administrator for an organization can perform this operation. If the delegated Security Lake administrator performs this operation, new member accounts won't automatically contribute data to the data lake.

", "DeleteSubscriber": "

Deletes the subscription permission and all notification settings for accounts that are already enabled in Amazon Security Lake. When you run DeleteSubscriber, the subscriber will no longer consume data from Security Lake and the subscriber is removed. This operation deletes the subscriber and removes access to data in the current Amazon Web Services Region.

", "DeleteSubscriberNotification": "

Deletes the specified notification subscription in Amazon Security Lake for the organization you specify.

", "DeregisterDataLakeDelegatedAdministrator": "

Deletes the Amazon Security Lake delegated administrator account for the organization. This API can only be called by the organization management account. The organization management account cannot be the delegated administrator account.

", @@ -22,10 +22,13 @@ "GetDataLakeSources": "

Retrieves a snapshot of the current Region, including whether Amazon Security Lake is enabled for those accounts and which sources Security Lake is collecting data from.

", "GetSubscriber": "

Retrieves the subscription information for the specified subscription ID. You can get information about a specific subscriber.

", "ListDataLakeExceptions": "

Lists the Amazon Security Lake exceptions that you can use to find the source of problems and fix them.

", - "ListDataLakes": "

Retrieves the Amazon Security Lake configuration object for the specified Amazon Web Services account ID. You can use the ListDataLakes API to know whether Security Lake is enabled for any region.

", + "ListDataLakes": "

Retrieves the Amazon Security Lake configuration object for the specified Amazon Web Services Regions. You can use this operation to determine whether Security Lake is enabled for a Region.

", "ListLogSources": "

Retrieves the log sources in the current Amazon Web Services Region.

", "ListSubscribers": "

List all subscribers for the specific Amazon Security Lake account ID. You can retrieve a list of subscriptions associated with a specific organization or Amazon Web Services account.

", + "ListTagsForResource": "

Retrieves the tags (keys and values) that are associated with an Amazon Security Lake resource: a subscriber, or the data lake configuration for your Amazon Web Services account in a particular Amazon Web Services Region.

", "RegisterDataLakeDelegatedAdministrator": "

Designates the Amazon Security Lake delegated administrator account for the organization. This API can only be called by the organization management account. The organization management account cannot be the delegated administrator account.

", + "TagResource": "

Adds or updates one or more tags that are associated with an Amazon Security Lake resource: a subscriber, or the data lake configuration for your Amazon Web Services account in a particular Amazon Web Services Region. A tag is a label that you can define and associate with Amazon Web Services resources. Each tag consists of a required tag key and an associated tag value. A tag key is a general label that acts as a category for a more specific tag value. A tag value acts as a descriptor for a tag key. Tags can help you identify, categorize, and manage resources in different ways, such as by owner, environment, or other criteria. For more information, see Tagging Amazon Security Lake resources in the Amazon Security Lake User Guide.

", + "UntagResource": "

Removes one or more tags (keys and values) from an Amazon Security Lake resource: a subscriber, or the data lake configuration for your Amazon Web Services account in a particular Amazon Web Services Region.

", "UpdateDataLake": "

Specifies where to store your security data and for how long. You can add a rollup Region to consolidate data from multiple Amazon Web Services Regions.

", "UpdateDataLakeExceptionSubscription": "

Updates the specified notification subscription in Amazon Security Lake for the organization you specify.

", "UpdateSubscriber": "

Updates an existing subscription for the given Amazon Security Lake account ID. You can update a subscriber by changing the sources that the subscriber consumes data from.

", @@ -68,7 +71,10 @@ "CustomLogSourceAttributes$tableArn": "

The ARN of the Glue table.

", "DataLakeResource$dataLakeArn": "

The Amazon Resource Name (ARN) created by you to provide to the subscriber. For more information about ARNs and how to use them in policies, see the Amazon Security Lake User Guide.

", "GetDataLakeSourcesResponse$dataLakeArn": "

The Amazon Resource Name (ARN) created by you to provide to the subscriber. For more information about ARNs and how to use them in policies, see the Amazon Security Lake User Guide.

", - "SubscriberResource$subscriberArn": "

The subscriber ARN of the Amazon Security Lake subscriber account.

" + "ListTagsForResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the Amazon Security Lake resource to retrieve the tags for.

", + "SubscriberResource$subscriberArn": "

The subscriber ARN of the Amazon Security Lake subscriber account.

", + "TagResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the Amazon Security Lake resource to add or update the tags for.

", + "UntagResourceRequest$resourceArn": "

The Amazon Resource Name (ARN) of the Amazon Security Lake resource to remove one or more tags from.

" } }, "AwsAccountId": { @@ -111,7 +117,7 @@ "base": "

Amazon Security Lake can collect logs and events from natively-supported Amazon Web Services services.

", "refs": { "AwsLogSourceResourceList$member": null, - "LogSourceResource$awsLogSource": "

Amazon Security Lake supports log and event collection for natively supported Amazon Web Services.

" + "LogSourceResource$awsLogSource": "

Amazon Security Lake supports log and event collection for natively supported Amazon Web Services. For more information, see the Amazon Security Lake User Guide.

" } }, "AwsLogSourceResourceList": { @@ -261,7 +267,7 @@ "base": "

Amazon Security Lake can collect logs and events from third-party custom sources.

", "refs": { "CreateCustomLogSourceResponse$source": "

The created third-party custom source.

", - "LogSourceResource$customLogSource": "

Amazon Security Lake supports custom source types. For a detailed list, see the Amazon Security Lake User Guide.

" + "LogSourceResource$customLogSource": "

Amazon Security Lake supports custom source types. For more information, see the Amazon Security Lake User Guide.

" } }, "CustomLogSourceVersion": { @@ -282,7 +288,7 @@ "base": null, "refs": { "CreateDataLakeOrganizationConfigurationRequest$autoEnableNewAccount": "

Enable Security Lake with the specified configuration settings, to begin collecting security data for new accounts in your organization.

", - "DeleteDataLakeOrganizationConfigurationRequest$autoEnableNewAccount": "

Removes the automatic enablement of configuration settings for new member accounts in Security Lake.

", + "DeleteDataLakeOrganizationConfigurationRequest$autoEnableNewAccount": "

Turns off automatic enablement of Security Lake for member accounts that are added to an organization.

", "GetDataLakeOrganizationConfigurationResponse$autoEnableNewAccount": "

The configuration for new accounts.

" } }, @@ -307,7 +313,7 @@ } }, "DataLakeException": { - "base": "

The details for a Security Lake exception

", + "base": "

The details for an Amazon Security Lake exception.

", "refs": { "DataLakeExceptionList$member": null } @@ -627,6 +633,16 @@ "refs": { } }, + "ListTagsForResourceRequest": { + "base": null, + "refs": { + } + }, + "ListTagsForResourceResponse": { + "base": null, + "refs": { + } + }, "LogSource": { "base": "

Amazon Security Lake can collect logs and events from natively-supported Amazon Web Services services and custom sources.

", "refs": { @@ -640,7 +656,7 @@ } }, "LogSourceResource": { - "base": "

The supported source types from which logs and events are collected in Amazon Security Lake. For the list of supported Amazon Web Services, see the Amazon Security Lake User Guide.

", + "base": "

The supported source types from which logs and events are collected in Amazon Security Lake. For a list of supported Amazon Web Services, see the Amazon Security Lake User Guide.

", "refs": { "LogSourceResourceList$member": null } @@ -651,7 +667,7 @@ "CreateSubscriberRequest$sources": "

The supported Amazon Web Services from which logs and events are collected. Security Lake supports log and event collection for natively supported Amazon Web Services.

", "ListLogSourcesRequest$sources": "

The list of sources for which log sources are displayed.

", "LogSource$sources": "

Specify the sources from which you want to collect logs.

", - "SubscriberResource$sources": "

Amazon Security Lake supports log and event collection for natively supported Amazon Web Services. For more information, see the Amazon Security Lake User Guide.

", + "SubscriberResource$sources": "

Amazon Security Lake supports log and event collection for natively supported Amazon Web Services. For more information, see the Amazon Security Lake User Guide.

", "UpdateSubscriberRequest$sources": "

The supported Amazon Web Services from which logs and events are collected. For the list of supported Amazon Web Services, see the Amazon Security Lake User Guide.

" } }, @@ -759,7 +775,7 @@ "CustomLogSourceCrawlerConfiguration$roleArn": "

The Amazon Resource Name (ARN) of the Identity and Access Management (IAM) role to be used by the Glue crawler. The recommended IAM policies are:

  • The managed policy AWSGlueServiceRole

  • A custom policy granting access to your Amazon S3 Data Lake

", "CustomLogSourceProvider$roleArn": "

The ARN of the IAM role to be used by the entity putting logs into your custom source partition. Security Lake will apply the correct access policies to this role, but you must first manually create the trust policy for this role. The IAM role name must start with the text 'Security Lake'. The IAM role must trust the logProviderAccountId to assume the role.

", "DataLakeReplicationConfiguration$roleArn": "

Replication settings for the Amazon S3 buckets. This parameter uses the Identity and Access Management (IAM) role you created that is managed by Security Lake, to ensure the replication setting is correct.

", - "HttpsNotificationConfiguration$targetRoleArn": "

The Amazon Resource Name (ARN) of the EventBridge API destinations IAM role that you created. For more information about ARNs and how to use them in policies, see Managing data access and Amazon Web Services Managed Policies in the Amazon Security Lake User Guide.

", + "HttpsNotificationConfiguration$targetRoleArn": "

The Amazon Resource Name (ARN) of the EventBridge API destinations IAM role that you created. For more information about ARNs and how to use them in policies, see Managing data access and Amazon Web Services Managed Policies in the Amazon Security Lake User Guide.

", "SubscriberResource$roleArn": "

The Amazon Resource Name (ARN) specifying the role of the subscriber.

" } }, @@ -868,6 +884,50 @@ "SubscriberResource$updatedAt": "

The date and time when the subscriber was last updated.

" } }, + "Tag": { + "base": "

A tag is a label that you can define and associate with Amazon Web Services resources, including certain types of Amazon Security Lake resources. Tags can help you identify, categorize, and manage resources in different ways, such as by owner, environment, or other criteria. You can associate tags with the following types of Security Lake resources: subscribers, and the data lake configuration for your Amazon Web Services account in individual Amazon Web Services Regions.

A resource can have up to 50 tags. Each tag consists of a required tag key and an associated tag value. A tag key is a general label that acts as a category for a more specific tag value. Each tag key must be unique and it can have only one tag value. A tag value acts as a descriptor for a tag key. Tag keys and values are case sensitive. They can contain letters, numbers, spaces, or the following symbols: _ . : / = + @ -

For more information, see Tagging Amazon Security Lake resources in the Amazon Security Lake User Guide.

", + "refs": { + "TagList$member": null + } + }, + "TagKey": { + "base": null, + "refs": { + "Tag$key": "

The name of the tag. This is a general label that acts as a category for a more specific tag value (value).

", + "TagKeyList$member": null + } + }, + "TagKeyList": { + "base": null, + "refs": { + "UntagResourceRequest$tagKeys": "

A list of one or more tag keys. For each value in the list, specify the tag key for a tag to remove from the Amazon Security Lake resource.

" + } + }, + "TagList": { + "base": null, + "refs": { + "CreateDataLakeRequest$tags": "

An array of objects, one for each tag to associate with the data lake configuration. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.

", + "CreateSubscriberRequest$tags": "

An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.

", + "ListTagsForResourceResponse$tags": "

An array of objects, one for each tag (key and value) that’s associated with the Amazon Security Lake resource.

", + "TagResourceRequest$tags": "

An array of objects, one for each tag (key and value) to associate with the Amazon Security Lake resource. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.

" + } + }, + "TagResourceRequest": { + "base": null, + "refs": { + } + }, + "TagResourceResponse": { + "base": null, + "refs": { + } + }, + "TagValue": { + "base": null, + "refs": { + "Tag$value": "

The value that’s associated with the specified tag key (key). This value acts as a descriptor for the tag key. A tag value cannot be null, but it can be an empty string.

" + } + }, "ThrottlingException": { "base": "

The limit on the number of requests per second was exceeded.

", "refs": { @@ -885,6 +945,16 @@ "UpdateSubscriberRequest$subscriberId": "

A value created by Security Lake that uniquely identifies your subscription.

" } }, + "UntagResourceRequest": { + "base": null, + "refs": { + } + }, + "UntagResourceResponse": { + "base": null, + "refs": { + } + }, "UpdateDataLakeExceptionSubscriptionRequest": { "base": null, "refs": { diff --git a/models/apis/securitylake/2018-05-10/endpoint-tests-1.json b/models/apis/securitylake/2018-05-10/endpoint-tests-1.json index c25bed0b2a3..44e4b725ce1 100644 --- a/models/apis/securitylake/2018-05-10/endpoint-tests-1.json +++ b/models/apis/securitylake/2018-05-10/endpoint-tests-1.json @@ -9,8 +9,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-gov-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-gov-east-1" } }, { @@ -22,8 +22,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-gov-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-gov-east-1" } }, { @@ -35,8 +35,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-gov-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-gov-east-1" } }, { @@ -48,8 +48,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-gov-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-gov-east-1" } }, { @@ -61,8 +61,8 @@ }, "params": { "UseDualStack": true, - "Region": "cn-north-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "cn-north-1" } }, { @@ -74,8 +74,8 @@ }, "params": { "UseDualStack": false, - "Region": "cn-north-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "cn-north-1" } }, { @@ -87,8 +87,8 @@ }, "params": { "UseDualStack": true, - "Region": "cn-north-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "cn-north-1" } }, { @@ -100,8 +100,8 @@ }, "params": { "UseDualStack": false, - "Region": "cn-north-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "cn-north-1" } }, { @@ -111,8 +111,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-iso-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-iso-east-1" } }, { @@ -124,8 +124,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-iso-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-iso-east-1" } }, { @@ -135,8 +135,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-iso-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-iso-east-1" } }, { @@ -148,8 +148,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-iso-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-iso-east-1" } }, { @@ -161,8 +161,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-east-1" } }, { @@ -174,8 +174,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-east-1" } }, { @@ -187,8 +187,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-east-1" } }, { @@ -200,8 +200,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-east-1" } }, { @@ -211,8 +211,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-isob-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-isob-east-1" } }, { @@ -224,8 +224,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-isob-east-1", - "UseFIPS": true + "UseFIPS": true, + "Region": "us-isob-east-1" } }, { @@ -235,8 +235,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-isob-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-isob-east-1" } }, { @@ -248,8 +248,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-isob-east-1", - "UseFIPS": false + "UseFIPS": false, + "Region": "us-isob-east-1" } }, { @@ -261,8 +261,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-east-1", "UseFIPS": false, + "Region": "us-east-1", "Endpoint": "https://example.com" } }, @@ -273,8 +273,8 @@ }, "params": { "UseDualStack": false, - "Region": "us-east-1", "UseFIPS": true, + "Region": "us-east-1", "Endpoint": "https://example.com" } }, @@ -285,8 +285,8 @@ }, "params": { "UseDualStack": true, - "Region": "us-east-1", "UseFIPS": false, + "Region": "us-east-1", "Endpoint": "https://example.com" } } diff --git a/models/apis/transcribe/2017-10-26/api-2.json b/models/apis/transcribe/2017-10-26/api-2.json index dfa077dd358..9c560e71082 100644 --- a/models/apis/transcribe/2017-10-26/api-2.json +++ b/models/apis/transcribe/2017-10-26/api-2.json @@ -1728,7 +1728,8 @@ "LanguageOptions":{"shape":"LanguageOptions"}, "Subtitles":{"shape":"Subtitles"}, "Tags":{"shape":"TagList"}, - "LanguageIdSettings":{"shape":"LanguageIdSettingsMap"} + "LanguageIdSettings":{"shape":"LanguageIdSettingsMap"}, + "ToxicityDetection":{"shape":"ToxicityDetection"} } }, "StartTranscriptionJobResponse":{ @@ -1832,6 +1833,29 @@ "max":14400000, "min":0 }, + "ToxicityCategories":{ + "type":"list", + "member":{"shape":"ToxicityCategory"}, + "max":1, + "min":1 + }, + "ToxicityCategory":{ + "type":"string", + "enum":["ALL"] + }, + "ToxicityDetection":{ + "type":"list", + "member":{"shape":"ToxicityDetectionSettings"}, + "max":1, + "min":1 + }, + "ToxicityDetectionSettings":{ + "type":"structure", + "required":["ToxicityCategories"], + "members":{ + "ToxicityCategories":{"shape":"ToxicityCategories"} + } + }, "TranscribeArn":{ "type":"string", "max":1011, @@ -1889,7 +1913,8 @@ "LanguageCodes":{"shape":"LanguageCodeList"}, "Tags":{"shape":"TagList"}, "Subtitles":{"shape":"SubtitlesOutput"}, - "LanguageIdSettings":{"shape":"LanguageIdSettingsMap"} + "LanguageIdSettings":{"shape":"LanguageIdSettingsMap"}, + "ToxicityDetection":{"shape":"ToxicityDetection"} } }, "TranscriptionJobName":{ @@ -1927,7 +1952,8 @@ "IdentifyLanguage":{"shape":"Boolean"}, "IdentifyMultipleLanguages":{"shape":"Boolean"}, "IdentifiedLanguageScore":{"shape":"IdentifiedLanguageScore"}, - "LanguageCodes":{"shape":"LanguageCodeList"} + "LanguageCodes":{"shape":"LanguageCodeList"}, + "ToxicityDetection":{"shape":"ToxicityDetection"} } }, "Type":{ diff --git a/models/apis/transcribe/2017-10-26/docs-2.json b/models/apis/transcribe/2017-10-26/docs-2.json index 0a40cf2d096..9cf90a04b86 100644 --- a/models/apis/transcribe/2017-10-26/docs-2.json +++ b/models/apis/transcribe/2017-10-26/docs-2.json @@ -1135,6 +1135,32 @@ "NonTalkTimeFilter$Threshold": "

Specify the duration, in milliseconds, of the period of silence that you want to flag. For example, you can flag a silent period that lasts 30,000 milliseconds.

" } }, + "ToxicityCategories": { + "base": null, + "refs": { + "ToxicityDetectionSettings$ToxicityCategories": "

If you include ToxicityDetection in your transcription request, you must also include ToxicityCategories. The only accepted value for this parameter is ALL.

" + } + }, + "ToxicityCategory": { + "base": null, + "refs": { + "ToxicityCategories$member": null + } + }, + "ToxicityDetection": { + "base": null, + "refs": { + "StartTranscriptionJobRequest$ToxicityDetection": "

Enables toxic speech detection in your transcript. If you include ToxicityDetection in your request, you must also include ToxicityCategories.

For information on the types of toxic speech Amazon Transcribe can detect, see Detecting toxic speech.

", + "TranscriptionJob$ToxicityDetection": "

Provides information about the toxicity detection settings applied to your transcription.

", + "TranscriptionJobSummary$ToxicityDetection": "

Indicates whether toxicity detection was enabled for the specified transcription job.

" + } + }, + "ToxicityDetectionSettings": { + "base": "

Contains ToxicityCategories, which is a required parameter if you want to enable toxicity detection (ToxicityDetection) in your transcription request.

", + "refs": { + "ToxicityDetection$member": null + } + }, "TranscribeArn": { "base": null, "refs": { diff --git a/models/apis/transcribe/2017-10-26/endpoint-tests-1.json b/models/apis/transcribe/2017-10-26/endpoint-tests-1.json index f6b5504dd0a..a47d848a4fa 100644 --- a/models/apis/transcribe/2017-10-26/endpoint-tests-1.json +++ b/models/apis/transcribe/2017-10-26/endpoint-tests-1.json @@ -8,9 +8,9 @@ } }, "params": { + "Region": "af-south-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "af-south-1" + "UseDualStack": false } }, { @@ -21,9 +21,9 @@ } }, "params": { + "Region": "ap-east-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "ap-east-1" + "UseDualStack": false } }, { @@ -34,9 +34,9 @@ } }, "params": { + "Region": "ap-northeast-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "ap-northeast-1" + "UseDualStack": false } }, { @@ -47,9 +47,9 @@ } }, "params": { + "Region": "ap-northeast-2", "UseFIPS": false, - "UseDualStack": false, - "Region": "ap-northeast-2" + "UseDualStack": false } }, { @@ -60,9 +60,9 @@ } }, "params": { + "Region": "ap-south-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "ap-south-1" + "UseDualStack": false } }, { @@ -73,9 +73,9 @@ } }, "params": { + "Region": "ap-southeast-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "ap-southeast-1" + "UseDualStack": false } }, { @@ -86,9 +86,9 @@ } }, "params": { + "Region": "ap-southeast-2", "UseFIPS": false, - "UseDualStack": false, - "Region": "ap-southeast-2" + "UseDualStack": false } }, { @@ -99,9 +99,9 @@ } }, "params": { + "Region": "ca-central-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "ca-central-1" + "UseDualStack": false } }, { @@ -112,9 +112,9 @@ } }, "params": { + "Region": "ca-central-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "ca-central-1" + "UseDualStack": false } }, { @@ -125,9 +125,9 @@ } }, "params": { + "Region": "eu-central-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "eu-central-1" + "UseDualStack": false } }, { @@ -138,9 +138,9 @@ } }, "params": { + "Region": "eu-north-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "eu-north-1" + "UseDualStack": false } }, { @@ -151,9 +151,9 @@ } }, "params": { + "Region": "eu-west-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "eu-west-1" + "UseDualStack": false } }, { @@ -164,9 +164,9 @@ } }, "params": { + "Region": "eu-west-2", "UseFIPS": false, - "UseDualStack": false, - "Region": "eu-west-2" + "UseDualStack": false } }, { @@ -177,9 +177,9 @@ } }, "params": { + "Region": "eu-west-3", "UseFIPS": false, - "UseDualStack": false, - "Region": "eu-west-3" + "UseDualStack": false } }, { @@ -190,9 +190,9 @@ } }, "params": { + "Region": "me-south-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "me-south-1" + "UseDualStack": false } }, { @@ -203,9 +203,9 @@ } }, "params": { + "Region": "sa-east-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "sa-east-1" + "UseDualStack": false } }, { @@ -216,9 +216,9 @@ } }, "params": { + "Region": "us-east-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-east-1" + "UseDualStack": false } }, { @@ -229,9 +229,9 @@ } }, "params": { + "Region": "us-east-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-east-1" + "UseDualStack": false } }, { @@ -242,9 +242,9 @@ } }, "params": { + "Region": "us-east-2", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-east-2" + "UseDualStack": false } }, { @@ -255,9 +255,9 @@ } }, "params": { + "Region": "us-east-2", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-east-2" + "UseDualStack": false } }, { @@ -268,9 +268,9 @@ } }, "params": { + "Region": "us-west-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-west-1" + "UseDualStack": false } }, { @@ -281,9 +281,9 @@ } }, "params": { + "Region": "us-west-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-west-1" + "UseDualStack": false } }, { @@ -294,9 +294,9 @@ } }, "params": { + "Region": "us-west-2", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-west-2" + "UseDualStack": false } }, { @@ -307,9 +307,9 @@ } }, "params": { + "Region": "us-west-2", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-west-2" + "UseDualStack": false } }, { @@ -320,9 +320,9 @@ } }, "params": { + "Region": "us-east-1", "UseFIPS": true, - "UseDualStack": true, - "Region": "us-east-1" + "UseDualStack": true } }, { @@ -333,9 +333,9 @@ } }, "params": { + "Region": "us-east-1", "UseFIPS": false, - "UseDualStack": true, - "Region": "us-east-1" + "UseDualStack": true } }, { @@ -346,9 +346,9 @@ } }, "params": { + "Region": "cn-north-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "cn-north-1" + "UseDualStack": false } }, { @@ -359,9 +359,9 @@ } }, "params": { + "Region": "cn-northwest-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "cn-northwest-1" + "UseDualStack": false } }, { @@ -372,9 +372,9 @@ } }, "params": { + "Region": "cn-north-1", "UseFIPS": true, - "UseDualStack": true, - "Region": "cn-north-1" + "UseDualStack": true } }, { @@ -385,9 +385,9 @@ } }, "params": { + "Region": "cn-north-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "cn-north-1" + "UseDualStack": false } }, { @@ -398,9 +398,9 @@ } }, "params": { + "Region": "cn-north-1", "UseFIPS": false, - "UseDualStack": true, - "Region": "cn-north-1" + "UseDualStack": true } }, { @@ -411,9 +411,9 @@ } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-gov-east-1" + "UseDualStack": false } }, { @@ -424,9 +424,9 @@ } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-gov-east-1" + "UseDualStack": false } }, { @@ -437,9 +437,9 @@ } }, "params": { + "Region": "us-gov-west-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-gov-west-1" + "UseDualStack": false } }, { @@ -450,9 +450,9 @@ } }, "params": { + "Region": "us-gov-west-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-gov-west-1" + "UseDualStack": false } }, { @@ -463,9 +463,9 @@ } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": true, - "UseDualStack": true, - "Region": "us-gov-east-1" + "UseDualStack": true } }, { @@ -476,9 +476,9 @@ } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": false, - "UseDualStack": true, - "Region": "us-gov-east-1" + "UseDualStack": true } }, { @@ -489,9 +489,20 @@ } }, "params": { + "Region": "us-iso-east-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-iso-east-1" + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": true } }, { @@ -502,9 +513,31 @@ } }, "params": { + "Region": "us-iso-east-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-iso-east-1" + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": true } }, { @@ -515,9 +548,20 @@ } }, "params": { + "Region": "us-isob-east-1", "UseFIPS": true, - "UseDualStack": false, - "Region": "us-isob-east-1" + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": true } }, { @@ -528,9 +572,9 @@ } }, "params": { + "Region": "us-isob-east-1", "UseFIPS": false, - "UseDualStack": false, - "Region": "us-isob-east-1" + "UseDualStack": false } }, { @@ -541,9 +585,9 @@ } }, "params": { + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, - "Region": "us-east-1", "Endpoint": "https://example.com" } }, @@ -566,9 +610,9 @@ "error": "Invalid Configuration: FIPS and custom endpoint are not supported" }, "params": { + "Region": "us-east-1", "UseFIPS": true, "UseDualStack": false, - "Region": "us-east-1", "Endpoint": "https://example.com" } }, @@ -578,11 +622,17 @@ "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" }, "params": { + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": true, - "Region": "us-east-1", "Endpoint": "https://example.com" } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } } ], "version": "1.0" diff --git a/service/connectcases/api.go b/service/connectcases/api.go index 1d7cc374c89..137cd0bb5ba 100644 --- a/service/connectcases/api.go +++ b/service/connectcases/api.go @@ -366,6 +366,8 @@ func (c *ConnectCases) CreateDomainRequest(input *CreateDomainInput) (req *reque // API. You need specific IAM permissions to successfully associate the Cases // domain. For more information, see Onboard to Cases (https://docs.aws.amazon.com/connect/latest/adminguide/required-permissions-iam-cases.html#onboard-cases-iam). // +//
+// // 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. @@ -896,7 +898,13 @@ func (c *ConnectCases) DeleteDomainRequest(input *DeleteDomainInput) (req *reque // DeleteDomain API operation for Amazon Connect Cases. // -// Deletes a domain. +// Deletes a Cases domain. +// +//

After deleting your domain you must disassociate the deleted +// domain from your Amazon Connect instance with another API call before +// being able to use Cases again with this Amazon Connect instance. See DeleteIntegrationAssociation.

+//
// // 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 @@ -3924,6 +3932,9 @@ type CaseFilter struct { // A filter for cases. Only one value can be provided. Not *CaseFilter `locationName:"not" type:"structure"` + + // Provides "or all" filtering. + OrAll []*CaseFilter `locationName:"orAll" type:"list"` } // String returns the string representation. @@ -3957,6 +3968,16 @@ func (s *CaseFilter) Validate() error { invalidParams.AddNested("Not", err.(request.ErrInvalidParams)) } } + if s.OrAll != nil { + for i, v := range s.OrAll { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OrAll", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -3982,6 +4003,12 @@ func (s *CaseFilter) SetNot(v *CaseFilter) *CaseFilter { return s } +// SetOrAll sets the OrAll field's value. +func (s *CaseFilter) SetOrAll(v []*CaseFilter) *CaseFilter { + s.OrAll = v + return s +} + // Case summary information. type CaseSummary struct { _ struct{} `type:"structure"` @@ -5289,6 +5316,33 @@ func (s *DomainSummary) SetName(v string) *DomainSummary { return s } +// An empty value. You cannot set EmptyFieldValue on a field that is required +// on a case template. +// +// This structure will never have any data members. It signifies an empty value +// on a case field. +type EmptyFieldValue struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s EmptyFieldValue) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s EmptyFieldValue) GoString() string { + return s.String() +} + // Configuration to enable EventBridge case event delivery and determine what // data is delivered. type EventBridgeConfiguration struct { @@ -6042,6 +6096,9 @@ type FieldValueUnion struct { // be provided. DoubleValue *float64 `locationName:"doubleValue" type:"double"` + // An empty value. + EmptyValue *EmptyFieldValue `locationName:"emptyValue" type:"structure"` + // String value type. StringValue *string `locationName:"stringValue" type:"string"` } @@ -6076,6 +6133,12 @@ func (s *FieldValueUnion) SetDoubleValue(v float64) *FieldValueUnion { return s } +// SetEmptyValue sets the EmptyValue field's value. +func (s *FieldValueUnion) SetEmptyValue(v *EmptyFieldValue) *FieldValueUnion { + s.EmptyValue = v + return s +} + // SetStringValue sets the StringValue field's value. func (s *FieldValueUnion) SetStringValue(v string) *FieldValueUnion { s.StringValue = &v diff --git a/service/lexmodelsv2/api.go b/service/lexmodelsv2/api.go index 42b04bf7dd0..3f41b200f34 100644 --- a/service/lexmodelsv2/api.go +++ b/service/lexmodelsv2/api.go @@ -6544,8 +6544,8 @@ func (c *LexModelsV2) ListIntentStageMetricsRequest(input *ListIntentStageMetric // ListIntentStageMetrics API operation for Amazon Lex Model Building V2. // -// Retrieves summary metrics for the intent stages in your bot. The following -// fields are required: +// Retrieves summary metrics for the stages within intents in your bot. The +// following fields are required: // // - metrics – A list of AnalyticsIntentStageMetric (https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentStageMetric.html) // objects. In each object, use the name field to specify the metric to calculate, @@ -8322,10 +8322,19 @@ func (c *LexModelsV2) ListUtteranceAnalyticsDataRequest(input *ListUtteranceAnal // ListUtteranceAnalyticsData API operation for Amazon Lex Model Building V2. // +// To use this API operation, your IAM role must have permissions to perform +// the ListAggregatedUtterances (https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListAggregatedUtterances.html) +// operation, which provides access to utterance-related analytics. See Viewing +// utterance statistics (https://docs.aws.amazon.com/lexv2/latest/dg/monitoring-utterances.html) +// for the IAM policy to apply to the IAM role. +// // Retrieves a list of metadata for individual user utterances to your bot. -// The startDateTime and endDateTime fields are required. These fields define -// a time range for which you want to retrieve results. Of the optional fields, -// you can organize the results in the following ways: +// The following fields are required: +// +// - startDateTime and endDateTime – Define a time range for which you +// want to retrieve results. +// +// Of the optional fields, you can organize the results in the following ways: // // - Use the filters field to filter the results and the sortBy field to // specify the values by which to sort the results. @@ -8482,6 +8491,12 @@ func (c *LexModelsV2) ListUtteranceMetricsRequest(input *ListUtteranceMetricsInp // ListUtteranceMetrics API operation for Amazon Lex Model Building V2. // +// To use this API operation, your IAM role must have permissions to perform +// the ListAggregatedUtterances (https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListAggregatedUtterances.html) +// operation, which provides access to utterance-related analytics. See Viewing +// utterance statistics (https://docs.aws.amazon.com/lexv2/latest/dg/monitoring-utterances.html) +// for the IAM policy to apply to the IAM role. +// // Retrieves summary metrics for the utterances in your bot. The following fields // are required: // @@ -12986,7 +13001,7 @@ type AnalyticsUtteranceMetricResult struct { // // * Detected – The number of utterances that Amazon Lex managed to detect. // - // * UtteranceTimeStamp – The date and time of the utterance. + // * UtteranceTimestamp – The date and time of the utterance. Name *string `locationName:"name" type:"string" enum:"AnalyticsUtteranceMetricName"` // The summary statistic that you requested to calculate. @@ -36308,7 +36323,7 @@ type SessionSpecification struct { BotVersion *string `locationName:"botVersion" min:"1" type:"string"` // The channel that is integrated with the bot that the session was held with. - Channel *string `locationName:"channel" type:"string" enum:"BotChannelType"` + Channel *string `locationName:"channel" min:"1" type:"string"` // The duration of the conversation in seconds. A conversation is defined as // a unique combination of a sessionId and an originatingRequestId. @@ -44357,7 +44372,7 @@ type UtteranceDataSortBy struct { // // * Count – The number of utterances. // - // * UtteranceTimeStamp – The date and time of the utterance. + // * UtteranceTimestamp – The date and time of the utterance. // // Name is a required field Name *string `locationName:"name" type:"string" required:"true" enum:"AnalyticsUtteranceSortByName"` @@ -44572,7 +44587,7 @@ type UtteranceSpecification struct { BotVersion *string `locationName:"botVersion" min:"1" type:"string"` // The channel that is integrated with the bot that the utterance was made to. - Channel *string `locationName:"channel" type:"string" enum:"BotChannelType"` + Channel *string `locationName:"channel" min:"1" type:"string"` // The date and time when the conversation in which the utterance took place // ended. A conversation is defined as a unique combination of a sessionId and @@ -45686,26 +45701,6 @@ func BotAliasStatus_Values() []string { } } -const ( - // BotChannelTypeFacebook is a BotChannelType enum value - BotChannelTypeFacebook = "Facebook" - - // BotChannelTypeSlack is a BotChannelType enum value - BotChannelTypeSlack = "Slack" - - // BotChannelTypeTwilioSms is a BotChannelType enum value - BotChannelTypeTwilioSms = "TwilioSms" -) - -// BotChannelType_Values returns all elements of the BotChannelType enum -func BotChannelType_Values() []string { - return []string{ - BotChannelTypeFacebook, - BotChannelTypeSlack, - BotChannelTypeTwilioSms, - } -} - const ( // BotFilterNameBotName is a BotFilterName enum value BotFilterNameBotName = "BotName" diff --git a/service/route53resolver/api.go b/service/route53resolver/api.go index 51b8dd5d784..f54d669cea9 100644 --- a/service/route53resolver/api.go +++ b/service/route53resolver/api.go @@ -717,6 +717,102 @@ func (c *Route53Resolver) CreateFirewallRuleGroupWithContext(ctx aws.Context, in return out, req.Send() } +const opCreateOutpostResolver = "CreateOutpostResolver" + +// CreateOutpostResolverRequest generates a "aws/request.Request" representing the +// client's request for the CreateOutpostResolver 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 CreateOutpostResolver for more information on using the CreateOutpostResolver +// 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 CreateOutpostResolverRequest method. +// req, resp := client.CreateOutpostResolverRequest(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/CreateOutpostResolver +func (c *Route53Resolver) CreateOutpostResolverRequest(input *CreateOutpostResolverInput) (req *request.Request, output *CreateOutpostResolverOutput) { + op := &request.Operation{ + Name: opCreateOutpostResolver, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateOutpostResolverInput{} + } + + output = &CreateOutpostResolverOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateOutpostResolver API operation for Amazon Route 53 Resolver. +// +// Creates an Route 53 Resolver on an Outpost. +// +// 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 CreateOutpostResolver for usage and error information. +// +// Returned Error Types: +// +// - AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// - InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// - ResourceNotFoundException +// The specified resource doesn't exist. +// +// - ServiceQuotaExceededException +// Fulfilling the request would cause one or more quotas to be exceeded. +// +// - ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// - ValidationException +// You have provided an invalid command. Supported values are ADD, REMOVE, or +// REPLACE a domain. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/CreateOutpostResolver +func (c *Route53Resolver) CreateOutpostResolver(input *CreateOutpostResolverInput) (*CreateOutpostResolverOutput, error) { + req, out := c.CreateOutpostResolverRequest(input) + return out, req.Send() +} + +// CreateOutpostResolverWithContext is the same as CreateOutpostResolver with the addition of +// the ability to pass a context and additional request options. +// +// See CreateOutpostResolver 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) CreateOutpostResolverWithContext(ctx aws.Context, input *CreateOutpostResolverInput, opts ...request.Option) (*CreateOutpostResolverOutput, error) { + req, out := c.CreateOutpostResolverRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateResolverEndpoint = "CreateResolverEndpoint" // CreateResolverEndpointRequest generates a "aws/request.Request" representing the @@ -1317,6 +1413,104 @@ func (c *Route53Resolver) DeleteFirewallRuleGroupWithContext(ctx aws.Context, in return out, req.Send() } +const opDeleteOutpostResolver = "DeleteOutpostResolver" + +// DeleteOutpostResolverRequest generates a "aws/request.Request" representing the +// client's request for the DeleteOutpostResolver 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 DeleteOutpostResolver for more information on using the DeleteOutpostResolver +// 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 DeleteOutpostResolverRequest method. +// req, resp := client.DeleteOutpostResolverRequest(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/DeleteOutpostResolver +func (c *Route53Resolver) DeleteOutpostResolverRequest(input *DeleteOutpostResolverInput) (req *request.Request, output *DeleteOutpostResolverOutput) { + op := &request.Operation{ + Name: opDeleteOutpostResolver, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteOutpostResolverInput{} + } + + output = &DeleteOutpostResolverOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteOutpostResolver API operation for Amazon Route 53 Resolver. +// +// Deletes a Resolver on the Outpost. +// +// 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 DeleteOutpostResolver for usage and error information. +// +// Returned Error Types: +// +// - AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// - ConflictException +// The requested state transition isn't valid. For example, you can't delete +// a firewall domain list if it is in the process of being deleted, or you can't +// import domains into a domain list that is in the process of being deleted. +// +// - InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// - ResourceNotFoundException +// The specified resource doesn't exist. +// +// - ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// - ValidationException +// You have provided an invalid command. Supported values are ADD, REMOVE, or +// REPLACE a domain. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/DeleteOutpostResolver +func (c *Route53Resolver) DeleteOutpostResolver(input *DeleteOutpostResolverInput) (*DeleteOutpostResolverOutput, error) { + req, out := c.DeleteOutpostResolverRequest(input) + return out, req.Send() +} + +// DeleteOutpostResolverWithContext is the same as DeleteOutpostResolver with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteOutpostResolver 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) DeleteOutpostResolverWithContext(ctx aws.Context, input *DeleteOutpostResolverInput, opts ...request.Option) (*DeleteOutpostResolverOutput, error) { + req, out := c.DeleteOutpostResolverRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteResolverEndpoint = "DeleteResolverEndpoint" // DeleteResolverEndpointRequest generates a "aws/request.Request" representing the @@ -2470,6 +2664,100 @@ func (c *Route53Resolver) GetFirewallRuleGroupPolicyWithContext(ctx aws.Context, return out, req.Send() } +const opGetOutpostResolver = "GetOutpostResolver" + +// GetOutpostResolverRequest generates a "aws/request.Request" representing the +// client's request for the GetOutpostResolver 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 GetOutpostResolver for more information on using the GetOutpostResolver +// 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 GetOutpostResolverRequest method. +// req, resp := client.GetOutpostResolverRequest(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/GetOutpostResolver +func (c *Route53Resolver) GetOutpostResolverRequest(input *GetOutpostResolverInput) (req *request.Request, output *GetOutpostResolverOutput) { + op := &request.Operation{ + Name: opGetOutpostResolver, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &GetOutpostResolverInput{} + } + + output = &GetOutpostResolverOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetOutpostResolver API operation for Amazon Route 53 Resolver. +// +// Gets information about a specified Resolver on the Outpost, such as its instance +// count and type, name, and the current status of the Resolver. +// +// 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 GetOutpostResolver for usage and error information. +// +// Returned Error Types: +// +// - AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// - InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// - ResourceNotFoundException +// The specified resource doesn't exist. +// +// - ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// - ValidationException +// You have provided an invalid command. Supported values are ADD, REMOVE, or +// REPLACE a domain. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/GetOutpostResolver +func (c *Route53Resolver) GetOutpostResolver(input *GetOutpostResolverInput) (*GetOutpostResolverOutput, error) { + req, out := c.GetOutpostResolverRequest(input) + return out, req.Send() +} + +// GetOutpostResolverWithContext is the same as GetOutpostResolver with the addition of +// the ability to pass a context and additional request options. +// +// See GetOutpostResolver 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) GetOutpostResolverWithContext(ctx aws.Context, input *GetOutpostResolverInput, opts ...request.Option) (*GetOutpostResolverOutput, error) { + req, out := c.GetOutpostResolverRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opGetResolverConfig = "GetResolverConfig" // GetResolverConfigRequest generates a "aws/request.Request" representing the @@ -4236,25 +4524,169 @@ func (c *Route53Resolver) ListFirewallRulesRequest(input *ListFirewallRulesInput // rule group. DNS Firewall uses the rules in a rule group to filter DNS network // traffic for a VPC. // -// A single call might return only a partial list of the rules. For information, -// see MaxResults. +// A single call might return only a partial list of the rules. For information, +// see MaxResults. +// +// 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 ListFirewallRules for usage and error information. +// +// Returned Error Types: +// +// - ResourceNotFoundException +// The specified resource doesn't exist. +// +// - ValidationException +// You have provided an invalid command. Supported values are ADD, REMOVE, or +// REPLACE a domain. +// +// - AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// - InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// - ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRules +func (c *Route53Resolver) ListFirewallRules(input *ListFirewallRulesInput) (*ListFirewallRulesOutput, error) { + req, out := c.ListFirewallRulesRequest(input) + return out, req.Send() +} + +// ListFirewallRulesWithContext is the same as ListFirewallRules with the addition of +// the ability to pass a context and additional request options. +// +// See ListFirewallRules 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) ListFirewallRulesWithContext(ctx aws.Context, input *ListFirewallRulesInput, opts ...request.Option) (*ListFirewallRulesOutput, error) { + req, out := c.ListFirewallRulesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListFirewallRulesPages iterates over the pages of a ListFirewallRules operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListFirewallRules 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 ListFirewallRules operation. +// pageNum := 0 +// err := client.ListFirewallRulesPages(params, +// func(page *route53resolver.ListFirewallRulesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +func (c *Route53Resolver) ListFirewallRulesPages(input *ListFirewallRulesInput, fn func(*ListFirewallRulesOutput, bool) bool) error { + return c.ListFirewallRulesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListFirewallRulesPagesWithContext same as ListFirewallRulesPages 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) ListFirewallRulesPagesWithContext(ctx aws.Context, input *ListFirewallRulesInput, fn func(*ListFirewallRulesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListFirewallRulesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListFirewallRulesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListFirewallRulesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListOutpostResolvers = "ListOutpostResolvers" + +// ListOutpostResolversRequest generates a "aws/request.Request" representing the +// client's request for the ListOutpostResolvers 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 ListOutpostResolvers for more information on using the ListOutpostResolvers +// 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 ListOutpostResolversRequest method. +// req, resp := client.ListOutpostResolversRequest(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/ListOutpostResolvers +func (c *Route53Resolver) ListOutpostResolversRequest(input *ListOutpostResolversInput) (req *request.Request, output *ListOutpostResolversOutput) { + op := &request.Operation{ + Name: opListOutpostResolvers, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListOutpostResolversInput{} + } + + output = &ListOutpostResolversOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListOutpostResolvers API operation for Amazon Route 53 Resolver. +// +// Lists all the Resolvers on Outposts that were created using the current Amazon +// Web Services 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 ListFirewallRules for usage and error information. +// API operation ListOutpostResolvers for usage and error information. // // Returned Error Types: // -// - ResourceNotFoundException -// The specified resource doesn't exist. -// -// - ValidationException -// You have provided an invalid command. Supported values are ADD, REMOVE, or -// REPLACE a domain. -// // - AccessDeniedException // The current account doesn't have the IAM permissions required to perform // the specified Resolver operation. @@ -4262,67 +4694,74 @@ func (c *Route53Resolver) ListFirewallRulesRequest(input *ListFirewallRulesInput // - InternalServiceErrorException // We encountered an unknown error. Try again in a few minutes. // +// - ResourceNotFoundException +// The specified resource doesn't exist. +// // - ThrottlingException // The request was throttled. Try again in a few minutes. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListFirewallRules -func (c *Route53Resolver) ListFirewallRules(input *ListFirewallRulesInput) (*ListFirewallRulesOutput, error) { - req, out := c.ListFirewallRulesRequest(input) +// - ValidationException +// You have provided an invalid command. Supported values are ADD, REMOVE, or +// REPLACE a domain. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/ListOutpostResolvers +func (c *Route53Resolver) ListOutpostResolvers(input *ListOutpostResolversInput) (*ListOutpostResolversOutput, error) { + req, out := c.ListOutpostResolversRequest(input) return out, req.Send() } -// ListFirewallRulesWithContext is the same as ListFirewallRules with the addition of +// ListOutpostResolversWithContext is the same as ListOutpostResolvers with the addition of // the ability to pass a context and additional request options. // -// See ListFirewallRules for details on how to use this API operation. +// See ListOutpostResolvers 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) ListFirewallRulesWithContext(ctx aws.Context, input *ListFirewallRulesInput, opts ...request.Option) (*ListFirewallRulesOutput, error) { - req, out := c.ListFirewallRulesRequest(input) +func (c *Route53Resolver) ListOutpostResolversWithContext(ctx aws.Context, input *ListOutpostResolversInput, opts ...request.Option) (*ListOutpostResolversOutput, error) { + req, out := c.ListOutpostResolversRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } -// ListFirewallRulesPages iterates over the pages of a ListFirewallRules operation, +// ListOutpostResolversPages iterates over the pages of a ListOutpostResolvers operation, // calling the "fn" function with the response data for each page. To stop // iterating, return false from the fn function. // -// See ListFirewallRules method for more information on how to use this operation. +// See ListOutpostResolvers 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 ListFirewallRules operation. +// // Example iterating over at most 3 pages of a ListOutpostResolvers operation. // pageNum := 0 -// err := client.ListFirewallRulesPages(params, -// func(page *route53resolver.ListFirewallRulesOutput, lastPage bool) bool { +// err := client.ListOutpostResolversPages(params, +// func(page *route53resolver.ListOutpostResolversOutput, lastPage bool) bool { // pageNum++ // fmt.Println(page) // return pageNum <= 3 // }) -func (c *Route53Resolver) ListFirewallRulesPages(input *ListFirewallRulesInput, fn func(*ListFirewallRulesOutput, bool) bool) error { - return c.ListFirewallRulesPagesWithContext(aws.BackgroundContext(), input, fn) +func (c *Route53Resolver) ListOutpostResolversPages(input *ListOutpostResolversInput, fn func(*ListOutpostResolversOutput, bool) bool) error { + return c.ListOutpostResolversPagesWithContext(aws.BackgroundContext(), input, fn) } -// ListFirewallRulesPagesWithContext same as ListFirewallRulesPages except +// ListOutpostResolversPagesWithContext same as ListOutpostResolversPages 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) ListFirewallRulesPagesWithContext(ctx aws.Context, input *ListFirewallRulesInput, fn func(*ListFirewallRulesOutput, bool) bool, opts ...request.Option) error { +func (c *Route53Resolver) ListOutpostResolversPagesWithContext(ctx aws.Context, input *ListOutpostResolversInput, fn func(*ListOutpostResolversOutput, bool) bool, opts ...request.Option) error { p := request.Pagination{ NewRequest: func() (*request.Request, error) { - var inCpy *ListFirewallRulesInput + var inCpy *ListOutpostResolversInput if input != nil { tmp := *input inCpy = &tmp } - req, _ := c.ListFirewallRulesRequest(inCpy) + req, _ := c.ListOutpostResolversRequest(inCpy) req.SetContext(ctx) req.ApplyOptions(opts...) return req, nil @@ -4330,7 +4769,7 @@ func (c *Route53Resolver) ListFirewallRulesPagesWithContext(ctx aws.Context, inp } for p.Next() { - if !fn(p.Page().(*ListFirewallRulesOutput), !p.HasNextPage()) { + if !fn(p.Page().(*ListOutpostResolversOutput), !p.HasNextPage()) { break } } @@ -6570,6 +7009,108 @@ func (c *Route53Resolver) UpdateFirewallRuleGroupAssociationWithContext(ctx aws. return out, req.Send() } +const opUpdateOutpostResolver = "UpdateOutpostResolver" + +// UpdateOutpostResolverRequest generates a "aws/request.Request" representing the +// client's request for the UpdateOutpostResolver 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 UpdateOutpostResolver for more information on using the UpdateOutpostResolver +// 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 UpdateOutpostResolverRequest method. +// req, resp := client.UpdateOutpostResolverRequest(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/UpdateOutpostResolver +func (c *Route53Resolver) UpdateOutpostResolverRequest(input *UpdateOutpostResolverInput) (req *request.Request, output *UpdateOutpostResolverOutput) { + op := &request.Operation{ + Name: opUpdateOutpostResolver, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UpdateOutpostResolverInput{} + } + + output = &UpdateOutpostResolverOutput{} + req = c.newRequest(op, input, output) + return +} + +// UpdateOutpostResolver API operation for Amazon Route 53 Resolver. +// +// You can use UpdateOutpostResolver to update the instance count, type, or +// name of a Resolver on an Outpost. +// +// 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 UpdateOutpostResolver for usage and error information. +// +// Returned Error Types: +// +// - AccessDeniedException +// The current account doesn't have the IAM permissions required to perform +// the specified Resolver operation. +// +// - ConflictException +// The requested state transition isn't valid. For example, you can't delete +// a firewall domain list if it is in the process of being deleted, or you can't +// import domains into a domain list that is in the process of being deleted. +// +// - InternalServiceErrorException +// We encountered an unknown error. Try again in a few minutes. +// +// - ResourceNotFoundException +// The specified resource doesn't exist. +// +// - ServiceQuotaExceededException +// Fulfilling the request would cause one or more quotas to be exceeded. +// +// - ThrottlingException +// The request was throttled. Try again in a few minutes. +// +// - ValidationException +// You have provided an invalid command. Supported values are ADD, REMOVE, or +// REPLACE a domain. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/route53resolver-2018-04-01/UpdateOutpostResolver +func (c *Route53Resolver) UpdateOutpostResolver(input *UpdateOutpostResolverInput) (*UpdateOutpostResolverOutput, error) { + req, out := c.UpdateOutpostResolverRequest(input) + return out, req.Send() +} + +// UpdateOutpostResolverWithContext is the same as UpdateOutpostResolver with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateOutpostResolver 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) UpdateOutpostResolverWithContext(ctx aws.Context, input *UpdateOutpostResolverInput, opts ...request.Option) (*UpdateOutpostResolverOutput, error) { + req, out := c.UpdateOutpostResolverRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUpdateResolverConfig = "UpdateResolverConfig" // UpdateResolverConfigRequest generates a "aws/request.Request" representing the @@ -7969,53 +8510,220 @@ func (s *CreateFirewallRuleInput) SetBlockOverrideDomain(v string) *CreateFirewa return s } -// SetBlockOverrideTtl sets the BlockOverrideTtl field's value. -func (s *CreateFirewallRuleInput) SetBlockOverrideTtl(v int64) *CreateFirewallRuleInput { - s.BlockOverrideTtl = &v - return s +// SetBlockOverrideTtl sets the BlockOverrideTtl field's value. +func (s *CreateFirewallRuleInput) SetBlockOverrideTtl(v int64) *CreateFirewallRuleInput { + s.BlockOverrideTtl = &v + return s +} + +// SetBlockResponse sets the BlockResponse field's value. +func (s *CreateFirewallRuleInput) SetBlockResponse(v string) *CreateFirewallRuleInput { + s.BlockResponse = &v + return s +} + +// SetCreatorRequestId sets the CreatorRequestId field's value. +func (s *CreateFirewallRuleInput) SetCreatorRequestId(v string) *CreateFirewallRuleInput { + s.CreatorRequestId = &v + return s +} + +// SetFirewallDomainListId sets the FirewallDomainListId field's value. +func (s *CreateFirewallRuleInput) SetFirewallDomainListId(v string) *CreateFirewallRuleInput { + s.FirewallDomainListId = &v + return s +} + +// SetFirewallRuleGroupId sets the FirewallRuleGroupId field's value. +func (s *CreateFirewallRuleInput) SetFirewallRuleGroupId(v string) *CreateFirewallRuleInput { + s.FirewallRuleGroupId = &v + return s +} + +// SetName sets the Name field's value. +func (s *CreateFirewallRuleInput) SetName(v string) *CreateFirewallRuleInput { + s.Name = &v + return s +} + +// SetPriority sets the Priority field's value. +func (s *CreateFirewallRuleInput) SetPriority(v int64) *CreateFirewallRuleInput { + s.Priority = &v + return s +} + +type CreateFirewallRuleOutput struct { + _ struct{} `type:"structure"` + + // The firewall rule that you just created. + FirewallRule *FirewallRule `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateFirewallRuleOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateFirewallRuleOutput) GoString() string { + return s.String() +} + +// SetFirewallRule sets the FirewallRule field's value. +func (s *CreateFirewallRuleOutput) SetFirewallRule(v *FirewallRule) *CreateFirewallRuleOutput { + s.FirewallRule = v + return s +} + +type CreateOutpostResolverInput struct { + _ struct{} `type:"structure"` + + // A unique string that identifies the request and that allows failed requests + // to be retried without the risk of running the operation twice. + // + // CreatorRequestId can be any unique string, for example, a date/time stamp. + // + // CreatorRequestId is a required field + CreatorRequestId *string `min:"1" type:"string" required:"true"` + + // Number of Amazon EC2 instances for the Resolver on Outpost. The default and + // minimal value is 4. + InstanceCount *int64 `type:"integer"` + + // A friendly name that lets you easily find a configuration in the Resolver + // dashboard in the Route 53 console. + // + // Name is a required field + Name *string `min:"1" type:"string" required:"true"` + + // The Amazon Resource Name (ARN) of the Outpost. If you specify this, you must + // also specify a value for the PreferredInstanceType. + // + // OutpostArn is a required field + OutpostArn *string `min:"1" type:"string" required:"true"` + + // The Amazon EC2 instance type. If you specify this, you must also specify + // a value for the OutpostArn. + // + // PreferredInstanceType is a required field + PreferredInstanceType *string `min:"1" type:"string" required:"true"` + + // A string that helps identify the Route 53 Resolvers on Outpost. + Tags []*Tag `type:"list"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateOutpostResolverInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateOutpostResolverInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateOutpostResolverInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateOutpostResolverInput"} + if s.CreatorRequestId == nil { + invalidParams.Add(request.NewErrParamRequired("CreatorRequestId")) + } + if s.CreatorRequestId != nil && len(*s.CreatorRequestId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("CreatorRequestId", 1)) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + if s.OutpostArn == nil { + invalidParams.Add(request.NewErrParamRequired("OutpostArn")) + } + if s.OutpostArn != nil && len(*s.OutpostArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("OutpostArn", 1)) + } + if s.PreferredInstanceType == nil { + invalidParams.Add(request.NewErrParamRequired("PreferredInstanceType")) + } + if s.PreferredInstanceType != nil && len(*s.PreferredInstanceType) < 1 { + invalidParams.Add(request.NewErrParamMinLen("PreferredInstanceType", 1)) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil } -// SetBlockResponse sets the BlockResponse field's value. -func (s *CreateFirewallRuleInput) SetBlockResponse(v string) *CreateFirewallRuleInput { - s.BlockResponse = &v +// SetCreatorRequestId sets the CreatorRequestId field's value. +func (s *CreateOutpostResolverInput) SetCreatorRequestId(v string) *CreateOutpostResolverInput { + s.CreatorRequestId = &v return s } -// SetCreatorRequestId sets the CreatorRequestId field's value. -func (s *CreateFirewallRuleInput) SetCreatorRequestId(v string) *CreateFirewallRuleInput { - s.CreatorRequestId = &v +// SetInstanceCount sets the InstanceCount field's value. +func (s *CreateOutpostResolverInput) SetInstanceCount(v int64) *CreateOutpostResolverInput { + s.InstanceCount = &v return s } -// SetFirewallDomainListId sets the FirewallDomainListId field's value. -func (s *CreateFirewallRuleInput) SetFirewallDomainListId(v string) *CreateFirewallRuleInput { - s.FirewallDomainListId = &v +// SetName sets the Name field's value. +func (s *CreateOutpostResolverInput) SetName(v string) *CreateOutpostResolverInput { + s.Name = &v return s } -// SetFirewallRuleGroupId sets the FirewallRuleGroupId field's value. -func (s *CreateFirewallRuleInput) SetFirewallRuleGroupId(v string) *CreateFirewallRuleInput { - s.FirewallRuleGroupId = &v +// SetOutpostArn sets the OutpostArn field's value. +func (s *CreateOutpostResolverInput) SetOutpostArn(v string) *CreateOutpostResolverInput { + s.OutpostArn = &v return s } -// SetName sets the Name field's value. -func (s *CreateFirewallRuleInput) SetName(v string) *CreateFirewallRuleInput { - s.Name = &v +// SetPreferredInstanceType sets the PreferredInstanceType field's value. +func (s *CreateOutpostResolverInput) SetPreferredInstanceType(v string) *CreateOutpostResolverInput { + s.PreferredInstanceType = &v return s } -// SetPriority sets the Priority field's value. -func (s *CreateFirewallRuleInput) SetPriority(v int64) *CreateFirewallRuleInput { - s.Priority = &v +// SetTags sets the Tags field's value. +func (s *CreateOutpostResolverInput) SetTags(v []*Tag) *CreateOutpostResolverInput { + s.Tags = v return s } -type CreateFirewallRuleOutput struct { +type CreateOutpostResolverOutput struct { _ struct{} `type:"structure"` - // The firewall rule that you just created. - FirewallRule *FirewallRule `type:"structure"` + // Information about the CreateOutpostResolver request, including the status + // of the request. + OutpostResolver *OutpostResolver `type:"structure"` } // String returns the string representation. @@ -8023,7 +8731,7 @@ type CreateFirewallRuleOutput struct { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s CreateFirewallRuleOutput) String() string { +func (s CreateOutpostResolverOutput) String() string { return awsutil.Prettify(s) } @@ -8032,13 +8740,13 @@ func (s CreateFirewallRuleOutput) String() string { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s CreateFirewallRuleOutput) GoString() string { +func (s CreateOutpostResolverOutput) GoString() string { return s.String() } -// SetFirewallRule sets the FirewallRule field's value. -func (s *CreateFirewallRuleOutput) SetFirewallRule(v *FirewallRule) *CreateFirewallRuleOutput { - s.FirewallRule = v +// SetOutpostResolver sets the OutpostResolver field's value. +func (s *CreateOutpostResolverOutput) SetOutpostResolver(v *OutpostResolver) *CreateOutpostResolverOutput { + s.OutpostResolver = v return s } @@ -8074,7 +8782,15 @@ type CreateResolverEndpointInput struct { // dashboard in the Route 53 console. Name *string `type:"string"` - // For the endpoint type you can choose either IPv4, IPv6. or dual-stack. A + // The Amazon Resource Name (ARN) of the Outpost. If you specify this, you must + // also specify a value for the PreferredInstanceType. + OutpostArn *string `min:"1" type:"string"` + + // The instance type. If you specify this, you must also specify a value for + // the OutpostArn. + PreferredInstanceType *string `min:"1" type:"string"` + + // For the endpoint type you can choose either IPv4, IPv6, or dual-stack. A // dual-stack endpoint means that it will resolve via both IPv4 and IPv6. This // endpoint type is applied to all IP addresses. ResolverEndpointType *string `type:"string" enum:"ResolverEndpointType"` @@ -8129,6 +8845,12 @@ func (s *CreateResolverEndpointInput) Validate() error { if s.IpAddresses != nil && len(s.IpAddresses) < 1 { invalidParams.Add(request.NewErrParamMinLen("IpAddresses", 1)) } + if s.OutpostArn != nil && len(*s.OutpostArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("OutpostArn", 1)) + } + if s.PreferredInstanceType != nil && len(*s.PreferredInstanceType) < 1 { + invalidParams.Add(request.NewErrParamMinLen("PreferredInstanceType", 1)) + } if s.SecurityGroupIds == nil { invalidParams.Add(request.NewErrParamRequired("SecurityGroupIds")) } @@ -8183,6 +8905,18 @@ func (s *CreateResolverEndpointInput) SetName(v string) *CreateResolverEndpointI return s } +// SetOutpostArn sets the OutpostArn field's value. +func (s *CreateResolverEndpointInput) SetOutpostArn(v string) *CreateResolverEndpointInput { + s.OutpostArn = &v + return s +} + +// SetPreferredInstanceType sets the PreferredInstanceType field's value. +func (s *CreateResolverEndpointInput) SetPreferredInstanceType(v string) *CreateResolverEndpointInput { + s.PreferredInstanceType = &v + return s +} + // SetResolverEndpointType sets the ResolverEndpointType field's value. func (s *CreateResolverEndpointInput) SetResolverEndpointType(v string) *CreateResolverEndpointInput { s.ResolverEndpointType = &v @@ -8422,7 +9156,8 @@ type CreateResolverRuleInput struct { Tags []*Tag `type:"list"` // The IPs that you want Resolver to forward DNS queries to. You can specify - // only IPv4 addresses. Separate IP addresses with a space. + // either Ipv4 or Ipv6 addresses but not both in the same rule. Separate IP + // addresses with a space. // // TargetIps is available only when the value of Rule type is FORWARD. TargetIps []*TargetAddress `min:"1" type:"list"` @@ -8829,6 +9564,87 @@ func (s *DeleteFirewallRuleOutput) SetFirewallRule(v *FirewallRule) *DeleteFirew return s } +type DeleteOutpostResolverInput struct { + _ struct{} `type:"structure"` + + // A unique string that identifies the Resolver on the Outpost. + // + // Id is a required field + Id *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteOutpostResolverInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteOutpostResolverInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteOutpostResolverInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteOutpostResolverInput"} + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.Id != nil && len(*s.Id) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Id", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetId sets the Id field's value. +func (s *DeleteOutpostResolverInput) SetId(v string) *DeleteOutpostResolverInput { + s.Id = &v + return s +} + +type DeleteOutpostResolverOutput struct { + _ struct{} `type:"structure"` + + // Information about the DeleteOutpostResolver request, including the status + // of the request. + OutpostResolver *OutpostResolver `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteOutpostResolverOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteOutpostResolverOutput) GoString() string { + return s.String() +} + +// SetOutpostResolver sets the OutpostResolver field's value. +func (s *DeleteOutpostResolverOutput) SetOutpostResolver(v *OutpostResolver) *DeleteOutpostResolverOutput { + s.OutpostResolver = v + return s +} + type DeleteResolverEndpointInput struct { _ struct{} `type:"structure"` @@ -10866,6 +11682,87 @@ func (s *GetFirewallRuleGroupPolicyOutput) SetFirewallRuleGroupPolicy(v string) return s } +type GetOutpostResolverInput struct { + _ struct{} `type:"structure"` + + // The ID of the Resolver on the Outpost. + // + // Id is a required field + Id *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetOutpostResolverInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetOutpostResolverInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetOutpostResolverInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetOutpostResolverInput"} + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.Id != nil && len(*s.Id) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Id", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetId sets the Id field's value. +func (s *GetOutpostResolverInput) SetId(v string) *GetOutpostResolverInput { + s.Id = &v + return s +} + +type GetOutpostResolverOutput struct { + _ struct{} `type:"structure"` + + // Information about the GetOutpostResolver request, including the status of + // the request. + OutpostResolver *OutpostResolver `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetOutpostResolverOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetOutpostResolverOutput) GoString() string { + return s.String() +} + +// SetOutpostResolver sets the OutpostResolver field's value. +func (s *GetOutpostResolverOutput) SetOutpostResolver(v *OutpostResolver) *GetOutpostResolverOutput { + s.OutpostResolver = v + return s +} + type GetResolverConfigInput struct { _ struct{} `type:"structure"` @@ -13198,7 +14095,117 @@ type ListFirewallRulesOutput struct { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s ListFirewallRulesOutput) String() string { +func (s ListFirewallRulesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListFirewallRulesOutput) GoString() string { + return s.String() +} + +// SetFirewallRules sets the FirewallRules field's value. +func (s *ListFirewallRulesOutput) SetFirewallRules(v []*FirewallRule) *ListFirewallRulesOutput { + s.FirewallRules = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListFirewallRulesOutput) SetNextToken(v string) *ListFirewallRulesOutput { + s.NextToken = &v + return s +} + +type ListOutpostResolversInput struct { + _ struct{} `type:"structure"` + + // The maximum number of Resolvers on the Outpost that you want to return in + // the response to a ListOutpostResolver request. If you don't specify a value + // for MaxResults, the request returns up to 100 Resolvers. + MaxResults *int64 `min:"1" type:"integer"` + + // For the first ListOutpostResolver request, omit this value. + NextToken *string `type:"string"` + + // The Amazon Resource Name (ARN) of the Outpost. + OutpostArn *string `min:"1" type:"string"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListOutpostResolversInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListOutpostResolversInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListOutpostResolversInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListOutpostResolversInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.OutpostArn != nil && len(*s.OutpostArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("OutpostArn", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListOutpostResolversInput) SetMaxResults(v int64) *ListOutpostResolversInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListOutpostResolversInput) SetNextToken(v string) *ListOutpostResolversInput { + s.NextToken = &v + return s +} + +// SetOutpostArn sets the OutpostArn field's value. +func (s *ListOutpostResolversInput) SetOutpostArn(v string) *ListOutpostResolversInput { + s.OutpostArn = &v + return s +} + +type ListOutpostResolversOutput struct { + _ struct{} `type:"structure"` + + // If more than MaxResults Resolvers match the specified criteria, you can submit + // another ListOutpostResolver request to get the next group of results. In + // the next request, specify the value of NextToken from the previous response. + NextToken *string `type:"string"` + + // The Resolvers on Outposts that were created by using the current Amazon Web + // Services account, and that match the specified filters, if any. + OutpostResolvers []*OutpostResolver `type:"list"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListOutpostResolversOutput) String() string { return awsutil.Prettify(s) } @@ -13207,19 +14214,19 @@ func (s ListFirewallRulesOutput) String() string { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s ListFirewallRulesOutput) GoString() string { +func (s ListOutpostResolversOutput) GoString() string { return s.String() } -// SetFirewallRules sets the FirewallRules field's value. -func (s *ListFirewallRulesOutput) SetFirewallRules(v []*FirewallRule) *ListFirewallRulesOutput { - s.FirewallRules = v +// SetNextToken sets the NextToken field's value. +func (s *ListOutpostResolversOutput) SetNextToken(v string) *ListOutpostResolversOutput { + s.NextToken = &v return s } -// SetNextToken sets the NextToken field's value. -func (s *ListFirewallRulesOutput) SetNextToken(v string) *ListFirewallRulesOutput { - s.NextToken = &v +// SetOutpostResolvers sets the OutpostResolvers field's value. +func (s *ListOutpostResolversOutput) SetOutpostResolvers(v []*OutpostResolver) *ListOutpostResolversOutput { + s.OutpostResolvers = v return s } @@ -14550,6 +15557,132 @@ func (s *ListTagsForResourceOutput) SetTags(v []*Tag) *ListTagsForResourceOutput return s } +// A complex type that contains settings for an existing Resolver on an Outpost. +type OutpostResolver struct { + _ struct{} `type:"structure"` + + // The ARN (Amazon Resource Name) for the Resolver on an Outpost. + Arn *string `min:"1" type:"string"` + + // The date and time that the Outpost Resolver was created, in Unix time format + // and Coordinated Universal Time (UTC). + CreationTime *string `min:"20" type:"string"` + + // A unique string that identifies the request that created the Resolver endpoint. + // The CreatorRequestId allows failed requests to be retried without the risk + // of running the operation twice. + CreatorRequestId *string `min:"1" type:"string"` + + // The ID of the Resolver on Outpost. + Id *string `min:"1" type:"string"` + + // Amazon EC2 instance count for the Resolver on the Outpost. + InstanceCount *int64 `type:"integer"` + + // The date and time that the Outpost Resolver was modified, in Unix time format + // and Coordinated Universal Time (UTC). + ModificationTime *string `min:"20" type:"string"` + + // Name of the Resolver. + Name *string `min:"1" type:"string"` + + // The ARN (Amazon Resource Name) for the Outpost. + OutpostArn *string `min:"1" type:"string"` + + // The Amazon EC2 instance type. + PreferredInstanceType *string `min:"1" type:"string"` + + // Status of the Resolver. + Status *string `type:"string" enum:"OutpostResolverStatus"` + + // A detailed description of the Resolver. + StatusMessage *string `type:"string"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s OutpostResolver) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s OutpostResolver) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *OutpostResolver) SetArn(v string) *OutpostResolver { + s.Arn = &v + return s +} + +// SetCreationTime sets the CreationTime field's value. +func (s *OutpostResolver) SetCreationTime(v string) *OutpostResolver { + s.CreationTime = &v + return s +} + +// SetCreatorRequestId sets the CreatorRequestId field's value. +func (s *OutpostResolver) SetCreatorRequestId(v string) *OutpostResolver { + s.CreatorRequestId = &v + return s +} + +// SetId sets the Id field's value. +func (s *OutpostResolver) SetId(v string) *OutpostResolver { + s.Id = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *OutpostResolver) SetInstanceCount(v int64) *OutpostResolver { + s.InstanceCount = &v + return s +} + +// SetModificationTime sets the ModificationTime field's value. +func (s *OutpostResolver) SetModificationTime(v string) *OutpostResolver { + s.ModificationTime = &v + return s +} + +// SetName sets the Name field's value. +func (s *OutpostResolver) SetName(v string) *OutpostResolver { + s.Name = &v + return s +} + +// SetOutpostArn sets the OutpostArn field's value. +func (s *OutpostResolver) SetOutpostArn(v string) *OutpostResolver { + s.OutpostArn = &v + return s +} + +// SetPreferredInstanceType sets the PreferredInstanceType field's value. +func (s *OutpostResolver) SetPreferredInstanceType(v string) *OutpostResolver { + s.PreferredInstanceType = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *OutpostResolver) SetStatus(v string) *OutpostResolver { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *OutpostResolver) SetStatusMessage(v string) *OutpostResolver { + s.StatusMessage = &v + return s +} + type PutFirewallRuleGroupPolicyInput struct { _ struct{} `type:"structure"` @@ -14662,8 +15795,6 @@ type PutResolverQueryLogConfigPolicyInput struct { // // * route53resolver:DisassociateResolverQueryLogConfig // - // * route53resolver:ListResolverQueryLogConfigAssociations - // // * route53resolver:ListResolverQueryLogConfigs // // In the Resource section of the statement, you specify the ARNs for the query @@ -15059,6 +16190,12 @@ type ResolverEndpoint struct { // request. Name *string `type:"string"` + // The ARN (Amazon Resource Name) for the Outpost. + OutpostArn *string `min:"1" type:"string"` + + // The Amazon EC2 instance type. + PreferredInstanceType *string `min:"1" type:"string"` + // The Resolver endpoint IP address type. ResolverEndpointType *string `type:"string" enum:"ResolverEndpointType"` @@ -15179,6 +16316,18 @@ func (s *ResolverEndpoint) SetName(v string) *ResolverEndpoint { return s } +// SetOutpostArn sets the OutpostArn field's value. +func (s *ResolverEndpoint) SetOutpostArn(v string) *ResolverEndpoint { + s.OutpostArn = &v + return s +} + +// SetPreferredInstanceType sets the PreferredInstanceType field's value. +func (s *ResolverEndpoint) SetPreferredInstanceType(v string) *ResolverEndpoint { + s.PreferredInstanceType = &v + return s +} + // SetResolverEndpointType sets the ResolverEndpointType field's value. func (s *ResolverEndpoint) SetResolverEndpointType(v string) *ResolverEndpoint { s.ResolverEndpointType = &v @@ -15531,7 +16680,7 @@ type ResolverRule struct { // An array that contains the IP addresses and ports that an outbound endpoint // forwards DNS queries to. Typically, these are the IP addresses of DNS resolvers - // on your network. Specify IPv4 addresses. IPv6 is not supported. + // on your network. TargetIps []*TargetAddress `min:"1" type:"list"` } @@ -16076,6 +17225,70 @@ func (s *ResourceUnavailableException) RequestID() string { return s.RespMetadata.RequestID } +// Fulfilling the request would cause one or more quotas to be exceeded. +type ServiceQuotaExceededException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"Message" type:"string"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ServiceQuotaExceededException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ServiceQuotaExceededException) GoString() string { + return s.String() +} + +func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error { + return &ServiceQuotaExceededException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ServiceQuotaExceededException) Code() string { + return "ServiceQuotaExceededException" +} + +// Message returns the exception's message. +func (s *ServiceQuotaExceededException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ServiceQuotaExceededException) OrigErr() error { + return nil +} + +func (s *ServiceQuotaExceededException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ServiceQuotaExceededException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ServiceQuotaExceededException) RequestID() string { + return s.RespMetadata.RequestID +} + // One tag that you want to add to the specified resource. A tag consists of // a Key (a name for the tag) and a Value. type Tag struct { @@ -17184,6 +18397,119 @@ func (s *UpdateIpAddress) SetIpv6(v string) *UpdateIpAddress { return s } +type UpdateOutpostResolverInput struct { + _ struct{} `type:"structure"` + + // A unique string that identifies Resolver on an Outpost. + // + // Id is a required field + Id *string `min:"1" type:"string" required:"true"` + + // The Amazon EC2 instance count for a Resolver on the Outpost. + InstanceCount *int64 `type:"integer"` + + // Name of the Resolver on the Outpost. + Name *string `min:"1" type:"string"` + + // Amazon EC2 instance type. + PreferredInstanceType *string `min:"1" type:"string"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UpdateOutpostResolverInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UpdateOutpostResolverInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateOutpostResolverInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateOutpostResolverInput"} + if s.Id == nil { + invalidParams.Add(request.NewErrParamRequired("Id")) + } + if s.Id != nil && len(*s.Id) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Id", 1)) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + if s.PreferredInstanceType != nil && len(*s.PreferredInstanceType) < 1 { + invalidParams.Add(request.NewErrParamMinLen("PreferredInstanceType", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetId sets the Id field's value. +func (s *UpdateOutpostResolverInput) SetId(v string) *UpdateOutpostResolverInput { + s.Id = &v + return s +} + +// SetInstanceCount sets the InstanceCount field's value. +func (s *UpdateOutpostResolverInput) SetInstanceCount(v int64) *UpdateOutpostResolverInput { + s.InstanceCount = &v + return s +} + +// SetName sets the Name field's value. +func (s *UpdateOutpostResolverInput) SetName(v string) *UpdateOutpostResolverInput { + s.Name = &v + return s +} + +// SetPreferredInstanceType sets the PreferredInstanceType field's value. +func (s *UpdateOutpostResolverInput) SetPreferredInstanceType(v string) *UpdateOutpostResolverInput { + s.PreferredInstanceType = &v + return s +} + +type UpdateOutpostResolverOutput struct { + _ struct{} `type:"structure"` + + // The response to an UpdateOutpostResolver request. + OutpostResolver *OutpostResolver `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UpdateOutpostResolverOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UpdateOutpostResolverOutput) GoString() string { + return s.String() +} + +// SetOutpostResolver sets the OutpostResolver field's value. +func (s *UpdateOutpostResolverOutput) SetOutpostResolver(v *OutpostResolver) *UpdateOutpostResolverOutput { + s.OutpostResolver = v + return s +} + type UpdateResolverConfigInput struct { _ struct{} `type:"structure"` @@ -17401,9 +18727,13 @@ type UpdateResolverEndpointInput struct { // Specifies the endpoint type for what type of IP address the endpoint uses // to forward DNS queries. + // + // Updating to IPV6 type isn't currently supported. ResolverEndpointType *string `type:"string" enum:"ResolverEndpointType"` - // Updates the Resolver endpoint type to IpV4, Ipv6, or dual-stack. + // Specifies the IPv6 address when you update the Resolver endpoint from IPv4 + // to dual-stack. If you don't specify an IPv6 address, one will be automatically + // chosen from your subnet. UpdateIpAddresses []*UpdateIpAddress `type:"list"` } @@ -17895,6 +19225,9 @@ const ( // IpAddressStatusUpdating is a IpAddressStatus enum value IpAddressStatusUpdating = "UPDATING" + + // IpAddressStatusUpdateFailed is a IpAddressStatus enum value + IpAddressStatusUpdateFailed = "UPDATE_FAILED" ) // IpAddressStatus_Values returns all elements of the IpAddressStatus enum @@ -17911,6 +19244,7 @@ func IpAddressStatus_Values() []string { IpAddressStatusDeleting, IpAddressStatusDeleteFailedFasExpired, IpAddressStatusUpdating, + IpAddressStatusUpdateFailed, } } @@ -17930,6 +19264,42 @@ func MutationProtectionStatus_Values() []string { } } +const ( + // OutpostResolverStatusCreating is a OutpostResolverStatus enum value + OutpostResolverStatusCreating = "CREATING" + + // OutpostResolverStatusOperational is a OutpostResolverStatus enum value + OutpostResolverStatusOperational = "OPERATIONAL" + + // OutpostResolverStatusUpdating is a OutpostResolverStatus enum value + OutpostResolverStatusUpdating = "UPDATING" + + // OutpostResolverStatusDeleting is a OutpostResolverStatus enum value + OutpostResolverStatusDeleting = "DELETING" + + // OutpostResolverStatusActionNeeded is a OutpostResolverStatus enum value + OutpostResolverStatusActionNeeded = "ACTION_NEEDED" + + // OutpostResolverStatusFailedCreation is a OutpostResolverStatus enum value + OutpostResolverStatusFailedCreation = "FAILED_CREATION" + + // OutpostResolverStatusFailedDeletion is a OutpostResolverStatus enum value + OutpostResolverStatusFailedDeletion = "FAILED_DELETION" +) + +// OutpostResolverStatus_Values returns all elements of the OutpostResolverStatus enum +func OutpostResolverStatus_Values() []string { + return []string{ + OutpostResolverStatusCreating, + OutpostResolverStatusOperational, + OutpostResolverStatusUpdating, + OutpostResolverStatusDeleting, + OutpostResolverStatusActionNeeded, + OutpostResolverStatusFailedCreation, + OutpostResolverStatusFailedDeletion, + } +} + const ( // ResolverAutodefinedReverseStatusEnabling is a ResolverAutodefinedReverseStatus enum value ResolverAutodefinedReverseStatusEnabling = "ENABLING" diff --git a/service/route53resolver/errors.go b/service/route53resolver/errors.go index 4748f654ac9..80da1900bcc 100644 --- a/service/route53resolver/errors.go +++ b/service/route53resolver/errors.go @@ -89,6 +89,12 @@ const ( // The specified resource isn't available. ErrCodeResourceUnavailableException = "ResourceUnavailableException" + // ErrCodeServiceQuotaExceededException for service response error code + // "ServiceQuotaExceededException". + // + // Fulfilling the request would cause one or more quotas to be exceeded. + ErrCodeServiceQuotaExceededException = "ServiceQuotaExceededException" + // ErrCodeThrottlingException for service response error code // "ThrottlingException". // @@ -123,6 +129,7 @@ var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{ "ResourceInUseException": newErrorResourceInUseException, "ResourceNotFoundException": newErrorResourceNotFoundException, "ResourceUnavailableException": newErrorResourceUnavailableException, + "ServiceQuotaExceededException": newErrorServiceQuotaExceededException, "ThrottlingException": newErrorThrottlingException, "UnknownResourceException": newErrorUnknownResourceException, "ValidationException": newErrorValidationException, diff --git a/service/route53resolver/route53resolveriface/interface.go b/service/route53resolver/route53resolveriface/interface.go index 0bf6fd74255..bd9fb52ae70 100644 --- a/service/route53resolver/route53resolveriface/interface.go +++ b/service/route53resolver/route53resolveriface/interface.go @@ -88,6 +88,10 @@ type Route53ResolverAPI interface { CreateFirewallRuleGroupWithContext(aws.Context, *route53resolver.CreateFirewallRuleGroupInput, ...request.Option) (*route53resolver.CreateFirewallRuleGroupOutput, error) CreateFirewallRuleGroupRequest(*route53resolver.CreateFirewallRuleGroupInput) (*request.Request, *route53resolver.CreateFirewallRuleGroupOutput) + CreateOutpostResolver(*route53resolver.CreateOutpostResolverInput) (*route53resolver.CreateOutpostResolverOutput, error) + CreateOutpostResolverWithContext(aws.Context, *route53resolver.CreateOutpostResolverInput, ...request.Option) (*route53resolver.CreateOutpostResolverOutput, error) + CreateOutpostResolverRequest(*route53resolver.CreateOutpostResolverInput) (*request.Request, *route53resolver.CreateOutpostResolverOutput) + CreateResolverEndpoint(*route53resolver.CreateResolverEndpointInput) (*route53resolver.CreateResolverEndpointOutput, error) CreateResolverEndpointWithContext(aws.Context, *route53resolver.CreateResolverEndpointInput, ...request.Option) (*route53resolver.CreateResolverEndpointOutput, error) CreateResolverEndpointRequest(*route53resolver.CreateResolverEndpointInput) (*request.Request, *route53resolver.CreateResolverEndpointOutput) @@ -112,6 +116,10 @@ type Route53ResolverAPI interface { DeleteFirewallRuleGroupWithContext(aws.Context, *route53resolver.DeleteFirewallRuleGroupInput, ...request.Option) (*route53resolver.DeleteFirewallRuleGroupOutput, error) DeleteFirewallRuleGroupRequest(*route53resolver.DeleteFirewallRuleGroupInput) (*request.Request, *route53resolver.DeleteFirewallRuleGroupOutput) + DeleteOutpostResolver(*route53resolver.DeleteOutpostResolverInput) (*route53resolver.DeleteOutpostResolverOutput, error) + DeleteOutpostResolverWithContext(aws.Context, *route53resolver.DeleteOutpostResolverInput, ...request.Option) (*route53resolver.DeleteOutpostResolverOutput, error) + DeleteOutpostResolverRequest(*route53resolver.DeleteOutpostResolverInput) (*request.Request, *route53resolver.DeleteOutpostResolverOutput) + DeleteResolverEndpoint(*route53resolver.DeleteResolverEndpointInput) (*route53resolver.DeleteResolverEndpointOutput, error) DeleteResolverEndpointWithContext(aws.Context, *route53resolver.DeleteResolverEndpointInput, ...request.Option) (*route53resolver.DeleteResolverEndpointOutput, error) DeleteResolverEndpointRequest(*route53resolver.DeleteResolverEndpointInput) (*request.Request, *route53resolver.DeleteResolverEndpointOutput) @@ -160,6 +168,10 @@ type Route53ResolverAPI interface { GetFirewallRuleGroupPolicyWithContext(aws.Context, *route53resolver.GetFirewallRuleGroupPolicyInput, ...request.Option) (*route53resolver.GetFirewallRuleGroupPolicyOutput, error) GetFirewallRuleGroupPolicyRequest(*route53resolver.GetFirewallRuleGroupPolicyInput) (*request.Request, *route53resolver.GetFirewallRuleGroupPolicyOutput) + GetOutpostResolver(*route53resolver.GetOutpostResolverInput) (*route53resolver.GetOutpostResolverOutput, error) + GetOutpostResolverWithContext(aws.Context, *route53resolver.GetOutpostResolverInput, ...request.Option) (*route53resolver.GetOutpostResolverOutput, error) + GetOutpostResolverRequest(*route53resolver.GetOutpostResolverInput) (*request.Request, *route53resolver.GetOutpostResolverOutput) + GetResolverConfig(*route53resolver.GetResolverConfigInput) (*route53resolver.GetResolverConfigOutput, error) GetResolverConfigWithContext(aws.Context, *route53resolver.GetResolverConfigInput, ...request.Option) (*route53resolver.GetResolverConfigOutput, error) GetResolverConfigRequest(*route53resolver.GetResolverConfigInput) (*request.Request, *route53resolver.GetResolverConfigOutput) @@ -242,6 +254,13 @@ type Route53ResolverAPI interface { ListFirewallRulesPages(*route53resolver.ListFirewallRulesInput, func(*route53resolver.ListFirewallRulesOutput, bool) bool) error ListFirewallRulesPagesWithContext(aws.Context, *route53resolver.ListFirewallRulesInput, func(*route53resolver.ListFirewallRulesOutput, bool) bool, ...request.Option) error + ListOutpostResolvers(*route53resolver.ListOutpostResolversInput) (*route53resolver.ListOutpostResolversOutput, error) + ListOutpostResolversWithContext(aws.Context, *route53resolver.ListOutpostResolversInput, ...request.Option) (*route53resolver.ListOutpostResolversOutput, error) + ListOutpostResolversRequest(*route53resolver.ListOutpostResolversInput) (*request.Request, *route53resolver.ListOutpostResolversOutput) + + ListOutpostResolversPages(*route53resolver.ListOutpostResolversInput, func(*route53resolver.ListOutpostResolversOutput, bool) bool) error + ListOutpostResolversPagesWithContext(aws.Context, *route53resolver.ListOutpostResolversInput, func(*route53resolver.ListOutpostResolversOutput, bool) bool, ...request.Option) error + ListResolverConfigs(*route53resolver.ListResolverConfigsInput) (*route53resolver.ListResolverConfigsOutput, error) ListResolverConfigsWithContext(aws.Context, *route53resolver.ListResolverConfigsInput, ...request.Option) (*route53resolver.ListResolverConfigsOutput, error) ListResolverConfigsRequest(*route53resolver.ListResolverConfigsInput) (*request.Request, *route53resolver.ListResolverConfigsOutput) @@ -341,6 +360,10 @@ type Route53ResolverAPI interface { UpdateFirewallRuleGroupAssociationWithContext(aws.Context, *route53resolver.UpdateFirewallRuleGroupAssociationInput, ...request.Option) (*route53resolver.UpdateFirewallRuleGroupAssociationOutput, error) UpdateFirewallRuleGroupAssociationRequest(*route53resolver.UpdateFirewallRuleGroupAssociationInput) (*request.Request, *route53resolver.UpdateFirewallRuleGroupAssociationOutput) + UpdateOutpostResolver(*route53resolver.UpdateOutpostResolverInput) (*route53resolver.UpdateOutpostResolverOutput, error) + UpdateOutpostResolverWithContext(aws.Context, *route53resolver.UpdateOutpostResolverInput, ...request.Option) (*route53resolver.UpdateOutpostResolverOutput, error) + UpdateOutpostResolverRequest(*route53resolver.UpdateOutpostResolverInput) (*request.Request, *route53resolver.UpdateOutpostResolverOutput) + UpdateResolverConfig(*route53resolver.UpdateResolverConfigInput) (*route53resolver.UpdateResolverConfigOutput, error) UpdateResolverConfigWithContext(aws.Context, *route53resolver.UpdateResolverConfigInput, ...request.Option) (*route53resolver.UpdateResolverConfigOutput, error) UpdateResolverConfigRequest(*route53resolver.UpdateResolverConfigInput) (*request.Request, *route53resolver.UpdateResolverConfigOutput) diff --git a/service/s3/examples_test.go b/service/s3/examples_test.go index 9a1147c1419..7c8236db113 100644 --- a/service/s3/examples_test.go +++ b/service/s3/examples_test.go @@ -1748,15 +1748,16 @@ func ExampleS3_PutBucketWebsite_shared00() { fmt.Println(result) } -// To create an object. -// The following example creates an object. If the bucket is versioning enabled, S3 -// returns version ID in response. +// To upload an object +// The following example uploads an object to a versioning-enabled bucket. The source +// file is specified using Windows file syntax. S3 returns VersionId of the newly created +// object. func ExampleS3_PutObject_shared00() { svc := s3.New(session.New()) input := &s3.PutObjectInput{ - Body: aws.ReadSeekCloser(strings.NewReader("filetoupload")), + Body: aws.ReadSeekCloser(strings.NewReader("HappyFace.jpg")), Bucket: aws.String("examplebucket"), - Key: aws.String("objectkey"), + Key: aws.String("HappyFace.jpg"), } result, err := svc.PutObject(input) @@ -1810,16 +1811,17 @@ func ExampleS3_PutObject_shared01() { fmt.Println(result) } -// To upload an object -// The following example uploads an object to a versioning-enabled bucket. The source -// file is specified using Windows file syntax. S3 returns VersionId of the newly created -// object. +// To upload an object (specify optional headers) +// The following example uploads an object. The request specifies optional request headers +// to directs S3 to use specific storage class and use server-side encryption. func ExampleS3_PutObject_shared02() { svc := s3.New(session.New()) input := &s3.PutObjectInput{ - Body: aws.ReadSeekCloser(strings.NewReader("HappyFace.jpg")), - Bucket: aws.String("examplebucket"), - Key: aws.String("HappyFace.jpg"), + Body: aws.ReadSeekCloser(strings.NewReader("HappyFace.jpg")), + Bucket: aws.String("examplebucket"), + Key: aws.String("HappyFace.jpg"), + ServerSideEncryption: aws.String("AES256"), + StorageClass: aws.String("STANDARD_IA"), } result, err := svc.PutObject(input) @@ -1840,17 +1842,15 @@ func ExampleS3_PutObject_shared02() { fmt.Println(result) } -// To upload an object and specify canned ACL. -// The following example uploads and object. The request specifies optional canned ACL -// (access control list) to all READ access to authenticated users. If the bucket is -// versioning enabled, S3 returns version ID in response. +// To create an object. +// The following example creates an object. If the bucket is versioning enabled, S3 +// returns version ID in response. func ExampleS3_PutObject_shared03() { svc := s3.New(session.New()) input := &s3.PutObjectInput{ - ACL: aws.String("authenticated-read"), Body: aws.ReadSeekCloser(strings.NewReader("filetoupload")), Bucket: aws.String("examplebucket"), - Key: aws.String("exampleobject"), + Key: aws.String("objectkey"), } result, err := svc.PutObject(input) @@ -1871,17 +1871,18 @@ func ExampleS3_PutObject_shared03() { fmt.Println(result) } -// To upload an object (specify optional headers) -// The following example uploads an object. The request specifies optional request headers -// to directs S3 to use specific storage class and use server-side encryption. +// To upload an object and specify server-side encryption and object tags +// The following example uploads an object. The request specifies the optional server-side +// encryption option. The request also specifies optional object tags. If the bucket +// is versioning enabled, S3 returns version ID in response. func ExampleS3_PutObject_shared04() { svc := s3.New(session.New()) input := &s3.PutObjectInput{ - Body: aws.ReadSeekCloser(strings.NewReader("HappyFace.jpg")), + Body: aws.ReadSeekCloser(strings.NewReader("filetoupload")), Bucket: aws.String("examplebucket"), - Key: aws.String("HappyFace.jpg"), + Key: aws.String("exampleobject"), ServerSideEncryption: aws.String("AES256"), - StorageClass: aws.String("STANDARD_IA"), + Tagging: aws.String("key1=value1&key2=value2"), } result, err := svc.PutObject(input) @@ -1932,18 +1933,17 @@ func ExampleS3_PutObject_shared05() { fmt.Println(result) } -// To upload an object and specify server-side encryption and object tags -// The following example uploads an object. The request specifies the optional server-side -// encryption option. The request also specifies optional object tags. If the bucket -// is versioning enabled, S3 returns version ID in response. +// To upload an object and specify canned ACL. +// The following example uploads and object. The request specifies optional canned ACL +// (access control list) to all READ access to authenticated users. If the bucket is +// versioning enabled, S3 returns version ID in response. func ExampleS3_PutObject_shared06() { svc := s3.New(session.New()) input := &s3.PutObjectInput{ - Body: aws.ReadSeekCloser(strings.NewReader("filetoupload")), - Bucket: aws.String("examplebucket"), - Key: aws.String("exampleobject"), - ServerSideEncryption: aws.String("AES256"), - Tagging: aws.String("key1=value1&key2=value2"), + ACL: aws.String("authenticated-read"), + Body: aws.ReadSeekCloser(strings.NewReader("filetoupload")), + Bucket: aws.String("examplebucket"), + Key: aws.String("exampleobject"), } result, err := svc.PutObject(input) diff --git a/service/sagemaker/api.go b/service/sagemaker/api.go index 151d08829ab..567f8fcf304 100644 --- a/service/sagemaker/api.go +++ b/service/sagemaker/api.go @@ -21764,6 +21764,137 @@ func (c *SageMaker) ListProjectsPagesWithContext(ctx aws.Context, input *ListPro return p.Err() } +const opListResourceCatalogs = "ListResourceCatalogs" + +// ListResourceCatalogsRequest generates a "aws/request.Request" representing the +// client's request for the ListResourceCatalogs 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 ListResourceCatalogs for more information on using the ListResourceCatalogs +// 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 ListResourceCatalogsRequest method. +// req, resp := client.ListResourceCatalogsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/ListResourceCatalogs +func (c *SageMaker) ListResourceCatalogsRequest(input *ListResourceCatalogsInput) (req *request.Request, output *ListResourceCatalogsOutput) { + op := &request.Operation{ + Name: opListResourceCatalogs, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListResourceCatalogsInput{} + } + + output = &ListResourceCatalogsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListResourceCatalogs API operation for Amazon SageMaker Service. +// +// Lists Amazon SageMaker Catalogs based on given filters and orders. The maximum +// number of ResourceCatalogs viewable is 1000. +// +// 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 SageMaker Service's +// API operation ListResourceCatalogs for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/ListResourceCatalogs +func (c *SageMaker) ListResourceCatalogs(input *ListResourceCatalogsInput) (*ListResourceCatalogsOutput, error) { + req, out := c.ListResourceCatalogsRequest(input) + return out, req.Send() +} + +// ListResourceCatalogsWithContext is the same as ListResourceCatalogs with the addition of +// the ability to pass a context and additional request options. +// +// See ListResourceCatalogs 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 *SageMaker) ListResourceCatalogsWithContext(ctx aws.Context, input *ListResourceCatalogsInput, opts ...request.Option) (*ListResourceCatalogsOutput, error) { + req, out := c.ListResourceCatalogsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListResourceCatalogsPages iterates over the pages of a ListResourceCatalogs operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListResourceCatalogs 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 ListResourceCatalogs operation. +// pageNum := 0 +// err := client.ListResourceCatalogsPages(params, +// func(page *sagemaker.ListResourceCatalogsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +func (c *SageMaker) ListResourceCatalogsPages(input *ListResourceCatalogsInput, fn func(*ListResourceCatalogsOutput, bool) bool) error { + return c.ListResourceCatalogsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListResourceCatalogsPagesWithContext same as ListResourceCatalogsPages 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 *SageMaker) ListResourceCatalogsPagesWithContext(ctx aws.Context, input *ListResourceCatalogsInput, fn func(*ListResourceCatalogsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListResourceCatalogsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListResourceCatalogsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListResourceCatalogsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opListSpaces = "ListSpaces" // ListSpacesRequest generates a "aws/request.Request" representing the @@ -26789,7 +26920,19 @@ func (c *SageMaker) UpdateFeatureGroupRequest(input *UpdateFeatureGroupInput) (r // UpdateFeatureGroup API operation for Amazon SageMaker Service. // -// Updates the feature group. +// Updates the feature group by either adding features or updating the online +// store configuration. Use one of the following request parameters at a time +// while using the UpdateFeatureGroup API. +// +// You can add features for your feature group using the FeatureAdditions request +// parameter. Features cannot be removed from a feature group. +// +// You can update the online store configuration by using the OnlineStoreConfig +// request parameter. If a TtlDuration is specified, the default TtlDuration +// applies for all records added to the feature group after the feature group +// is updated. If a record level TtlDuration exists from using the PutRecord +// API, the record level TtlDuration applies to that record instead of the default +// TtlDuration. // // 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 @@ -56057,7 +56200,7 @@ func (s *DescribeExperimentOutput) SetSource(v *ExperimentSource) *DescribeExper type DescribeFeatureGroupInput struct { _ struct{} `type:"structure"` - // The name of the FeatureGroup you want described. + // The name or Amazon Resource Name (ARN) of the FeatureGroup you want described. // // FeatureGroupName is a required field FeatureGroupName *string `min:"1" type:"string" required:"true"` @@ -56329,7 +56472,8 @@ func (s *DescribeFeatureGroupOutput) SetRoleArn(v string) *DescribeFeatureGroupO type DescribeFeatureMetadataInput struct { _ struct{} `type:"structure"` - // The name of the feature group containing the feature. + // The name or Amazon Resource Name (ARN) of the feature group containing the + // feature. // // FeatureGroupName is a required field FeatureGroupName *string `min:"1" type:"string" required:"true"` @@ -67854,7 +67998,7 @@ func (s *FeatureGroup) SetTags(v []*Tag) *FeatureGroup { return s } -// The name, Arn, CreationTime, FeatureGroup values, LastUpdatedTime and EnableOnlineStorage +// The name, ARN, CreationTime, FeatureGroup values, LastUpdatedTime and EnableOnlineStorage // status of a FeatureGroup. type FeatureGroupSummary struct { _ struct{} `type:"structure"` @@ -85445,6 +85589,150 @@ func (s *ListProjectsOutput) SetProjectSummaryList(v []*ProjectSummary) *ListPro return s } +type ListResourceCatalogsInput struct { + _ struct{} `type:"structure"` + + // Use this parameter to search for ResourceCatalogs created after a specific + // date and time. + CreationTimeAfter *time.Time `type:"timestamp"` + + // Use this parameter to search for ResourceCatalogs created before a specific + // date and time. + CreationTimeBefore *time.Time `type:"timestamp"` + + // The maximum number of results returned by ListResourceCatalogs. + MaxResults *int64 `min:"1" type:"integer"` + + // A string that partially matches one or more ResourceCatalogs names. Filters + // ResourceCatalog by name. + NameContains *string `min:"1" type:"string"` + + // A token to resume pagination of ListResourceCatalogs results. + NextToken *string `type:"string"` + + // The value on which the resource catalog list is sorted. + SortBy *string `type:"string" enum:"ResourceCatalogSortBy"` + + // The order in which the resource catalogs are listed. + SortOrder *string `type:"string" enum:"ResourceCatalogSortOrder"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListResourceCatalogsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListResourceCatalogsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListResourceCatalogsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListResourceCatalogsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.NameContains != nil && len(*s.NameContains) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NameContains", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetCreationTimeAfter sets the CreationTimeAfter field's value. +func (s *ListResourceCatalogsInput) SetCreationTimeAfter(v time.Time) *ListResourceCatalogsInput { + s.CreationTimeAfter = &v + return s +} + +// SetCreationTimeBefore sets the CreationTimeBefore field's value. +func (s *ListResourceCatalogsInput) SetCreationTimeBefore(v time.Time) *ListResourceCatalogsInput { + s.CreationTimeBefore = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListResourceCatalogsInput) SetMaxResults(v int64) *ListResourceCatalogsInput { + s.MaxResults = &v + return s +} + +// SetNameContains sets the NameContains field's value. +func (s *ListResourceCatalogsInput) SetNameContains(v string) *ListResourceCatalogsInput { + s.NameContains = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListResourceCatalogsInput) SetNextToken(v string) *ListResourceCatalogsInput { + s.NextToken = &v + return s +} + +// SetSortBy sets the SortBy field's value. +func (s *ListResourceCatalogsInput) SetSortBy(v string) *ListResourceCatalogsInput { + s.SortBy = &v + return s +} + +// SetSortOrder sets the SortOrder field's value. +func (s *ListResourceCatalogsInput) SetSortOrder(v string) *ListResourceCatalogsInput { + s.SortOrder = &v + return s +} + +type ListResourceCatalogsOutput struct { + _ struct{} `type:"structure"` + + // A token to resume pagination of ListResourceCatalogs results. + NextToken *string `type:"string"` + + // A list of the requested ResourceCatalogs. + ResourceCatalogs []*ResourceCatalog `type:"list"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListResourceCatalogsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListResourceCatalogsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListResourceCatalogsOutput) SetNextToken(v string) *ListResourceCatalogsOutput { + s.NextToken = &v + return s +} + +// SetResourceCatalogs sets the ResourceCatalogs field's value. +func (s *ListResourceCatalogsOutput) SetResourceCatalogs(v []*ResourceCatalog) *ListResourceCatalogsOutput { + s.ResourceCatalogs = v + return s +} + type ListSpacesInput struct { _ struct{} `type:"structure"` @@ -101640,6 +101928,77 @@ func (s *ResolvedAttributes) SetProblemType(v string) *ResolvedAttributes { return s } +// A resource catalog containing all of the resources of a specific resource +// type within a resource owner account. For an example on sharing the Amazon +// SageMaker Feature Store DefaultFeatureGroupCatalog, see Share Amazon SageMaker +// Catalog resource type (https://docs.aws.amazon.com/sagemaker/latest/APIReference/feature-store-cross-account-discoverability-share-sagemaker-catalog.html) +// in the Amazon SageMaker Developer Guide. +type ResourceCatalog struct { + _ struct{} `type:"structure"` + + // The time the ResourceCatalog was created. + // + // CreationTime is a required field + CreationTime *time.Time `type:"timestamp" required:"true"` + + // A free form description of the ResourceCatalog. + // + // Description is a required field + Description *string `type:"string" required:"true"` + + // The Amazon Resource Name (ARN) of the ResourceCatalog. + // + // ResourceCatalogArn is a required field + ResourceCatalogArn *string `type:"string" required:"true"` + + // The name of the ResourceCatalog. + // + // ResourceCatalogName is a required field + ResourceCatalogName *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ResourceCatalog) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ResourceCatalog) GoString() string { + return s.String() +} + +// SetCreationTime sets the CreationTime field's value. +func (s *ResourceCatalog) SetCreationTime(v time.Time) *ResourceCatalog { + s.CreationTime = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *ResourceCatalog) SetDescription(v string) *ResourceCatalog { + s.Description = &v + return s +} + +// SetResourceCatalogArn sets the ResourceCatalogArn field's value. +func (s *ResourceCatalog) SetResourceCatalogArn(v string) *ResourceCatalog { + s.ResourceCatalogArn = &v + return s +} + +// SetResourceCatalogName sets the ResourceCatalogName field's value. +func (s *ResourceCatalog) SetResourceCatalogName(v string) *ResourceCatalog { + s.ResourceCatalogName = &v + return s +} + // Describes the resources, including machine learning (ML) compute instances // and ML storage volumes, to use for model training. type ResourceConfig struct { @@ -103042,6 +103401,16 @@ func (s *SearchExpression) SetSubExpressions(v []*SearchExpression) *SearchExpre type SearchInput struct { _ struct{} `type:"structure"` + // A cross account filter option. When the value is "CrossAccount" the search + // results will only include resources made discoverable to you from other accounts. + // When the value is "SameAccount" or null the search results will only include + // resources from your account. Default is null. For more information on searching + // for resources made discoverable to your account, see Search discoverable + // resources (https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-cross-account-discoverability-use.html) + // in the SageMaker Developer Guide. The maximum number of ResourceCatalogs + // viewable is 1000. + CrossAccountFilterOption *string `type:"string" enum:"CrossAccountFilterOption"` + // The maximum number of results to return. MaxResults *int64 `min:"1" type:"integer"` @@ -103113,6 +103482,12 @@ func (s *SearchInput) Validate() error { return nil } +// SetCrossAccountFilterOption sets the CrossAccountFilterOption field's value. +func (s *SearchInput) SetCrossAccountFilterOption(v string) *SearchInput { + s.CrossAccountFilterOption = &v + return s +} + // SetMaxResults sets the MaxResults field's value. func (s *SearchInput) SetMaxResults(v int64) *SearchInput { s.MaxResults = &v @@ -112515,7 +112890,7 @@ type UpdateFeatureGroupInput struct { // feature group. FeatureAdditions []*FeatureDefinition `min:"1" type:"list"` - // The name of the feature group that you're updating. + // The name or Amazon Resource Name (ARN) of the feature group that you're updating. // // FeatureGroupName is a required field FeatureGroupName *string `min:"1" type:"string" required:"true"` @@ -112633,7 +113008,8 @@ type UpdateFeatureMetadataInput struct { // A description that you can write to better describe the feature. Description *string `type:"string"` - // The name of the feature group containing the feature that you're updating. + // The name or Amazon Resource Name (ARN) of the feature group containing the + // feature that you're updating. // // FeatureGroupName is a required field FeatureGroupName *string `min:"1" type:"string" required:"true"` @@ -118209,6 +118585,22 @@ func ContentClassifier_Values() []string { } } +const ( + // CrossAccountFilterOptionSameAccount is a CrossAccountFilterOption enum value + CrossAccountFilterOptionSameAccount = "SameAccount" + + // CrossAccountFilterOptionCrossAccount is a CrossAccountFilterOption enum value + CrossAccountFilterOptionCrossAccount = "CrossAccount" +) + +// CrossAccountFilterOption_Values returns all elements of the CrossAccountFilterOption enum +func CrossAccountFilterOption_Values() []string { + return []string{ + CrossAccountFilterOptionSameAccount, + CrossAccountFilterOptionCrossAccount, + } +} + const ( // DataDistributionTypeFullyReplicated is a DataDistributionType enum value DataDistributionTypeFullyReplicated = "FullyReplicated" @@ -122118,6 +122510,34 @@ func RepositoryAccessMode_Values() []string { } } +const ( + // ResourceCatalogSortByCreationTime is a ResourceCatalogSortBy enum value + ResourceCatalogSortByCreationTime = "CreationTime" +) + +// ResourceCatalogSortBy_Values returns all elements of the ResourceCatalogSortBy enum +func ResourceCatalogSortBy_Values() []string { + return []string{ + ResourceCatalogSortByCreationTime, + } +} + +const ( + // ResourceCatalogSortOrderAscending is a ResourceCatalogSortOrder enum value + ResourceCatalogSortOrderAscending = "Ascending" + + // ResourceCatalogSortOrderDescending is a ResourceCatalogSortOrder enum value + ResourceCatalogSortOrderDescending = "Descending" +) + +// ResourceCatalogSortOrder_Values returns all elements of the ResourceCatalogSortOrder enum +func ResourceCatalogSortOrder_Values() []string { + return []string{ + ResourceCatalogSortOrderAscending, + ResourceCatalogSortOrderDescending, + } +} + const ( // ResourceTypeTrainingJob is a ResourceType enum value ResourceTypeTrainingJob = "TrainingJob" diff --git a/service/sagemaker/sagemakeriface/interface.go b/service/sagemaker/sagemakeriface/interface.go index 163ca4f02c7..eab005b24a3 100644 --- a/service/sagemaker/sagemakeriface/interface.go +++ b/service/sagemaker/sagemakeriface/interface.go @@ -1141,6 +1141,13 @@ type SageMakerAPI interface { ListProjectsPages(*sagemaker.ListProjectsInput, func(*sagemaker.ListProjectsOutput, bool) bool) error ListProjectsPagesWithContext(aws.Context, *sagemaker.ListProjectsInput, func(*sagemaker.ListProjectsOutput, bool) bool, ...request.Option) error + ListResourceCatalogs(*sagemaker.ListResourceCatalogsInput) (*sagemaker.ListResourceCatalogsOutput, error) + ListResourceCatalogsWithContext(aws.Context, *sagemaker.ListResourceCatalogsInput, ...request.Option) (*sagemaker.ListResourceCatalogsOutput, error) + ListResourceCatalogsRequest(*sagemaker.ListResourceCatalogsInput) (*request.Request, *sagemaker.ListResourceCatalogsOutput) + + ListResourceCatalogsPages(*sagemaker.ListResourceCatalogsInput, func(*sagemaker.ListResourceCatalogsOutput, bool) bool) error + ListResourceCatalogsPagesWithContext(aws.Context, *sagemaker.ListResourceCatalogsInput, func(*sagemaker.ListResourceCatalogsOutput, bool) bool, ...request.Option) error + ListSpaces(*sagemaker.ListSpacesInput) (*sagemaker.ListSpacesOutput, error) ListSpacesWithContext(aws.Context, *sagemaker.ListSpacesInput, ...request.Option) (*sagemaker.ListSpacesOutput, error) ListSpacesRequest(*sagemaker.ListSpacesInput) (*request.Request, *sagemaker.ListSpacesOutput) diff --git a/service/sagemakerfeaturestoreruntime/api.go b/service/sagemakerfeaturestoreruntime/api.go index ef0e75b9078..4e1c78dff8e 100644 --- a/service/sagemakerfeaturestoreruntime/api.go +++ b/service/sagemakerfeaturestoreruntime/api.go @@ -346,11 +346,22 @@ func (c *SageMakerFeatureStoreRuntime) PutRecordRequest(input *PutRecordInput) ( // PutRecord API operation for Amazon SageMaker Feature Store Runtime. // -// Used for data ingestion into the FeatureStore. The PutRecord API writes to -// both the OnlineStore and OfflineStore. If the record is the latest record -// for the recordIdentifier, the record is written to both the OnlineStore and -// OfflineStore. If the record is a historic record, it is written only to the -// OfflineStore. +// The PutRecord API is used to ingest a list of Records into your feature group. +// +// If a new record’s EventTime is greater, the new record is written to both +// the OnlineStore and OfflineStore. Otherwise, the record is a historic record +// and it is written only to the OfflineStore. +// +// You can specify the ingestion to be applied to the OnlineStore, OfflineStore, +// or both by using the TargetStores request parameter. +// +// You can set the ingested record to expire at a given time to live (TTL) duration +// after the record’s event time, ExpiresAt = EventTime + TtlDuration, by +// specifying the TtlDuration parameter. A record level TtlDuration is set when +// specifying the TtlDuration parameter using the PutRecord API call. If the +// input TtlDuration is null or unspecified, TtlDuration is set to the default +// feature group level TtlDuration. A record level TtlDuration supersedes the +// group level TtlDuration. // // 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 @@ -535,7 +546,8 @@ func (s *BatchGetRecordError) SetRecordIdentifierValueAsString(v string) *BatchG type BatchGetRecordIdentifier struct { _ struct{} `type:"structure"` - // A FeatureGroupName containing Records you are retrieving in a batch. + // The name or Amazon Resource Name (ARN) of the FeatureGroup containing the + // records you are retrieving in a batch. // // FeatureGroupName is a required field FeatureGroupName *string `min:"1" type:"string" required:"true"` @@ -619,8 +631,9 @@ type BatchGetRecordInput struct { // will return null. ExpirationTimeResponse *string `type:"string" enum:"ExpirationTimeResponse"` - // A list of FeatureGroup names, with their corresponding RecordIdentifier value, - // and Feature name that have been requested to be retrieved in batch. + // A list containing the name or Amazon Resource Name (ARN) of the FeatureGroup, + // the list of names of Features to be retrieved, and the corresponding RecordIdentifier + // values as strings. // // Identifiers is a required field Identifiers []*BatchGetRecordIdentifier `min:"1" type:"list" required:"true"` @@ -738,7 +751,7 @@ func (s *BatchGetRecordOutput) SetUnprocessedIdentifiers(v []*BatchGetRecordIden return s } -// The output of Records that have been retrieved in a batch. +// The output of records that have been retrieved in a batch. type BatchGetRecordResultDetail struct { _ struct{} `type:"structure"` @@ -816,7 +829,8 @@ type DeleteRecordInput struct { // EventTime is a required field EventTime *string `location:"querystring" locationName:"EventTime" type:"string" required:"true"` - // The name of the feature group to delete the record from. + // The name or Amazon Resource Name (ARN) of the feature group to delete the + // record from. // // FeatureGroupName is a required field FeatureGroupName *string `location:"uri" locationName:"FeatureGroupName" min:"1" type:"string" required:"true"` @@ -997,12 +1011,13 @@ func (s *FeatureValue) SetValueAsString(v string) *FeatureValue { type GetRecordInput struct { _ struct{} `type:"structure" nopayload:"true"` - // Parameter to request ExpiresAt in response. If Enabled, BatchGetRecord will - // return the value of ExpiresAt, if it is not null. If Disabled and null, BatchGetRecord + // Parameter to request ExpiresAt in response. If Enabled, GetRecord will return + // the value of ExpiresAt, if it is not null. If Disabled and null, GetRecord // will return null. ExpirationTimeResponse *string `location:"querystring" locationName:"ExpirationTimeResponse" type:"string" enum:"ExpirationTimeResponse"` - // The name of the feature group from which you want to retrieve a record. + // The name or Amazon Resource Name (ARN) of the feature group from which you + // want to retrieve a record. // // FeatureGroupName is a required field FeatureGroupName *string `location:"uri" locationName:"FeatureGroupName" min:"1" type:"string" required:"true"` @@ -1190,7 +1205,8 @@ func (s *InternalFailure) RequestID() string { type PutRecordInput struct { _ struct{} `type:"structure"` - // The name of the feature group that you want to insert the record into. + // The name or Amazon Resource Name (ARN) of the feature group that you want + // to insert the record into. // // FeatureGroupName is a required field FeatureGroupName *string `location:"uri" locationName:"FeatureGroupName" min:"1" type:"string" required:"true"` diff --git a/service/securitylake/api.go b/service/securitylake/api.go index d8196f827ab..de438ab879d 100644 --- a/service/securitylake/api.go +++ b/service/securitylake/api.go @@ -61,7 +61,7 @@ func (c *SecurityLake) CreateAwsLogSourceRequest(input *CreateAwsLogSourceInput) // Regions, based on the parameters you specify. You can choose any source type // in any Region for either accounts that are part of a trusted organization // or standalone accounts. Once you add an Amazon Web Service as a source, Security -// Lake starts collecting logs and events from it, +// Lake starts collecting logs and events from it. // // You can use this API only to enable natively supported Amazon Web Services // as a source. Use CreateCustomLogSource to enable data collection from a custom @@ -280,13 +280,13 @@ func (c *SecurityLake) CreateDataLakeRequest(input *CreateDataLakeInput) (req *r // // Initializes an Amazon Security Lake instance with the provided (or default) // configuration. You can enable Security Lake in Amazon Web Services Regions -// with customized settings before enabling log collection in Regions. By default, -// the CreateDataLake Security Lake in all Regions. To specify particular Regions, -// configure these Regions using the configurations parameter. If you have already -// enabled Security Lake in a Region when you call this command, the command -// will update the Region if you provide new configuration parameters. If you -// have not already enabled Security Lake in the Region when you call this API, -// it will set up the data lake in the Region with the specified configurations. +// with customized settings before enabling log collection in Regions. To specify +// particular Regions, configure these Regions using the configurations parameter. +// If you have already enabled Security Lake in a Region when you call this +// command, the command will update the Region if you provide new configuration +// parameters. If you have not already enabled Security Lake in the Region when +// you call this API, it will set up the data lake in the Region with the specified +// configurations. // // When you enable Security Lake, it starts ingesting security data after the // CreateAwsLogSource call. This includes ingesting security data from sources, @@ -1253,12 +1253,11 @@ func (c *SecurityLake) DeleteDataLakeOrganizationConfigurationRequest(input *Del // DeleteDataLakeOrganizationConfiguration API operation for Amazon Security Lake. // -// Removes automatic the enablement of configuration settings for new member -// accounts (but retains the settings for the delegated administrator) from -// Amazon Security Lake. You must run this API using the credentials of the -// delegated administrator. When you run this API, new member accounts that -// are added after the organization enables Security Lake won't contribute to -// the data lake. +// Turns off automatic enablement of Amazon Security Lake for member accounts +// that are added to an organization in Organizations. Only the delegated Security +// Lake administrator for an organization can perform this operation. If the +// delegated Security Lake administrator performs this operation, new member +// accounts won't automatically contribute data to the data lake. // // 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 @@ -2318,8 +2317,8 @@ func (c *SecurityLake) ListDataLakesRequest(input *ListDataLakesInput) (req *req // ListDataLakes API operation for Amazon Security Lake. // // Retrieves the Amazon Security Lake configuration object for the specified -// Amazon Web Services account ID. You can use the ListDataLakes API to know -// whether Security Lake is enabled for any region. +// Amazon Web Services Regions. You can use this operation to determine whether +// Security Lake is enabled for a Region. // // 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 @@ -2701,6 +2700,111 @@ func (c *SecurityLake) ListSubscribersPagesWithContext(ctx aws.Context, input *L return p.Err() } +const opListTagsForResource = "ListTagsForResource" + +// ListTagsForResourceRequest generates a "aws/request.Request" representing the +// client's request for the ListTagsForResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListTagsForResource for more information on using the ListTagsForResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// // Example sending a request using the ListTagsForResourceRequest method. +// req, resp := client.ListTagsForResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/securitylake-2018-05-10/ListTagsForResource +func (c *SecurityLake) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) { + op := &request.Operation{ + Name: opListTagsForResource, + HTTPMethod: "GET", + HTTPPath: "/v1/tags/{resourceArn}", + } + + if input == nil { + input = &ListTagsForResourceInput{} + } + + output = &ListTagsForResourceOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListTagsForResource API operation for Amazon Security Lake. +// +// Retrieves the tags (keys and values) that are associated with an Amazon Security +// Lake resource: a subscriber, or the data lake configuration for your Amazon +// Web Services account in a particular Amazon Web Services Region. +// +// 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 Security Lake's +// API operation ListTagsForResource for usage and error information. +// +// Returned Error Types: +// +// - BadRequestException +// The request is malformed or contains an error such as an invalid parameter +// value or a missing required parameter. +// +// - ResourceNotFoundException +// The resource could not be found. +// +// - InternalServerException +// Internal service exceptions are sometimes caused by transient issues. Before +// you start troubleshooting, perform the operation again. +// +// - AccessDeniedException +// You do not have sufficient access to perform this action. Access denied errors +// appear when Amazon Security Lake explicitly or implicitly denies an authorization +// request. An explicit denial occurs when a policy contains a Deny statement +// for the specific Amazon Web Services action. An implicit denial occurs when +// there is no applicable Deny statement and also no applicable Allow statement. +// +// - ConflictException +// Occurs when a conflict with a previous successful write is detected. This +// generally occurs when the previous write did not have time to propagate to +// the host serving the current request. A retry (with appropriate backoff logic) +// is the recommended response to this exception. +// +// - ThrottlingException +// The limit on the number of requests per second was exceeded. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/securitylake-2018-05-10/ListTagsForResource +func (c *SecurityLake) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) { + req, out := c.ListTagsForResourceRequest(input) + return out, req.Send() +} + +// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of +// the ability to pass a context and additional request options. +// +// See ListTagsForResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SecurityLake) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) { + req, out := c.ListTagsForResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opRegisterDataLakeDelegatedAdministrator = "RegisterDataLakeDelegatedAdministrator" // RegisterDataLakeDelegatedAdministratorRequest generates a "aws/request.Request" representing the @@ -2808,6 +2912,226 @@ func (c *SecurityLake) RegisterDataLakeDelegatedAdministratorWithContext(ctx aws return out, req.Send() } +const opTagResource = "TagResource" + +// TagResourceRequest generates a "aws/request.Request" representing the +// client's request for the TagResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagResource for more information on using the TagResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// // Example sending a request using the TagResourceRequest method. +// req, resp := client.TagResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/securitylake-2018-05-10/TagResource +func (c *SecurityLake) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) { + op := &request.Operation{ + Name: opTagResource, + HTTPMethod: "POST", + HTTPPath: "/v1/tags/{resourceArn}", + } + + if input == nil { + input = &TagResourceInput{} + } + + output = &TagResourceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagResource API operation for Amazon Security Lake. +// +// Adds or updates one or more tags that are associated with an Amazon Security +// Lake resource: a subscriber, or the data lake configuration for your Amazon +// Web Services account in a particular Amazon Web Services Region. A tag is +// a label that you can define and associate with Amazon Web Services resources. +// Each tag consists of a required tag key and an associated tag value. A tag +// key is a general label that acts as a category for a more specific tag value. +// A tag value acts as a descriptor for a tag key. Tags can help you identify, +// categorize, and manage resources in different ways, such as by owner, environment, +// or other criteria. For more information, see Tagging Amazon Security Lake +// resources (https://docs.aws.amazon.com/security-lake/latest/userguide/tagging-resources.html) +// in the Amazon Security Lake User Guide. +// +// 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 Security Lake's +// API operation TagResource for usage and error information. +// +// Returned Error Types: +// +// - BadRequestException +// The request is malformed or contains an error such as an invalid parameter +// value or a missing required parameter. +// +// - ResourceNotFoundException +// The resource could not be found. +// +// - InternalServerException +// Internal service exceptions are sometimes caused by transient issues. Before +// you start troubleshooting, perform the operation again. +// +// - AccessDeniedException +// You do not have sufficient access to perform this action. Access denied errors +// appear when Amazon Security Lake explicitly or implicitly denies an authorization +// request. An explicit denial occurs when a policy contains a Deny statement +// for the specific Amazon Web Services action. An implicit denial occurs when +// there is no applicable Deny statement and also no applicable Allow statement. +// +// - ConflictException +// Occurs when a conflict with a previous successful write is detected. This +// generally occurs when the previous write did not have time to propagate to +// the host serving the current request. A retry (with appropriate backoff logic) +// is the recommended response to this exception. +// +// - ThrottlingException +// The limit on the number of requests per second was exceeded. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/securitylake-2018-05-10/TagResource +func (c *SecurityLake) TagResource(input *TagResourceInput) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + return out, req.Send() +} + +// TagResourceWithContext is the same as TagResource with the addition of +// the ability to pass a context and additional request options. +// +// See TagResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SecurityLake) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUntagResource = "UntagResource" + +// UntagResourceRequest generates a "aws/request.Request" representing the +// client's request for the UntagResource operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagResource for more information on using the UntagResource +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// // Example sending a request using the UntagResourceRequest method. +// req, resp := client.UntagResourceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/securitylake-2018-05-10/UntagResource +func (c *SecurityLake) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) { + op := &request.Operation{ + Name: opUntagResource, + HTTPMethod: "DELETE", + HTTPPath: "/v1/tags/{resourceArn}", + } + + if input == nil { + input = &UntagResourceInput{} + } + + output = &UntagResourceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagResource API operation for Amazon Security Lake. +// +// Removes one or more tags (keys and values) from an Amazon Security Lake resource: +// a subscriber, or the data lake configuration for your Amazon Web Services +// account in a particular Amazon Web Services Region. +// +// 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 Security Lake's +// API operation UntagResource for usage and error information. +// +// Returned Error Types: +// +// - BadRequestException +// The request is malformed or contains an error such as an invalid parameter +// value or a missing required parameter. +// +// - ResourceNotFoundException +// The resource could not be found. +// +// - InternalServerException +// Internal service exceptions are sometimes caused by transient issues. Before +// you start troubleshooting, perform the operation again. +// +// - AccessDeniedException +// You do not have sufficient access to perform this action. Access denied errors +// appear when Amazon Security Lake explicitly or implicitly denies an authorization +// request. An explicit denial occurs when a policy contains a Deny statement +// for the specific Amazon Web Services action. An implicit denial occurs when +// there is no applicable Deny statement and also no applicable Allow statement. +// +// - ConflictException +// Occurs when a conflict with a previous successful write is detected. This +// generally occurs when the previous write did not have time to propagate to +// the host serving the current request. A retry (with appropriate backoff logic) +// is the recommended response to this exception. +// +// - ThrottlingException +// The limit on the number of requests per second was exceeded. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/securitylake-2018-05-10/UntagResource +func (c *SecurityLake) 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 *SecurityLake) 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 opUpdateDataLake = "UpdateDataLake" // UpdateDataLakeRequest generates a "aws/request.Request" representing the @@ -4002,6 +4326,11 @@ type CreateDataLakeInput struct { // // MetaStoreManagerRoleArn is a required field MetaStoreManagerRoleArn *string `locationName:"metaStoreManagerRoleArn" type:"string" required:"true"` + + // An array of objects, one for each tag to associate with the data lake configuration. + // For each tag, you must specify both a tag key and a tag value. A tag value + // cannot be null, but it can be an empty string. + Tags []*Tag `locationName:"tags" type:"list"` } // String returns the string representation. @@ -4041,6 +4370,16 @@ func (s *CreateDataLakeInput) Validate() error { } } } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -4060,6 +4399,12 @@ func (s *CreateDataLakeInput) SetMetaStoreManagerRoleArn(v string) *CreateDataLa return s } +// SetTags sets the Tags field's value. +func (s *CreateDataLakeInput) SetTags(v []*Tag) *CreateDataLakeInput { + s.Tags = v + return s +} + type CreateDataLakeOrganizationConfigurationInput struct { _ struct{} `type:"structure"` @@ -4195,6 +4540,11 @@ type CreateSubscriberInput struct { // // SubscriberName is a required field SubscriberName *string `locationName:"subscriberName" type:"string" required:"true"` + + // An array of objects, one for each tag to associate with the subscriber. For + // each tag, you must specify both a tag key and a tag value. A tag value cannot + // be null, but it can be an empty string. + Tags []*Tag `locationName:"tags" type:"list"` } // String returns the string representation. @@ -4242,6 +4592,16 @@ func (s *CreateSubscriberInput) Validate() error { invalidParams.AddNested("SubscriberIdentity", err.(request.ErrInvalidParams)) } } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -4279,6 +4639,12 @@ func (s *CreateSubscriberInput) SetSubscriberName(v string) *CreateSubscriberInp return s } +// SetTags sets the Tags field's value. +func (s *CreateSubscriberInput) SetTags(v []*Tag) *CreateSubscriberInput { + s.Tags = v + return s +} + type CreateSubscriberNotificationInput struct { _ struct{} `type:"structure"` @@ -4905,7 +5271,7 @@ func (s *DataLakeEncryptionConfiguration) SetKmsKeyId(v string) *DataLakeEncrypt return s } -// The details for a Security Lake exception +// The details for an Amazon Security Lake exception. type DataLakeException struct { _ struct{} `type:"structure"` @@ -5814,8 +6180,8 @@ func (s *DeleteDataLakeInput) SetRegions(v []*string) *DeleteDataLakeInput { type DeleteDataLakeOrganizationConfigurationInput struct { _ struct{} `type:"structure"` - // Removes the automatic enablement of configuration settings for new member - // accounts in Security Lake. + // Turns off automatic enablement of Security Lake for member accounts that + // are added to an organization. // // AutoEnableNewAccount is a required field AutoEnableNewAccount []*DataLakeAutoEnableNewAccountConfiguration `locationName:"autoEnableNewAccount" type:"list" required:"true"` @@ -6989,6 +7355,88 @@ func (s *ListSubscribersOutput) SetSubscribers(v []*SubscriberResource) *ListSub return s } +type ListTagsForResourceInput struct { + _ struct{} `type:"structure" nopayload:"true"` + + // The Amazon Resource Name (ARN) of the Amazon Security Lake resource to retrieve + // the tags for. + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListTagsForResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListTagsForResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListTagsForResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput { + s.ResourceArn = &v + return s +} + +type ListTagsForResourceOutput struct { + _ struct{} `type:"structure"` + + // An array of objects, one for each tag (key and value) that’s associated + // with the Amazon Security Lake resource. + Tags []*Tag `locationName:"tags" type:"list"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListTagsForResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListTagsForResourceOutput) GoString() string { + return s.String() +} + +// SetTags sets the Tags field's value. +func (s *ListTagsForResourceOutput) SetTags(v []*Tag) *ListTagsForResourceOutput { + s.Tags = v + return s +} + // Amazon Security Lake can collect logs and events from natively-supported // Amazon Web Services services and custom sources. type LogSource struct { @@ -7041,17 +7489,18 @@ func (s *LogSource) SetSources(v []*LogSourceResource) *LogSource { } // The supported source types from which logs and events are collected in Amazon -// Security Lake. For the list of supported Amazon Web Services, see the Amazon +// Security Lake. For a list of supported Amazon Web Services, see the Amazon // Security Lake User Guide (https://docs.aws.amazon.com/security-lake/latest/userguide/internal-sources.html). type LogSourceResource struct { _ struct{} `type:"structure"` // Amazon Security Lake supports log and event collection for natively supported - // Amazon Web Services. + // Amazon Web Services. For more information, see the Amazon Security Lake User + // Guide (https://docs.aws.amazon.com/security-lake/latest/userguide/internal-sources.html). AwsLogSource *AwsLogSourceResource `locationName:"awsLogSource" type:"structure"` - // Amazon Security Lake supports custom source types. For a detailed list, see - // the Amazon Security Lake User Guide. + // Amazon Security Lake supports custom source types. For more information, + // see the Amazon Security Lake User Guide (https://docs.aws.amazon.com/security-lake/latest/userguide/custom-sources.html). CustomLogSource *CustomLogSourceResource `locationName:"customLogSource" type:"structure"` } @@ -7356,7 +7805,7 @@ type SubscriberResource struct { // Amazon Security Lake supports log and event collection for natively supported // Amazon Web Services. For more information, see the Amazon Security Lake User - // Guide. + // Guide (https://docs.aws.amazon.com/security-lake/latest/userguide/source-management.html). // // Sources is a required field Sources []*LogSourceResource `locationName:"sources" type:"list" required:"true"` @@ -7503,6 +7952,187 @@ func (s *SubscriberResource) SetUpdatedAt(v time.Time) *SubscriberResource { return s } +// A tag is a label that you can define and associate with Amazon Web Services +// resources, including certain types of Amazon Security Lake resources. Tags +// can help you identify, categorize, and manage resources in different ways, +// such as by owner, environment, or other criteria. You can associate tags +// with the following types of Security Lake resources: subscribers, and the +// data lake configuration for your Amazon Web Services account in individual +// Amazon Web Services Regions. +// +// A resource can have up to 50 tags. Each tag consists of a required tag key +// and an associated tag value. A tag key is a general label that acts as a +// category for a more specific tag value. Each tag key must be unique and it +// can have only one tag value. A tag value acts as a descriptor for a tag key. +// Tag keys and values are case sensitive. They can contain letters, numbers, +// spaces, or the following symbols: _ . : / = + @ - +// +// For more information, see Tagging Amazon Security Lake resources (https://docs.aws.amazon.com/security-lake/latest/userguide/tagging-resources.html) +// in the Amazon Security Lake User Guide. +type Tag struct { + _ struct{} `type:"structure"` + + // The name of the tag. This is a general label that acts as a category for + // a more specific tag value (value). + // + // Key is a required field + Key *string `locationName:"key" min:"1" type:"string" required:"true"` + + // The value that’s associated with the specified tag key (key). This value + // acts as a descriptor for the tag key. A tag value cannot be null, but it + // can be an empty string. + // + // Value is a required field + Value *string `locationName:"value" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s Tag) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s Tag) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Tag) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Tag"} + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.Value == nil { + invalidParams.Add(request.NewErrParamRequired("Value")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKey sets the Key field's value. +func (s *Tag) SetKey(v string) *Tag { + s.Key = &v + return s +} + +// SetValue sets the Value field's value. +func (s *Tag) SetValue(v string) *Tag { + s.Value = &v + return s +} + +type TagResourceInput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the Amazon Security Lake resource to add + // or update the tags for. + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"` + + // An array of objects, one for each tag (key and value) to associate with the + // Amazon Security Lake resource. For each tag, you must specify both a tag + // key and a tag value. A tag value cannot be null, but it can be an empty string. + // + // Tags is a required field + Tags []*Tag `locationName:"tags" type:"list" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TagResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TagResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput { + s.ResourceArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput { + s.Tags = v + return s +} + +type TagResourceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TagResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TagResourceOutput) GoString() string { + return s.String() +} + // The limit on the number of requests per second was exceeded. type ThrottlingException struct { _ struct{} `type:"structure"` @@ -7577,6 +8207,93 @@ func (s *ThrottlingException) RequestID() string { return s.RespMetadata.RequestID } +type UntagResourceInput struct { + _ struct{} `type:"structure" nopayload:"true"` + + // The Amazon Resource Name (ARN) of the Amazon Security Lake resource to remove + // one or more tags from. + // + // ResourceArn is a required field + ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"` + + // A list of one or more tag keys. For each value in the list, specify the tag + // key for a tag to remove from the Amazon Security Lake resource. + // + // TagKeys is a required field + TagKeys []*string `location:"querystring" locationName:"tagKeys" type:"list" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UntagResourceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UntagResourceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagResourceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"} + if s.ResourceArn == nil { + invalidParams.Add(request.NewErrParamRequired("ResourceArn")) + } + if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetResourceArn sets the ResourceArn field's value. +func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput { + s.ResourceArn = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput { + s.TagKeys = v + return s +} + +type UntagResourceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UntagResourceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s UntagResourceOutput) GoString() string { + return s.String() +} + type UpdateDataLakeExceptionSubscriptionInput struct { _ struct{} `type:"structure"` diff --git a/service/securitylake/securitylakeiface/interface.go b/service/securitylake/securitylakeiface/interface.go index 62c7da2da7b..8dc7d7eb6b2 100644 --- a/service/securitylake/securitylakeiface/interface.go +++ b/service/securitylake/securitylakeiface/interface.go @@ -164,10 +164,22 @@ type SecurityLakeAPI interface { ListSubscribersPages(*securitylake.ListSubscribersInput, func(*securitylake.ListSubscribersOutput, bool) bool) error ListSubscribersPagesWithContext(aws.Context, *securitylake.ListSubscribersInput, func(*securitylake.ListSubscribersOutput, bool) bool, ...request.Option) error + ListTagsForResource(*securitylake.ListTagsForResourceInput) (*securitylake.ListTagsForResourceOutput, error) + ListTagsForResourceWithContext(aws.Context, *securitylake.ListTagsForResourceInput, ...request.Option) (*securitylake.ListTagsForResourceOutput, error) + ListTagsForResourceRequest(*securitylake.ListTagsForResourceInput) (*request.Request, *securitylake.ListTagsForResourceOutput) + RegisterDataLakeDelegatedAdministrator(*securitylake.RegisterDataLakeDelegatedAdministratorInput) (*securitylake.RegisterDataLakeDelegatedAdministratorOutput, error) RegisterDataLakeDelegatedAdministratorWithContext(aws.Context, *securitylake.RegisterDataLakeDelegatedAdministratorInput, ...request.Option) (*securitylake.RegisterDataLakeDelegatedAdministratorOutput, error) RegisterDataLakeDelegatedAdministratorRequest(*securitylake.RegisterDataLakeDelegatedAdministratorInput) (*request.Request, *securitylake.RegisterDataLakeDelegatedAdministratorOutput) + TagResource(*securitylake.TagResourceInput) (*securitylake.TagResourceOutput, error) + TagResourceWithContext(aws.Context, *securitylake.TagResourceInput, ...request.Option) (*securitylake.TagResourceOutput, error) + TagResourceRequest(*securitylake.TagResourceInput) (*request.Request, *securitylake.TagResourceOutput) + + UntagResource(*securitylake.UntagResourceInput) (*securitylake.UntagResourceOutput, error) + UntagResourceWithContext(aws.Context, *securitylake.UntagResourceInput, ...request.Option) (*securitylake.UntagResourceOutput, error) + UntagResourceRequest(*securitylake.UntagResourceInput) (*request.Request, *securitylake.UntagResourceOutput) + UpdateDataLake(*securitylake.UpdateDataLakeInput) (*securitylake.UpdateDataLakeOutput, error) UpdateDataLakeWithContext(aws.Context, *securitylake.UpdateDataLakeInput, ...request.Option) (*securitylake.UpdateDataLakeOutput, error) UpdateDataLakeRequest(*securitylake.UpdateDataLakeInput) (*request.Request, *securitylake.UpdateDataLakeOutput) diff --git a/service/transcribeservice/api.go b/service/transcribeservice/api.go index 79c78a78081..1e2289d8f49 100644 --- a/service/transcribeservice/api.go +++ b/service/transcribeservice/api.go @@ -11709,6 +11709,13 @@ type StartTranscriptionJobInput struct { // (https://docs.aws.amazon.com/transcribe/latest/dg/tagging.html). Tags []*Tag `min:"1" type:"list"` + // Enables toxic speech detection in your transcript. If you include ToxicityDetection + // in your request, you must also include ToxicityCategories. + // + // For information on the types of toxic speech Amazon Transcribe can detect, + // see Detecting toxic speech (https://docs.aws.amazon.com/transcribe/latest/dg/toxic-language.html). + ToxicityDetection []*ToxicityDetectionSettings `min:"1" type:"list"` + // A unique name, chosen by you, for your transcription job. The name that you // specify is also used as the default name of your transcription output file. // If you want to specify a different name for your transcription output, use @@ -11767,6 +11774,9 @@ func (s *StartTranscriptionJobInput) Validate() error { if s.Tags != nil && len(s.Tags) < 1 { invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) } + if s.ToxicityDetection != nil && len(s.ToxicityDetection) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ToxicityDetection", 1)) + } if s.TranscriptionJobName == nil { invalidParams.Add(request.NewErrParamRequired("TranscriptionJobName")) } @@ -11818,6 +11828,16 @@ func (s *StartTranscriptionJobInput) Validate() error { } } } + if s.ToxicityDetection != nil { + for i, v := range s.ToxicityDetection { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ToxicityDetection", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -11933,6 +11953,12 @@ func (s *StartTranscriptionJobInput) SetTags(v []*Tag) *StartTranscriptionJobInp return s } +// SetToxicityDetection sets the ToxicityDetection field's value. +func (s *StartTranscriptionJobInput) SetToxicityDetection(v []*ToxicityDetectionSettings) *StartTranscriptionJobInput { + s.ToxicityDetection = v + return s +} + // SetTranscriptionJobName sets the TranscriptionJobName field's value. func (s *StartTranscriptionJobInput) SetTranscriptionJobName(v string) *StartTranscriptionJobInput { s.TranscriptionJobName = &v @@ -12276,6 +12302,59 @@ func (s TagResourceOutput) GoString() string { return s.String() } +// Contains ToxicityCategories, which is a required parameter if you want to +// enable toxicity detection (ToxicityDetection) in your transcription request. +type ToxicityDetectionSettings struct { + _ struct{} `type:"structure"` + + // If you include ToxicityDetection in your transcription request, you must + // also include ToxicityCategories. The only accepted value for this parameter + // is ALL. + // + // ToxicityCategories is a required field + ToxicityCategories []*string `min:"1" type:"list" required:"true" enum:"ToxicityCategory"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ToxicityDetectionSettings) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ToxicityDetectionSettings) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ToxicityDetectionSettings) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ToxicityDetectionSettings"} + if s.ToxicityCategories == nil { + invalidParams.Add(request.NewErrParamRequired("ToxicityCategories")) + } + if s.ToxicityCategories != nil && len(s.ToxicityCategories) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ToxicityCategories", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetToxicityCategories sets the ToxicityCategories field's value. +func (s *ToxicityDetectionSettings) SetToxicityCategories(v []*string) *ToxicityDetectionSettings { + s.ToxicityCategories = v + return s +} + // Provides you with the Amazon S3 URI you can use to access your transcript. type Transcript struct { _ struct{} `type:"structure"` @@ -12598,6 +12677,10 @@ type TranscriptionJob struct { // transcription job. Tags []*Tag `min:"1" type:"list"` + // Provides information about the toxicity detection settings applied to your + // transcription. + ToxicityDetection []*ToxicityDetectionSettings `min:"1" type:"list"` + // Provides you with the Amazon S3 URI you can use to access your transcript. Transcript *Transcript `type:"structure"` @@ -12752,6 +12835,12 @@ func (s *TranscriptionJob) SetTags(v []*Tag) *TranscriptionJob { return s } +// SetToxicityDetection sets the ToxicityDetection field's value. +func (s *TranscriptionJob) SetToxicityDetection(v []*ToxicityDetectionSettings) *TranscriptionJob { + s.ToxicityDetection = v + return s +} + // SetTranscript sets the Transcript field's value. func (s *TranscriptionJob) SetTranscript(v *Transcript) *TranscriptionJob { s.Transcript = v @@ -12846,6 +12935,10 @@ type TranscriptionJobSummary struct { // processing at 12:32 PM UTC-7 on May 4, 2022. StartTime *time.Time `type:"timestamp"` + // Indicates whether toxicity detection was enabled for the specified transcription + // job. + ToxicityDetection []*ToxicityDetectionSettings `min:"1" type:"list"` + // The name of the transcription job. Job names are case sensitive and must // be unique within an Amazon Web Services account. TranscriptionJobName *string `min:"1" type:"string"` @@ -12949,6 +13042,12 @@ func (s *TranscriptionJobSummary) SetStartTime(v time.Time) *TranscriptionJobSum return s } +// SetToxicityDetection sets the ToxicityDetection field's value. +func (s *TranscriptionJobSummary) SetToxicityDetection(v []*ToxicityDetectionSettings) *TranscriptionJobSummary { + s.ToxicityDetection = v + return s +} + // SetTranscriptionJobName sets the TranscriptionJobName field's value. func (s *TranscriptionJobSummary) SetTranscriptionJobName(v string) *TranscriptionJobSummary { s.TranscriptionJobName = &v @@ -14321,6 +14420,18 @@ func SubtitleFormat_Values() []string { } } +const ( + // ToxicityCategoryAll is a ToxicityCategory enum value + ToxicityCategoryAll = "ALL" +) + +// ToxicityCategory_Values returns all elements of the ToxicityCategory enum +func ToxicityCategory_Values() []string { + return []string{ + ToxicityCategoryAll, + } +} + const ( // TranscriptFilterTypeExact is a TranscriptFilterType enum value TranscriptFilterTypeExact = "EXACT"