diff --git a/.changes/1.35.22.json b/.changes/1.35.22.json new file mode 100644 index 0000000000..938a1835e8 --- /dev/null +++ b/.changes/1.35.22.json @@ -0,0 +1,37 @@ +[ + { + "category": "``ce``", + "description": "This release extends the GetReservationPurchaseRecommendation API to support recommendations for Amazon DynamoDB reservations.", + "type": "api-change" + }, + { + "category": "``ds``", + "description": "Added new APIs for enabling, disabling, and describing access to the AWS Directory Service Data API", + "type": "api-change" + }, + { + "category": "``ds-data``", + "description": "Added new AWS Directory Service Data API, enabling you to manage data stored in AWS Directory Service directories. This includes APIs for creating, reading, updating, and deleting directory users, groups, and group memberships.", + "type": "api-change" + }, + { + "category": "``guardduty``", + "description": "Add `launchType` and `sourceIPs` fields to GuardDuty findings.", + "type": "api-change" + }, + { + "category": "``mailmanager``", + "description": "Introduce a new RuleSet condition evaluation, where customers can set up a StringExpression with a MimeHeader condition. This condition will perform the necessary validation based on the X-header provided by customers.", + "type": "api-change" + }, + { + "category": "``rds``", + "description": "Updates Amazon RDS documentation with information upgrading snapshots with unsupported engine versions for RDS for MySQL and RDS for PostgreSQL.", + "type": "api-change" + }, + { + "category": "``s3``", + "description": "Added SSE-KMS support for directory buckets.", + "type": "api-change" + } +] \ No newline at end of file diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3fbe84a0c0..d1771cc4a7 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,18 @@ CHANGELOG ========= +1.35.22 +======= + +* api-change:``ce``: This release extends the GetReservationPurchaseRecommendation API to support recommendations for Amazon DynamoDB reservations. +* api-change:``ds``: Added new APIs for enabling, disabling, and describing access to the AWS Directory Service Data API +* api-change:``ds-data``: Added new AWS Directory Service Data API, enabling you to manage data stored in AWS Directory Service directories. This includes APIs for creating, reading, updating, and deleting directory users, groups, and group memberships. +* api-change:``guardduty``: Add `launchType` and `sourceIPs` fields to GuardDuty findings. +* api-change:``mailmanager``: Introduce a new RuleSet condition evaluation, where customers can set up a StringExpression with a MimeHeader condition. This condition will perform the necessary validation based on the X-header provided by customers. +* api-change:``rds``: Updates Amazon RDS documentation with information upgrading snapshots with unsupported engine versions for RDS for MySQL and RDS for PostgreSQL. +* api-change:``s3``: Added SSE-KMS support for directory buckets. + + 1.35.21 ======= diff --git a/botocore/__init__.py b/botocore/__init__.py index 71fa9d8af5..4066afb71b 100644 --- a/botocore/__init__.py +++ b/botocore/__init__.py @@ -16,7 +16,7 @@ import os import re -__version__ = '1.35.21' +__version__ = '1.35.22' class NullHandler(logging.Handler): diff --git a/botocore/configprovider.py b/botocore/configprovider.py index b0dd09f09f..3341802e53 100644 --- a/botocore/configprovider.py +++ b/botocore/configprovider.py @@ -144,12 +144,6 @@ 'auto', None, ), - 'sts_regional_endpoints': ( - 'sts_regional_endpoints', - 'AWS_STS_REGIONAL_ENDPOINTS', - 'legacy', - None, - ), 'retry_mode': ('retry_mode', 'AWS_RETRY_MODE', 'legacy', None), 'defaults_mode': ('defaults_mode', 'AWS_DEFAULTS_MODE', 'legacy', None), # We can't have a default here for v1 because we need to defer to @@ -175,6 +169,28 @@ None, ), } + +# Evaluate AWS_STS_REGIONAL_ENDPOINTS settings +try: + # This is not a public interface and is subject to abrupt breaking changes. + # Any usage is not advised or supported in external code bases. + from botocore.customizations.sts import ( + sts_default_setting as _sts_default_setting, + ) +except ImportError: + _sts_default_setting = 'legacy' + +_STS_DEFAULT_SETTINGS = { + 'sts_regional_endpoints': ( + 'sts_regional_endpoints', + 'AWS_STS_REGIONAL_ENDPOINTS', + _sts_default_setting, + None, + ), +} +BOTOCORE_DEFAUT_SESSION_VARIABLES.update(_STS_DEFAULT_SETTINGS) + + # A mapping for the s3 specific configuration vars. These are the configuration # vars that typically go in the s3 section of the config file. This mapping # follows the same schema as the previous session variable mapping. diff --git a/botocore/data/ce/2017-10-25/service-2.json b/botocore/data/ce/2017-10-25/service-2.json index 16f78dc121..a58a550e30 100644 --- a/botocore/data/ce/2017-10-25/service-2.json +++ b/botocore/data/ce/2017-10-25/service-2.json @@ -5,13 +5,15 @@ "endpointPrefix":"ce", "jsonVersion":"1.1", "protocol":"json", + "protocols":["json"], "serviceAbbreviation":"AWS Cost Explorer", "serviceFullName":"AWS Cost Explorer Service", "serviceId":"Cost Explorer", "signatureVersion":"v4", "signingName":"ce", "targetPrefix":"AWSInsightsIndexService", - "uid":"ce-2017-10-25" + "uid":"ce-2017-10-25", + "auth":["aws.auth#sigv4"] }, "operations":{ "CreateAnomalyMonitor":{ @@ -651,7 +653,7 @@ }, "DimensionValue":{ "shape":"GenericString", - "documentation":"

The dimension for the anomaly (for example, an Amazon Web Service in a service monitor).

" + "documentation":"

The dimension for the anomaly (for example, an Amazon Web Servicesservice in a service monitor).

" }, "RootCauses":{ "shape":"RootCauses", @@ -1715,6 +1717,20 @@ }, "documentation":"

The field that contains a list of disk (local storage) metrics that are associated with the current instance.

" }, + "DynamoDBCapacityDetails":{ + "type":"structure", + "members":{ + "CapacityUnits":{ + "shape":"GenericString", + "documentation":"

The capacity unit of the recommended reservation.

" + }, + "Region":{ + "shape":"GenericString", + "documentation":"

The Amazon Web Services Region of the recommended reservation.

" + } + }, + "documentation":"

The DynamoDB reservations that Amazon Web Services recommends that you purchase.

" + }, "EBSResourceUtilization":{ "type":"structure", "members":{ @@ -2431,7 +2447,7 @@ }, "Context":{ "shape":"Context", - "documentation":"

The context for the call to GetDimensionValues. This can be RESERVATIONS or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization operation. If the context is set to COST_AND_USAGE, the resulting dimension values can be used in the GetCostAndUsage operation.

If you set the context to COST_AND_USAGE, you can use the following dimensions for searching:

If you set the context to RESERVATIONS, you can use the following dimensions for searching:

If you set the context to SAVINGS_PLANS, you can use the following dimensions for searching:

" + "documentation":"

The context for the call to GetDimensionValues. This can be RESERVATIONS or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization operation. If the context is set to COST_AND_USAGE, the resulting dimension values can be used in the GetCostAndUsage operation.

If you set the context to COST_AND_USAGE, you can use the following dimensions for searching:

If you set the context to RESERVATIONS, you can use the following dimensions for searching:

If you set the context to SAVINGS_PLANS, you can use the following dimensions for searching:

" }, "Filter":{"shape":"Expression"}, "SortBy":{ @@ -3967,15 +3983,15 @@ }, "AverageUtilization":{ "shape":"GenericString", - "documentation":"

The average utilization of your instances. Amazon Web Services uses this to calculate your recommended reservation purchases.

" + "documentation":"

The average utilization of your recommendations. Amazon Web Services uses this to calculate your recommended reservation purchases.

" }, "EstimatedBreakEvenInMonths":{ "shape":"GenericString", - "documentation":"

How long Amazon Web Services estimates that it takes for this instance to start saving you money, in months.

" + "documentation":"

How long Amazon Web Services estimates that it takes for this recommendation to start saving you money, in months.

" }, "CurrencyCode":{ "shape":"GenericString", - "documentation":"

The currency code that Amazon Web Services used to calculate the costs for this instance.

" + "documentation":"

The currency code that Amazon Web Services used to calculate the costs for this recommendation.

" }, "EstimatedMonthlySavingsAmount":{ "shape":"GenericString", @@ -3995,11 +4011,31 @@ }, "UpfrontCost":{ "shape":"GenericString", - "documentation":"

How much purchasing this instance costs you upfront.

" + "documentation":"

How much purchasing this recommendation costs you upfront.

" }, "RecurringStandardMonthlyCost":{ "shape":"GenericString", - "documentation":"

How much purchasing this instance costs you on a monthly basis.

" + "documentation":"

How much purchasing this recommendation costs you on a monthly basis.

" + }, + "ReservedCapacityDetails":{ + "shape":"ReservedCapacityDetails", + "documentation":"

Details about the reservations that Amazon Web Services recommends that you purchase.

" + }, + "RecommendedNumberOfCapacityUnitsToPurchase":{ + "shape":"GenericString", + "documentation":"

The number of reserved capacity units that Amazon Web Services recommends that you purchase.

" + }, + "MinimumNumberOfCapacityUnitsUsedPerHour":{ + "shape":"GenericString", + "documentation":"

The minimum number of provisioned capacity units that you used in an hour during the historical period. Amazon Web Services uses this to calculate your recommended reservation purchases.

" + }, + "MaximumNumberOfCapacityUnitsUsedPerHour":{ + "shape":"GenericString", + "documentation":"

The maximum number of provisioned capacity units that you used in an hour during the historical period. Amazon Web Services uses this to calculate your recommended reservation purchases.

" + }, + "AverageNumberOfCapacityUnitsUsedPerHour":{ + "shape":"GenericString", + "documentation":"

The average number of provisioned capacity units that you used in an hour during the historical period. Amazon Web Services uses this to calculate your recommended reservation purchases.

" } }, "documentation":"

Details about your recommended reservation purchase.

" @@ -4074,6 +4110,16 @@ "type":"list", "member":{"shape":"ReservationUtilizationGroup"} }, + "ReservedCapacityDetails":{ + "type":"structure", + "members":{ + "DynamoDBCapacityDetails":{ + "shape":"DynamoDBCapacityDetails", + "documentation":"

The DynamoDB reservations that Amazon Web Services recommends that you purchase.

" + } + }, + "documentation":"

Details about the reservations that Amazon Web Services recommends that you purchase.

" + }, "ReservedHours":{"type":"string"}, "ReservedNormalizedUnits":{"type":"string"}, "ResourceDetails":{ @@ -4281,7 +4327,7 @@ "members":{ "Service":{ "shape":"GenericString", - "documentation":"

The Amazon Web Service name that's associated with the cost anomaly.

" + "documentation":"

The Amazon Web Servicesservice name that's associated with the cost anomaly.

" }, "Region":{ "shape":"GenericString", @@ -4300,7 +4346,7 @@ "documentation":"

The member account name value that's associated with the cost anomaly.

" } }, - "documentation":"

The combination of Amazon Web Service, linked account, linked account name, Region, and usage type where a cost anomaly is observed. The linked account name will only be available when the account name can be identified.

" + "documentation":"

The combination of Amazon Web Servicesservice, linked account, linked account name, Region, and usage type where a cost anomaly is observed. The linked account name will only be available when the account name can be identified.

" }, "RootCauses":{ "type":"list", diff --git a/botocore/data/ds-data/2023-05-31/endpoint-rule-set-1.json b/botocore/data/ds-data/2023-05-31/endpoint-rule-set-1.json new file mode 100644 index 0000000000..8f4af0f74b --- /dev/null +++ b/botocore/data/ds-data/2023-05-31/endpoint-rule-set-1.json @@ -0,0 +1,350 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseDualStack": { + "builtIn": "AWS::UseDualStack", + "required": true, + "default": false, + "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.", + "type": "Boolean" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS and DualStack are enabled, but this partition does not support one or both", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ], + "type": "tree" + } + ] +} \ No newline at end of file diff --git a/botocore/data/ds-data/2023-05-31/paginators-1.json b/botocore/data/ds-data/2023-05-31/paginators-1.json new file mode 100644 index 0000000000..5038135506 --- /dev/null +++ b/botocore/data/ds-data/2023-05-31/paginators-1.json @@ -0,0 +1,40 @@ +{ + "pagination": { + "ListGroupMembers": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Members" + }, + "ListGroups": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Groups" + }, + "ListGroupsForMember": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Groups" + }, + "ListUsers": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Users" + }, + "SearchGroups": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Groups" + }, + "SearchUsers": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Users" + } + } +} diff --git a/botocore/data/ds-data/2023-05-31/paginators-1.sdk-extras.json b/botocore/data/ds-data/2023-05-31/paginators-1.sdk-extras.json new file mode 100644 index 0000000000..35f9e238bf --- /dev/null +++ b/botocore/data/ds-data/2023-05-31/paginators-1.sdk-extras.json @@ -0,0 +1,46 @@ +{ + "version": 1.0, + "merge": { + "pagination": { + "ListGroupMembers": { + "non_aggregate_keys": [ + "DirectoryId", + "MemberRealm", + "Realm" + ] + }, + "ListGroups": { + "non_aggregate_keys": [ + "DirectoryId", + "Realm" + ] + }, + "ListGroupsForMember": { + "non_aggregate_keys": [ + "DirectoryId", + "MemberRealm", + "Realm" + ] + }, + "ListUsers": { + "non_aggregate_keys": [ + "DirectoryId", + "Realm" + ] + }, + "SearchGroups": { + "non_aggregate_keys": [ + "DirectoryId", + "Realm" + ] + }, + "SearchUsers": { + "non_aggregate_keys": [ + "DirectoryId", + "Realm" + ] + } + } + } + } + \ No newline at end of file diff --git a/botocore/data/ds-data/2023-05-31/service-2.json b/botocore/data/ds-data/2023-05-31/service-2.json new file mode 100644 index 0000000000..722826c46b --- /dev/null +++ b/botocore/data/ds-data/2023-05-31/service-2.json @@ -0,0 +1,1688 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2023-05-31", + "endpointPrefix":"ds-data", + "jsonVersion":"1.1", + "protocol":"rest-json", + "protocols":["rest-json"], + "serviceFullName":"AWS Directory Service Data", + "serviceId":"Directory Service Data", + "signatureVersion":"v4", + "signingName":"ds-data", + "uid":"directory-service-data-2023-05-31" + }, + "operations":{ + "AddGroupMember":{ + "name":"AddGroupMember", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/AddGroupMember", + "responseCode":200 + }, + "input":{"shape":"AddGroupMemberRequest"}, + "output":{"shape":"AddGroupMemberResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Adds an existing user, group, or computer as a group member.

" + }, + "CreateGroup":{ + "name":"CreateGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/CreateGroup", + "responseCode":200 + }, + "input":{"shape":"CreateGroupRequest"}, + "output":{"shape":"CreateGroupResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Creates a new group.

" + }, + "CreateUser":{ + "name":"CreateUser", + "http":{ + "method":"POST", + "requestUri":"/Users/CreateUser", + "responseCode":200 + }, + "input":{"shape":"CreateUserRequest"}, + "output":{"shape":"CreateUserResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Creates a new user.

" + }, + "DeleteGroup":{ + "name":"DeleteGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/DeleteGroup", + "responseCode":200 + }, + "input":{"shape":"DeleteGroupRequest"}, + "output":{"shape":"DeleteGroupResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Deletes a group.

" + }, + "DeleteUser":{ + "name":"DeleteUser", + "http":{ + "method":"POST", + "requestUri":"/Users/DeleteUser", + "responseCode":200 + }, + "input":{"shape":"DeleteUserRequest"}, + "output":{"shape":"DeleteUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Deletes a user.

" + }, + "DescribeGroup":{ + "name":"DescribeGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/DescribeGroup", + "responseCode":200 + }, + "input":{"shape":"DescribeGroupRequest"}, + "output":{"shape":"DescribeGroupResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Returns information about a specific group.

" + }, + "DescribeUser":{ + "name":"DescribeUser", + "http":{ + "method":"POST", + "requestUri":"/Users/DescribeUser", + "responseCode":200 + }, + "input":{"shape":"DescribeUserRequest"}, + "output":{"shape":"DescribeUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Returns information about a specific user.

" + }, + "DisableUser":{ + "name":"DisableUser", + "http":{ + "method":"POST", + "requestUri":"/Users/DisableUser", + "responseCode":200 + }, + "input":{"shape":"DisableUserRequest"}, + "output":{"shape":"DisableUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Deactivates an active user account. For information about how to enable an inactive user account, see ResetUserPassword in the Directory Service API Reference.

" + }, + "ListGroupMembers":{ + "name":"ListGroupMembers", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/ListGroupMembers", + "responseCode":200 + }, + "input":{"shape":"ListGroupMembersRequest"}, + "output":{"shape":"ListGroupMembersResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Returns member information for the specified group.

This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListGroupMembers.NextToken member contains a token that you pass in the next call to ListGroupMembers. This retrieves the next set of items.

You can also specify a maximum number of return results with the MaxResults parameter.

" + }, + "ListGroups":{ + "name":"ListGroups", + "http":{ + "method":"POST", + "requestUri":"/Groups/ListGroups", + "responseCode":200 + }, + "input":{"shape":"ListGroupsRequest"}, + "output":{"shape":"ListGroupsResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Returns group information for the specified directory.

This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListGroups.NextToken member contains a token that you pass in the next call to ListGroups. This retrieves the next set of items.

You can also specify a maximum number of return results with the MaxResults parameter.

" + }, + "ListGroupsForMember":{ + "name":"ListGroupsForMember", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/ListGroupsForMember", + "responseCode":200 + }, + "input":{"shape":"ListGroupsForMemberRequest"}, + "output":{"shape":"ListGroupsForMemberResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Returns group information for the specified member.

This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListGroupsForMember.NextToken member contains a token that you pass in the next call to ListGroupsForMember. This retrieves the next set of items.

You can also specify a maximum number of return results with the MaxResults parameter.

" + }, + "ListUsers":{ + "name":"ListUsers", + "http":{ + "method":"POST", + "requestUri":"/Users/ListUsers", + "responseCode":200 + }, + "input":{"shape":"ListUsersRequest"}, + "output":{"shape":"ListUsersResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Returns user information for the specified directory.

This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListUsers.NextToken member contains a token that you pass in the next call to ListUsers. This retrieves the next set of items.

You can also specify a maximum number of return results with the MaxResults parameter.

" + }, + "RemoveGroupMember":{ + "name":"RemoveGroupMember", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/RemoveGroupMember", + "responseCode":200 + }, + "input":{"shape":"RemoveGroupMemberRequest"}, + "output":{"shape":"RemoveGroupMemberResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Removes a member from a group.

" + }, + "SearchGroups":{ + "name":"SearchGroups", + "http":{ + "method":"POST", + "requestUri":"/Groups/SearchGroups", + "responseCode":200 + }, + "input":{"shape":"SearchGroupsRequest"}, + "output":{"shape":"SearchGroupsResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Searches the specified directory for a group. You can find groups that match the SearchString parameter with the value of their attributes included in the SearchString parameter.

This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the SearchGroups.NextToken member contains a token that you pass in the next call to SearchGroups. This retrieves the next set of items.

You can also specify a maximum number of return results with the MaxResults parameter.

" + }, + "SearchUsers":{ + "name":"SearchUsers", + "http":{ + "method":"POST", + "requestUri":"/Users/SearchUsers", + "responseCode":200 + }, + "input":{"shape":"SearchUsersRequest"}, + "output":{"shape":"SearchUsersResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Searches the specified directory for a user. You can find users that match the SearchString parameter with the value of their attributes included in the SearchString parameter.

This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the SearchUsers.NextToken member contains a token that you pass in the next call to SearchUsers. This retrieves the next set of items.

You can also specify a maximum number of return results with the MaxResults parameter.

" + }, + "UpdateGroup":{ + "name":"UpdateGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/UpdateGroup", + "responseCode":200 + }, + "input":{"shape":"UpdateGroupRequest"}, + "output":{"shape":"UpdateGroupResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Updates group information.

" + }, + "UpdateUser":{ + "name":"UpdateUser", + "http":{ + "method":"POST", + "requestUri":"/Users/UpdateUser", + "responseCode":200 + }, + "input":{"shape":"UpdateUserRequest"}, + "output":{"shape":"UpdateUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

Updates user information.

" + } + }, + "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "Reason":{ + "shape":"AccessDeniedReason", + "documentation":"

Reason the request was unauthorized.

" + } + }, + "documentation":"

You don't have permission to perform the request or access the directory. It can also occur when the DirectoryId doesn't exist or the user, member, or group might be outside of your organizational unit (OU).

Make sure that you have the authentication and authorization to perform the action. Review the directory information in the request, and make sure that the object isn't outside of your OU.

", + "error":{ + "httpStatusCode":403, + "senderFault":true + }, + "exception":true + }, + "AccessDeniedReason":{ + "type":"string", + "enum":[ + "IAM_AUTH", + "DIRECTORY_AUTH", + "DATA_DISABLED" + ] + }, + "AddGroupMemberRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "GroupName", + "MemberName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + }, + "MemberName":{ + "shape":"MemberName", + "documentation":"

The SAMAccountName of the user, group, or computer to add as a group member.

" + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group member. This parameter is required only when adding a member outside of your Managed Microsoft AD domain to a group inside of your Managed Microsoft AD domain. This parameter defaults to the Managed Microsoft AD domain.

This parameter is case insensitive.

" + } + } + }, + "AddGroupMemberResult":{ + "type":"structure", + "members":{ + } + }, + "AttributeValue":{ + "type":"structure", + "members":{ + "BOOL":{ + "shape":"BooleanAttributeValue", + "documentation":"

Indicates that the attribute type value is a boolean. For example:

\"BOOL\": true

" + }, + "N":{ + "shape":"NumberAttributeValue", + "documentation":"

Indicates that the attribute type value is a number. For example:

\"N\": \"16\"

" + }, + "S":{ + "shape":"StringAttributeValue", + "documentation":"

Indicates that the attribute type value is a string. For example:

\"S\": \"S Group\"

" + }, + "SS":{ + "shape":"StringSetAttributeValue", + "documentation":"

Indicates that the attribute type value is a string set. For example:

\"SS\": [\"sample_service_class/host.sample.com:1234/sample_service_name_1\", \"sample_service_class/host.sample.com:1234/sample_service_name_2\"]

" + } + }, + "documentation":"

The data type for an attribute. Each attribute value is described as a name-value pair. The name is the AD schema name, and the value is the data itself. For a list of supported attributes, see Directory Service Data Attributes.

", + "union":true + }, + "Attributes":{ + "type":"map", + "key":{"shape":"LdapDisplayName"}, + "value":{"shape":"AttributeValue"}, + "max":25, + "min":1 + }, + "Boolean":{ + "type":"boolean", + "box":true + }, + "BooleanAttributeValue":{ + "type":"boolean", + "box":true, + "sensitive":true + }, + "ClientToken":{ + "type":"string", + "max":128, + "min":1, + "pattern":"^[\\x00-\\x7F]+$" + }, + "ConflictException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"} + }, + "documentation":"

This error will occur when you try to create a resource that conflicts with an existing object. It can also occur when adding a member to a group that the member is already in.

This error can be caused by a request sent within the 8-hour idempotency window with the same client token but different input parameters. Client tokens should not be re-used across different requests. After 8 hours, any request with the same client token is treated as a new request.

", + "error":{ + "httpStatusCode":409, + "senderFault":true + }, + "exception":true + }, + "CreateGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

The scope of the AD group. For details, see Active Directory security group scope.

" + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

The AD group type. For details, see Active Directory security group type.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

An expression that defines one or more attributes with the data type and value of each attribute.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + } + } + }, + "CreateGroupResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the group.

" + } + } + }, + "CreateUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that’s associated with the user.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

The email address of the user.

" + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

The first name of the user.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

An expression that defines one or more attribute names with the data type and value of each attribute. A key is an attribute name, and the value is a list of maps. For a list of supported attributes, see Directory Service Data Attributes.

Attribute names are case insensitive.

" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + }, + "Surname":{ + "shape":"Surname", + "documentation":"

The last name of the user.

" + } + } + }, + "CreateUserResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory where the address block is added.

" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the user.

" + } + } + }, + "DeleteGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + } + } + }, + "DeleteGroupResult":{ + "type":"structure", + "members":{ + } + }, + "DeleteUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + } + } + }, + "DeleteUserResult":{ + "type":"structure", + "members":{ + } + }, + "DescribeGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The Identifier (ID) of the directory associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "OtherAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

One or more attributes to be returned for the group. For a list of supported attributes, see Directory Service Data Attributes.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group.

This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

This value is case insensitive.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + } + } + }, + "DescribeGroupResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

" + }, + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

The distinguished name of the object.

" + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

The scope of the AD group. For details, see Active Directory security groups.

" + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

The AD group type. For details, see Active Directory security group type.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

The attribute values that are returned for the attribute names that are included in the request.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the group.

" + } + } + }, + "DescribeUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "OtherAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

One or more attribute names to be returned for the user. A key is an attribute name, and the value is a list of maps. For a list of supported attributes, see Directory Service Data Attributes.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the user.

This parameter is optional, so you can return users outside your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD users are returned.

This value is case insensitive.

" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + } + } + }, + "DescribeUserResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

" + }, + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

The distinguished name of the object.

" + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

The email address of the user.

" + }, + "Enabled":{ + "shape":"Boolean", + "documentation":"

Indicates whether the user account is active.

" + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

The first name of the user.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

The attribute values that are returned for the attribute names that are included in the request.

Attribute names are case insensitive.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the user.

" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the user.

" + }, + "Surname":{ + "shape":"Surname", + "documentation":"

The last name of the user.

" + }, + "UserPrincipalName":{ + "shape":"UserPrincipalName", + "documentation":"

The UPN that is an Internet-style login name for a user and is based on the Internet standard RFC 822. The UPN is shorter than the distinguished name and easier to remember.

" + } + } + }, + "DirectoryId":{ + "type":"string", + "pattern":"^d-[0-9a-f]{10}$" + }, + "DirectoryUnavailableException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "Reason":{ + "shape":"DirectoryUnavailableReason", + "documentation":"

Reason the request failed for the specified directory.

" + } + }, + "documentation":"

The request could not be completed due to a problem in the configuration or current state of the specified directory.

", + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true, + "retryable":{"throttling":false} + }, + "DirectoryUnavailableReason":{ + "type":"string", + "enum":[ + "INVALID_DIRECTORY_STATE", + "DIRECTORY_TIMEOUT", + "DIRECTORY_RESOURCES_EXCEEDED", + "NO_DISK_SPACE", + "TRUST_AUTH_FAILURE" + ] + }, + "DisableUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + } + } + }, + "DisableUserResult":{ + "type":"structure", + "members":{ + } + }, + "DistinguishedName":{ + "type":"string", + "max":256, + "min":1, + "sensitive":true + }, + "EmailAddress":{ + "type":"string", + "max":256, + "min":1, + "sensitive":true + }, + "ExceptionMessage":{"type":"string"}, + "GivenName":{ + "type":"string", + "max":64, + "min":1, + "sensitive":true + }, + "Group":{ + "type":"structure", + "required":["SAMAccountName"], + "members":{ + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

The distinguished name of the object.

" + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

The scope of the AD group. For details, see Active Directory security groups

" + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

The AD group type. For details, see Active Directory security group type.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

An expression of one or more attributes, data types, and the values of a group.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the group.

" + } + }, + "documentation":"

A group object that contains identifying information and attributes for a specified group.

" + }, + "GroupList":{ + "type":"list", + "member":{"shape":"Group"} + }, + "GroupName":{ + "type":"string", + "max":64, + "min":1, + "pattern":"^[^:;|=+\"*?<>/\\\\,\\[\\]@]+$" + }, + "GroupScope":{ + "type":"string", + "enum":[ + "DomainLocal", + "Global", + "Universal", + "BuiltinLocal" + ] + }, + "GroupSummary":{ + "type":"structure", + "required":[ + "GroupScope", + "GroupType", + "SAMAccountName", + "SID" + ], + "members":{ + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

The scope of the AD group. For details, see Active Directory security groups.

" + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

The AD group type. For details, see Active Directory security group type.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the group.

" + } + }, + "documentation":"

A structure containing a subset of fields of a group object from a directory.

" + }, + "GroupSummaryList":{ + "type":"list", + "member":{"shape":"GroupSummary"} + }, + "GroupType":{ + "type":"string", + "enum":[ + "Distribution", + "Security" + ] + }, + "Integer":{ + "type":"integer", + "box":true + }, + "InternalServerException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"} + }, + "documentation":"

The operation didn't succeed because an internal error occurred. Try again later.

", + "error":{"httpStatusCode":500}, + "exception":true, + "fault":true, + "retryable":{"throttling":false} + }, + "LdapDisplayName":{ + "type":"string", + "max":63, + "min":1, + "pattern":"^[A-Za-z*][A-Za-z-*]*$" + }, + "LdapDisplayNameList":{ + "type":"list", + "member":{"shape":"LdapDisplayName"}, + "max":25, + "min":1 + }, + "ListGroupMembersRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

The maximum number of results to be returned per request.

" + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group member. This parameter defaults to the Managed Microsoft AD domain.

This parameter is optional and case insensitive.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group.

This parameter is optional, so you can return members from a group outside of your Managed Microsoft AD domain. When no value is defined, only members of your Managed Microsoft AD groups are returned.

This value is case insensitive.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + } + } + }, + "ListGroupMembersResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

Identifier (ID) of the directory associated with the group.

" + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the member.

" + }, + "Members":{ + "shape":"MemberList", + "documentation":"

The member information that the request returns.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group.

" + } + } + }, + "ListGroupsForMemberRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the member.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

The maximum number of results to be returned per request.

" + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group member.

This parameter is optional, so you can limit your results to the group members in a specific domain.

This parameter is case insensitive and defaults to Realm

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group.

This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

This value is case insensitive and defaults to your Managed Microsoft AD domain.

" + }, + "SAMAccountName":{ + "shape":"MemberName", + "documentation":"

The SAMAccountName of the user, group, or computer that's a member of the group.

" + } + } + }, + "ListGroupsForMemberResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the member.

" + }, + "Groups":{ + "shape":"GroupSummaryList", + "documentation":"

The group information that the request returns.

" + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

The domain that's associated with the member.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain that's associated with the group.

" + } + } + }, + "ListGroupsRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

The maximum number of results to be returned per request.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name associated with the directory.

This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

This value is case insensitive.

" + } + } + }, + "ListGroupsResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

" + }, + "Groups":{ + "shape":"GroupSummaryList", + "documentation":"

The group information that the request returns.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name associated with the group.

" + } + } + }, + "ListUsersRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

The maximum number of results to be returned per request.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the user.

This parameter is optional, so you can return users outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD users are returned.

This value is case insensitive.

" + } + } + }, + "ListUsersResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain that's associated with the user.

" + }, + "Users":{ + "shape":"UserSummaryList", + "documentation":"

The user information that the request returns.

" + } + } + }, + "MaxResults":{ + "type":"integer", + "box":true, + "max":250, + "min":1 + }, + "Member":{ + "type":"structure", + "required":[ + "MemberType", + "SAMAccountName", + "SID" + ], + "members":{ + "MemberType":{ + "shape":"MemberType", + "documentation":"

The AD type of the member object.

" + }, + "SAMAccountName":{ + "shape":"MemberName", + "documentation":"

The name of the group member.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the group member.

" + } + }, + "documentation":"

A member object that contains identifying information for a specified member.

" + }, + "MemberList":{ + "type":"list", + "member":{"shape":"Member"} + }, + "MemberName":{ + "type":"string", + "max":63, + "min":1, + "pattern":"^[^:;|=+\"*?<>/\\\\,\\[\\]@]+$" + }, + "MemberType":{ + "type":"string", + "enum":[ + "USER", + "GROUP", + "COMPUTER" + ] + }, + "NextToken":{ + "type":"string", + "max":6144, + "min":1, + "sensitive":true + }, + "NumberAttributeValue":{ + "type":"long", + "box":true, + "sensitive":true + }, + "Realm":{ + "type":"string", + "max":255, + "min":1, + "pattern":"^([a-zA-Z0-9]+[\\\\.-])+([a-zA-Z0-9])+[.]?$" + }, + "RemoveGroupMemberRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "GroupName", + "MemberName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the member.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + }, + "MemberName":{ + "shape":"MemberName", + "documentation":"

The SAMAccountName of the user, group, or computer to remove from the group.

" + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group member. This parameter defaults to the Managed Microsoft AD domain.

This parameter is optional and case insensitive.

" + } + } + }, + "RemoveGroupMemberResult":{ + "type":"structure", + "members":{ + } + }, + "ResourceNotFoundException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"} + }, + "documentation":"

The resource couldn't be found.

", + "error":{ + "httpStatusCode":404, + "senderFault":true + }, + "exception":true + }, + "SID":{ + "type":"string", + "max":256, + "min":1 + }, + "SearchGroupsRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SearchAttributes", + "SearchString" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

The maximum number of results to be returned per request.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the group.

This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

This value is case insensitive.

" + }, + "SearchAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

One or more data attributes that are used to search for a group. For a list of supported attributes, see Directory Service Data Attributes.

" + }, + "SearchString":{ + "shape":"SearchString", + "documentation":"

The attribute value that you want to search for.

Wildcard (*) searches aren't supported. For a list of supported attributes, see Directory Service Data Attributes.

" + } + } + }, + "SearchGroupsResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

" + }, + "Groups":{ + "shape":"GroupList", + "documentation":"

The group information that the request returns.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain that's associated with the group.

" + } + } + }, + "SearchString":{ + "type":"string", + "max":64, + "min":1, + "sensitive":true + }, + "SearchUsersRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SearchAttributes", + "SearchString" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

The maximum number of results to be returned per request.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain name that's associated with the user.

This parameter is optional, so you can return users outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD users are returned.

This value is case insensitive.

" + }, + "SearchAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

One or more data attributes that are used to search for a user. For a list of supported attributes, see Directory Service Data Attributes.

" + }, + "SearchString":{ + "shape":"SearchString", + "documentation":"

The attribute value that you want to search for.

Wildcard (*) searches aren't supported. For a list of supported attributes, see Directory Service Data Attributes.

" + } + } + }, + "SearchUsersResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory where the address block is added.

" + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

An encoded paging token for paginated calls that can be passed back to retrieve the next page.

" + }, + "Realm":{ + "shape":"Realm", + "documentation":"

The domain that's associated with the user.

" + }, + "Users":{ + "shape":"UserList", + "documentation":"

The user information that the request returns.

" + } + } + }, + "StringAttributeValue":{ + "type":"string", + "max":1024, + "min":1, + "sensitive":true + }, + "StringSetAttributeValue":{ + "type":"list", + "member":{"shape":"StringAttributeValue"}, + "max":25, + "min":0, + "sensitive":true + }, + "Surname":{ + "type":"string", + "max":64, + "min":1, + "sensitive":true + }, + "ThrottlingException":{ + "type":"structure", + "required":["Message"], + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "RetryAfterSeconds":{ + "shape":"Integer", + "documentation":"

The recommended amount of seconds to retry after a throttling exception.

", + "location":"header", + "locationName":"Retry-After" + } + }, + "documentation":"

The limit on the number of requests per second has been exceeded.

", + "error":{ + "httpStatusCode":429, + "senderFault":true + }, + "exception":true, + "retryable":{"throttling":true} + }, + "UpdateGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the group.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

The scope of the AD group. For details, see Active Directory security groups.

" + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

The AD group type. For details, see Active Directory security group type.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

An expression that defines one or more attributes with the data type and the value of each attribute.

" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

The name of the group.

" + }, + "UpdateType":{ + "shape":"UpdateType", + "documentation":"

The type of update to be performed. If no value exists for the attribute, use ADD. Otherwise, use REPLACE to change an attribute value or REMOVE to clear the attribute value.

" + } + } + }, + "UpdateGroupResult":{ + "type":"structure", + "members":{ + } + }, + "UpdateType":{ + "type":"string", + "enum":[ + "ADD", + "REPLACE", + "REMOVE" + ] + }, + "UpdateUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

This parameter is optional when using the CLI or SDK.

", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The identifier (ID) of the directory that's associated with the user.

", + "location":"querystring", + "locationName":"DirectoryId" + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

The email address of the user.

" + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

The first name of the user.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

An expression that defines one or more attribute names with the data type and value of each attribute. A key is an attribute name, and the value is a list of maps. For a list of supported attributes, see Directory Service Data Attributes.

Attribute names are case insensitive.

" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + }, + "Surname":{ + "shape":"Surname", + "documentation":"

The last name of the user.

" + }, + "UpdateType":{ + "shape":"UpdateType", + "documentation":"

The type of update to be performed. If no value exists for the attribute, use ADD. Otherwise, use REPLACE to change an attribute value or REMOVE to clear the attribute value.

" + } + } + }, + "UpdateUserResult":{ + "type":"structure", + "members":{ + } + }, + "User":{ + "type":"structure", + "required":["SAMAccountName"], + "members":{ + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

The distinguished name of the object.

" + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

The email address of the user.

" + }, + "Enabled":{ + "shape":"Boolean", + "documentation":"

Indicates whether the user account is active.

" + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

The first name of the user.

" + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

An expression that includes one or more attributes, data types, and values of a user.

" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the user.

" + }, + "Surname":{ + "shape":"Surname", + "documentation":"

The last name of the user.

" + }, + "UserPrincipalName":{ + "shape":"UserPrincipalName", + "documentation":"

The UPN that is an internet-style login name for a user and based on the internet standard RFC 822. The UPN is shorter than the distinguished name and easier to remember.

" + } + }, + "documentation":"

A user object that contains identifying information and attributes for a specified user.

" + }, + "UserList":{ + "type":"list", + "member":{"shape":"User"} + }, + "UserName":{ + "type":"string", + "max":20, + "min":1, + "pattern":"^[\\w\\-.]+$" + }, + "UserPrincipalName":{ + "type":"string", + "max":256, + "min":1, + "sensitive":true + }, + "UserSummary":{ + "type":"structure", + "required":[ + "Enabled", + "SAMAccountName", + "SID" + ], + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

Indicates whether the user account is active.

" + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

The first name of the user.

" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

The name of the user.

" + }, + "SID":{ + "shape":"SID", + "documentation":"

The unique security identifier (SID) of the user.

" + }, + "Surname":{ + "shape":"Surname", + "documentation":"

The last name of the user.

" + } + }, + "documentation":"

A structure containing a subset of the fields of a user object from a directory.

" + }, + "UserSummaryList":{ + "type":"list", + "member":{"shape":"UserSummary"} + }, + "ValidationException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "Reason":{ + "shape":"ValidationExceptionReason", + "documentation":"

Reason the request failed validation.

" + } + }, + "documentation":"

The request isn't valid. Review the details in the error message to update the invalid parameters or values in your request.

", + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "ValidationExceptionReason":{ + "type":"string", + "enum":[ + "INVALID_REALM", + "INVALID_DIRECTORY_TYPE", + "INVALID_SECONDARY_REGION", + "INVALID_NEXT_TOKEN", + "INVALID_ATTRIBUTE_VALUE", + "INVALID_ATTRIBUTE_NAME", + "INVALID_ATTRIBUTE_FOR_USER", + "INVALID_ATTRIBUTE_FOR_GROUP", + "INVALID_ATTRIBUTE_FOR_SEARCH", + "INVALID_ATTRIBUTE_FOR_MODIFY", + "DUPLICATE_ATTRIBUTE", + "MISSING_ATTRIBUTE", + "ATTRIBUTE_EXISTS", + "LDAP_SIZE_LIMIT_EXCEEDED", + "LDAP_UNSUPPORTED_OPERATION" + ] + } + }, + "documentation":"

Amazon Web Services Directory Service Data is an extension of Directory Service. This API reference provides detailed information about Directory Service Data operations and object types.

With Directory Service Data, you can create, read, update, and delete users, groups, and memberships from your Managed Microsoft AD without additional costs and without deploying dedicated management instances. You can also perform built-in object management tasks across directories without direct network connectivity, which simplifies provisioning and access management to achieve fully automated deployments. Directory Service Data supports user and group write operations, such as CreateUser and CreateGroup, within the organizational unit (OU) of your Managed Microsoft AD. Directory Service Data supports read operations, such as ListUsers and ListGroups, on all users, groups, and group memberships within your Managed Microsoft AD and across trusted realms. Directory Service Data supports adding and removing group members in your OU and the Amazon Web Services Delegated Groups OU, so you can grant and deny access to specific roles and permissions. For more information, see Manage users and groups in the Directory Service Administration Guide.

Directory management operations and configuration changes made against the Directory Service API will also reflect in Directory Service Data API with eventual consistency. You can expect a short delay between management changes, such as adding a new directory trust and calling the Directory Service Data API for the newly created trusted realm.

Directory Service Data connects to your Managed Microsoft AD domain controllers and performs operations on underlying directory objects. When you create your Managed Microsoft AD, you choose subnets for domain controllers that Directory Service creates on your behalf. If a domain controller is unavailable, Directory Service Data uses an available domain controller. As a result, you might notice eventual consistency while objects replicate from one domain controller to another domain controller. For more information, see What gets created in the Directory Service Administration Guide. Directory limits vary by Managed Microsoft AD edition:

Directory Service Data only supports the Managed Microsoft AD directory type and is only available in the primary Amazon Web Services Region. For more information, see Managed Microsoft AD and Primary vs additional Regions in the Directory Service Administration Guide.

" +} diff --git a/botocore/data/ds/2015-04-16/service-2.json b/botocore/data/ds/2015-04-16/service-2.json index 00e6e0435e..92bd99148b 100644 --- a/botocore/data/ds/2015-04-16/service-2.json +++ b/botocore/data/ds/2015-04-16/service-2.json @@ -452,6 +452,23 @@ ], "documentation":"

Obtains information about the directories that belong to this account.

You can retrieve information about specific directories by passing the directory identifiers in the DirectoryIds parameter. Otherwise, all directories that belong to the current account are returned.

This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the DescribeDirectoriesResult.NextToken member contains a token that you pass in the next call to DescribeDirectories to retrieve the next set of items.

You can also specify a maximum number of return results with the Limit parameter.

" }, + "DescribeDirectoryDataAccess":{ + "name":"DescribeDirectoryDataAccess", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeDirectoryDataAccessRequest"}, + "output":{"shape":"DescribeDirectoryDataAccessResult"}, + "errors":[ + {"shape":"DirectoryDoesNotExistException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ClientException"}, + {"shape":"ServiceException"} + ], + "documentation":"

Obtains status of directory data access enablement through the Directory Service Data API for the specified directory.

" + }, "DescribeDomainControllers":{ "name":"DescribeDomainControllers", "http":{ @@ -630,6 +647,25 @@ ], "documentation":"

Disables alternative client authentication methods for the specified directory.

" }, + "DisableDirectoryDataAccess":{ + "name":"DisableDirectoryDataAccess", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DisableDirectoryDataAccessRequest"}, + "output":{"shape":"DisableDirectoryDataAccessResult"}, + "errors":[ + {"shape":"DirectoryDoesNotExistException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"DirectoryInDesiredStateException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ClientException"}, + {"shape":"ServiceException"} + ], + "documentation":"

Deactivates access to directory data via the Directory Service Data API for the specified directory.

" + }, "DisableLDAPS":{ "name":"DisableLDAPS", "http":{ @@ -700,6 +736,25 @@ ], "documentation":"

Enables alternative client authentication methods for the specified directory.

" }, + "EnableDirectoryDataAccess":{ + "name":"EnableDirectoryDataAccess", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"EnableDirectoryDataAccessRequest"}, + "output":{"shape":"EnableDirectoryDataAccessResult"}, + "errors":[ + {"shape":"DirectoryDoesNotExistException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"DirectoryInDesiredStateException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ClientException"}, + {"shape":"ServiceException"} + ], + "documentation":"

Enables access to directory data via the Directory Service Data API for the specified directory.

" + }, "EnableLDAPS":{ "name":"EnableLDAPS", "http":{ @@ -990,7 +1045,7 @@ {"shape":"ClientException"}, {"shape":"ServiceException"} ], - "documentation":"

Resets the password for any user in your Managed Microsoft AD or Simple AD directory.

You can reset the password for any user in your directory with the following exceptions:

" + "documentation":"

Resets the password for any user in your Managed Microsoft AD or Simple AD directory. Disabled users will become enabled and can be authenticated following the API call.

You can reset the password for any user in your directory with the following exceptions:

" }, "RestoreFromSnapshot":{ "name":"RestoreFromSnapshot", @@ -1219,7 +1274,7 @@ "Message":{"shape":"ExceptionMessage"}, "RequestId":{"shape":"RequestId"} }, - "documentation":"

Client authentication is not available in this region at this time.

", + "documentation":"

You do not have sufficient access to perform this action.

", "exception":true }, "AccessUrl":{ @@ -1244,7 +1299,7 @@ }, "UpdateSecurityGroupForDirectoryControllers":{ "shape":"UpdateSecurityGroupForDirectoryControllers", - "documentation":"

If set to true, updates the inbound and outbound rules of the security group that has the description: \"Amazon Web Services created security group for directory ID directory controllers.\" Following are the new rules:

Inbound:

Outbound:

These security rules impact an internal network interface that is not exposed publicly.

" + "documentation":"

If set to true, updates the inbound and outbound rules of the security group that has the description: \"Amazon Web Services created security group for directory ID directory controllers.\" Following are the new rules:

Inbound:

Outbound:

These security rules impact an internal network interface that is not exposed publicly.

" } } }, @@ -1951,7 +2006,7 @@ }, "TrustPassword":{ "shape":"TrustPassword", - "documentation":"

The trust password. The must be the same password that was used when creating the trust relationship on the external domain.

" + "documentation":"

The trust password. The trust password must be the same password that was used when creating the trust relationship on the external domain.

" }, "TrustDirection":{ "shape":"TrustDirection", @@ -1993,6 +2048,16 @@ "min":1, "pattern":"^(?!.*\\\\|.*\"|.*\\/|.*\\[|.*\\]|.*:|.*;|.*\\||.*=|.*,|.*\\+|.*\\*|.*\\?|.*<|.*>|.*@).*$" }, + "DataAccessStatus":{ + "type":"string", + "enum":[ + "Disabled", + "Disabling", + "Enabled", + "Enabling", + "Failed" + ] + }, "DeleteAssociatedConditionalForwarder":{"type":"boolean"}, "DeleteConditionalForwarderRequest":{ "type":"structure", @@ -2264,6 +2329,25 @@ }, "documentation":"

Contains the results of the DescribeDirectories operation.

" }, + "DescribeDirectoryDataAccessRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The directory identifier.

" + } + } + }, + "DescribeDirectoryDataAccessResult":{ + "type":"structure", + "members":{ + "DataAccessStatus":{ + "shape":"DataAccessStatus", + "documentation":"

The current status of data access through the Directory Service Data API.

" + } + } + }, "DescribeDomainControllersRequest":{ "type":"structure", "required":["DirectoryId"], @@ -2753,7 +2837,7 @@ }, "Type":{ "shape":"DirectoryType", - "documentation":"

The directory size.

" + "documentation":"

The directory type.

" }, "VpcSettings":{ "shape":"DirectoryVpcSettingsDescription", @@ -2925,7 +3009,8 @@ "RestoreFailed", "Deleting", "Deleted", - "Failed" + "Failed", + "Updating" ] }, "DirectoryType":{ @@ -2943,7 +3028,7 @@ "Message":{"shape":"ExceptionMessage"}, "RequestId":{"shape":"RequestId"} }, - "documentation":"

The specified directory is unavailable or could not be found.

", + "documentation":"

The specified directory is unavailable.

", "exception":true }, "DirectoryVpcSettings":{ @@ -2999,7 +3084,7 @@ }, "Type":{ "shape":"ClientAuthenticationType", - "documentation":"

The type of client authentication to disable. Currently, only the parameter, SmartCard is supported.

" + "documentation":"

The type of client authentication to disable. Currently the only parameter \"SmartCard\" is supported.

" } } }, @@ -3008,6 +3093,21 @@ "members":{ } }, + "DisableDirectoryDataAccessRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The directory identifier.

" + } + } + }, + "DisableDirectoryDataAccessResult":{ + "type":"structure", + "members":{ + } + }, "DisableLDAPSRequest":{ "type":"structure", "required":[ @@ -3148,7 +3248,8 @@ "Restoring", "Deleting", "Deleted", - "Failed" + "Failed", + "Updating" ] }, "DomainControllerStatusReason":{"type":"string"}, @@ -3178,6 +3279,21 @@ "members":{ } }, + "EnableDirectoryDataAccessRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

The directory identifier.

" + } + } + }, + "EnableDirectoryDataAccessResult":{ + "type":"structure", + "members":{ + } + }, "EnableLDAPSRequest":{ "type":"structure", "required":[ @@ -3865,7 +3981,7 @@ }, "RadiusRetries":{ "shape":"RadiusRetries", - "documentation":"

The maximum number of times that communication with the RADIUS server is attempted.

" + "documentation":"

The maximum number of times that communication with the RADIUS server is retried after the initial attempt.

" }, "SharedSecret":{ "shape":"RadiusSharedSecret", @@ -3903,7 +4019,7 @@ }, "RadiusTimeout":{ "type":"integer", - "max":20, + "max":50, "min":1 }, "RegionDescription":{ @@ -4635,11 +4751,11 @@ "members":{ "Key":{ "shape":"TagKey", - "documentation":"

Required name of the tag. The string value can be Unicode characters and cannot be prefixed with \"aws:\". The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" + "documentation":"

Required name of the tag. The string value can be Unicode characters and cannot be prefixed with \"aws:\". The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-', ':', '@'(Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" }, "Value":{ "shape":"TagValue", - "documentation":"

The optional value of the tag. The string value can be Unicode characters. The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" + "documentation":"

The optional value of the tag. The string value can be Unicode characters. The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-', ':', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" } }, "documentation":"

Metadata assigned to a directory consisting of a key-value pair.

" diff --git a/botocore/data/guardduty/2017-11-28/service-2.json b/botocore/data/guardduty/2017-11-28/service-2.json index 3d36f7a8c8..67f67e8bc7 100644 --- a/botocore/data/guardduty/2017-11-28/service-2.json +++ b/botocore/data/guardduty/2017-11-28/service-2.json @@ -3739,6 +3739,11 @@ "shape":"String", "documentation":"

The name of the task group that's associated with the task.

", "locationName":"group" + }, + "LaunchType":{ + "shape":"String", + "documentation":"

A capacity on which the task is running. For example, Fargate and EC2.

", + "locationName":"launchType" } }, "documentation":"

Contains information about the task in an ECS cluster.

" @@ -5263,7 +5268,7 @@ "SourceIps":{ "shape":"SourceIps", "documentation":"

The IP of the Kubernetes API caller and the IPs of any proxies or load balancers between the caller and the API endpoint.

", - "locationName":"sourceIps" + "locationName":"sourceIPs" }, "UserAgent":{ "shape":"String", diff --git a/botocore/data/mailmanager/2023-10-17/service-2.json b/botocore/data/mailmanager/2023-10-17/service-2.json index 1991fd06c2..ddfb826d08 100644 --- a/botocore/data/mailmanager/2023-10-17/service-2.json +++ b/botocore/data/mailmanager/2023-10-17/service-2.json @@ -11,7 +11,8 @@ "signatureVersion":"v4", "signingName":"ses", "targetPrefix":"MailManagerSvc", - "uid":"mailmanager-2023-10-17" + "uid":"mailmanager-2023-10-17", + "auth":["aws.auth#sigv4"] }, "operations":{ "CreateAddonInstance":{ @@ -717,7 +718,7 @@ {"shape":"ConflictException"}, {"shape":"ResourceNotFoundException"} ], - "documentation":"

>Update attributes of an already provisioned rule set.

", + "documentation":"

Update attributes of an already provisioned rule set.

", "idempotent":true }, "UpdateTrafficPolicy":{ @@ -2725,6 +2726,10 @@ }, "documentation":"

The textual body content of an email message.

" }, + "MimeHeaderAttribute":{ + "type":"string", + "pattern":"^X-[a-zA-Z0-9-]{1,256}$" + }, "NameOrArn":{ "type":"string", "max":2048, @@ -3388,6 +3393,10 @@ "Attribute":{ "shape":"RuleStringEmailAttribute", "documentation":"

The email attribute to evaluate in a string condition expression.

" + }, + "MimeHeaderAttribute":{ + "shape":"MimeHeaderAttribute", + "documentation":"

The email MIME X-Header attribute to evaluate in a string condition expression.

" } }, "documentation":"

The string to evaluate in a string condition expression.

", @@ -3750,9 +3759,14 @@ "type":"list", "member":{"shape":"String"} }, + "StringValue":{ + "type":"string", + "max":2048, + "min":1 + }, "StringValueList":{ "type":"list", - "member":{"shape":"String"}, + "member":{"shape":"StringValue"}, "max":10, "min":1 }, @@ -4052,5 +4066,5 @@ "exception":true } }, - "documentation":"

AWS SES Mail Manager API

AWS SES Mail Manager API contains operations and data types that comprise the Mail Manager feature of Amazon Simple Email Service.

Mail Manager is a set of Amazon SES email gateway features designed to help you strengthen your organization's email infrastructure, simplify email workflow management, and streamline email compliance control. To learn more, see the Mail Manager chapter in the Amazon SES Developer Guide.

" + "documentation":"

Amazon SES Mail Manager API

The Amazon SES Mail Manager API contains operations and data types that comprise the Mail Manager feature of Amazon Simple Email Service (SES).

Mail Manager is a set of Amazon SES email gateway features designed to help you strengthen your organization's email infrastructure, simplify email workflow management, and streamline email compliance control. To learn more, see the Mail Manager chapter in the Amazon SES Developer Guide.

" } diff --git a/botocore/data/rds/2014-10-31/service-2.json b/botocore/data/rds/2014-10-31/service-2.json index 8a726e1b3f..98b6238342 100644 --- a/botocore/data/rds/2014-10-31/service-2.json +++ b/botocore/data/rds/2014-10-31/service-2.json @@ -2703,7 +2703,7 @@ {"shape":"CertificateNotFoundFault"}, {"shape":"TenantDatabaseQuotaExceededFault"} ], - "documentation":"

Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with most of the source's original configuration, including the default security group and DB parameter group. By default, the new DB instance is created as a Single-AZ deployment, except when the instance is a SQL Server instance that has an option group associated with mirroring. In this case, the instance becomes a Multi-AZ deployment, not a Single-AZ deployment.

If you want to replace your original DB instance with the new, restored DB instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot operation. RDS doesn't allow two DB instances with the same name. After you have renamed your original DB instance with a different identifier, then you can pass the original name of the DB instance as the DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot operation. The result is that you replace the original DB instance with the DB instance created from the snapshot.

If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

This command doesn't apply to Aurora MySQL and Aurora PostgreSQL. For Aurora, use RestoreDBClusterFromSnapshot.

" + "documentation":"

Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with most of the source's original configuration, including the default security group and DB parameter group. By default, the new DB instance is created as a Single-AZ deployment, except when the instance is a SQL Server instance that has an option group associated with mirroring. In this case, the instance becomes a Multi-AZ deployment, not a Single-AZ deployment.

If you want to replace your original DB instance with the new, restored DB instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot operation. RDS doesn't allow two DB instances with the same name. After you have renamed your original DB instance with a different identifier, then you can pass the original name of the DB instance as the DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot operation. The result is that you replace the original DB instance with the DB instance created from the snapshot.

If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

To restore from a DB snapshot with an unsupported engine version, you must first upgrade the engine version of the snapshot. For more information about upgrading a RDS for MySQL DB snapshot engine version, see Upgrading a MySQL DB snapshot engine version. For more information about upgrading a RDS for PostgreSQL DB snapshot engine version, Upgrading a PostgreSQL DB snapshot engine version.

This command doesn't apply to Aurora MySQL and Aurora PostgreSQL. For Aurora, use RestoreDBClusterFromSnapshot.

" }, "RestoreDBInstanceFromS3":{ "name":"RestoreDBInstanceFromS3", diff --git a/botocore/data/s3/2006-03-01/service-2.json b/botocore/data/s3/2006-03-01/service-2.json index 2d55da80e1..dfc7ca0e2c 100644 --- a/botocore/data/s3/2006-03-01/service-2.json +++ b/botocore/data/s3/2006-03-01/service-2.json @@ -39,7 +39,7 @@ "input":{"shape":"CompleteMultipartUploadRequest"}, "output":{"shape":"CompleteMultipartUploadOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadComplete.html", - "documentation":"

Completes a multipart upload by assembling previously uploaded parts.

You first initiate the multipart upload and then upload all parts using the UploadPart operation or the UploadPartCopy operation. After successfully uploading all relevant parts of an upload, you call this CompleteMultipartUpload operation to complete the upload. Upon receiving this request, Amazon S3 concatenates all the parts in ascending order by part number to create a new object. In the CompleteMultipartUpload request, you must provide the parts list and ensure that the parts list is complete. The CompleteMultipartUpload API operation concatenates the parts that you provide in the list. For each part in the list, you must provide the PartNumber value and the ETag value that are returned after that part was uploaded.

The processing of a CompleteMultipartUpload request could take several minutes to finalize. After Amazon S3 begins processing the request, it sends an HTTP response header that specifies a 200 OK response. While processing is in progress, Amazon S3 periodically sends white space characters to keep the connection from timing out. A request could fail after the initial 200 OK response has been sent. This means that a 200 OK response can contain either a success or an error. The error response might be embedded in the 200 OK response. If you call this API operation directly, make sure to design your application to parse the contents of the response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and apply error handling per your configuration settings (including automatically retrying the request as appropriate). If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use exceptions, they return an error).

Note that if CompleteMultipartUpload fails, applications should be prepared to retry any failed requests (including 500 error responses). For more information, see Amazon S3 Error Best Practices.

You can't use Content-Type: application/x-www-form-urlencoded for the CompleteMultipartUpload requests. Also, if you don't provide a Content-Type header, CompleteMultipartUpload can still return a 200 OK response.

For more information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide.

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Special errors
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to CompleteMultipartUpload:

" + "documentation":"

Completes a multipart upload by assembling previously uploaded parts.

You first initiate the multipart upload and then upload all parts using the UploadPart operation or the UploadPartCopy operation. After successfully uploading all relevant parts of an upload, you call this CompleteMultipartUpload operation to complete the upload. Upon receiving this request, Amazon S3 concatenates all the parts in ascending order by part number to create a new object. In the CompleteMultipartUpload request, you must provide the parts list and ensure that the parts list is complete. The CompleteMultipartUpload API operation concatenates the parts that you provide in the list. For each part in the list, you must provide the PartNumber value and the ETag value that are returned after that part was uploaded.

The processing of a CompleteMultipartUpload request could take several minutes to finalize. After Amazon S3 begins processing the request, it sends an HTTP response header that specifies a 200 OK response. While processing is in progress, Amazon S3 periodically sends white space characters to keep the connection from timing out. A request could fail after the initial 200 OK response has been sent. This means that a 200 OK response can contain either a success or an error. The error response might be embedded in the 200 OK response. If you call this API operation directly, make sure to design your application to parse the contents of the response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and apply error handling per your configuration settings (including automatically retrying the request as appropriate). If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use exceptions, they return an error).

Note that if CompleteMultipartUpload fails, applications should be prepared to retry any failed requests (including 500 error responses). For more information, see Amazon S3 Error Best Practices.

You can't use Content-Type: application/x-www-form-urlencoded for the CompleteMultipartUpload requests. Also, if you don't provide a Content-Type header, CompleteMultipartUpload can still return a 200 OK response.

For more information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide.

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Special errors
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to CompleteMultipartUpload:

" }, "CopyObject":{ "name":"CopyObject", @@ -53,7 +53,7 @@ {"shape":"ObjectNotInActiveTierError"} ], "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html", - "documentation":"

Creates a copy of an object that is already stored in Amazon S3.

You can store individual objects of up to 5 TB in Amazon S3. You create a copy of your object up to 5 GB in size in a single atomic action using this API. However, to copy an object greater than 5 GB, you must use the multipart upload Upload Part - Copy (UploadPartCopy) API. For more information, see Copy Object Using the REST Multipart Upload API.

You can copy individual objects between general purpose buckets, between directory buckets, and between general purpose buckets and directory buckets.

Both the Region that you want to copy the object from and the Region that you want to copy the object to must be enabled for your account. For more information about how to enable a Region for your account, see Enable or disable a Region for standalone accounts in the Amazon Web Services Account Management Guide.

Amazon S3 transfer acceleration does not support cross-Region copies. If you request a cross-Region copy using a transfer acceleration endpoint, you get a 400 Bad Request error. For more information, see Transfer Acceleration.

Authentication and authorization

All CopyObject requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

Directory buckets - You must use the IAM credentials to authenticate and authorize your access to the CopyObject API operation, instead of using the temporary security credentials through the CreateSession API operation.

Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

Permissions

You must have read access to the source object and write access to the destination bucket.

Response and special errors

When the request is an HTTP 1.1 request, the response is chunk encoded. When the request is not an HTTP 1.1 request, the response would not contain the Content-Length. You always need to read the entire response body to check if the copy succeeds.

Charge

The copy request charge is based on the storage class and Region that you specify for the destination object. The request can also result in a data retrieval charge for the source if the source storage class bills for data retrieval. If the copy source is in a different region, the data transfer is billed to the copy source account. For pricing information, see Amazon S3 pricing.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to CopyObject:

", + "documentation":"

Creates a copy of an object that is already stored in Amazon S3.

You can store individual objects of up to 5 TB in Amazon S3. You create a copy of your object up to 5 GB in size in a single atomic action using this API. However, to copy an object greater than 5 GB, you must use the multipart upload Upload Part - Copy (UploadPartCopy) API. For more information, see Copy Object Using the REST Multipart Upload API.

You can copy individual objects between general purpose buckets, between directory buckets, and between general purpose buckets and directory buckets.

Both the Region that you want to copy the object from and the Region that you want to copy the object to must be enabled for your account. For more information about how to enable a Region for your account, see Enable or disable a Region for standalone accounts in the Amazon Web Services Account Management Guide.

Amazon S3 transfer acceleration does not support cross-Region copies. If you request a cross-Region copy using a transfer acceleration endpoint, you get a 400 Bad Request error. For more information, see Transfer Acceleration.

Authentication and authorization

All CopyObject requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

Directory buckets - You must use the IAM credentials to authenticate and authorize your access to the CopyObject API operation, instead of using the temporary security credentials through the CreateSession API operation.

Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

Permissions

You must have read access to the source object and write access to the destination bucket.

Response and special errors

When the request is an HTTP 1.1 request, the response is chunk encoded. When the request is not an HTTP 1.1 request, the response would not contain the Content-Length. You always need to read the entire response body to check if the copy succeeds.

Charge

The copy request charge is based on the storage class and Region that you specify for the destination object. The request can also result in a data retrieval charge for the source if the source storage class bills for data retrieval. If the copy source is in a different region, the data transfer is billed to the copy source account. For pricing information, see Amazon S3 pricing.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to CopyObject:

", "alias":"PutObjectCopy", "staticContextParams":{ "DisableS3ExpressSessionAuth":{"value":true} @@ -88,7 +88,7 @@ "input":{"shape":"CreateMultipartUploadRequest"}, "output":{"shape":"CreateMultipartUploadOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html", - "documentation":"

This action initiates a multipart upload and returns an upload ID. This upload ID is used to associate all of the parts in the specific multipart upload. You specify this upload ID in each of your subsequent upload part requests (see UploadPart). You also include this upload ID in the final request to either complete or abort the multipart upload request. For more information about multipart uploads, see Multipart Upload Overview in the Amazon S3 User Guide.

After you initiate a multipart upload and upload one or more parts, to stop being charged for storing the uploaded parts, you must either complete or abort the multipart upload. Amazon S3 frees up the space used to store the parts and stops charging you for storing them only after you either complete or abort a multipart upload.

If you have configured a lifecycle rule to abort incomplete multipart uploads, the created multipart upload must be completed within the number of days specified in the bucket lifecycle configuration. Otherwise, the incomplete multipart upload becomes eligible for an abort action and Amazon S3 aborts the multipart upload. For more information, see Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration.

Request signing

For request signing, multipart upload is just a series of regular requests. You initiate a multipart upload, send one or more requests to upload parts, and then complete the multipart upload process. You sign each request individually. There is nothing special about signing multipart upload requests. For more information about signing, see Authenticating Requests (Amazon Web Services Signature Version 4) in the Amazon S3 User Guide.

Permissions
Encryption
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to CreateMultipartUpload:

", + "documentation":"

This action initiates a multipart upload and returns an upload ID. This upload ID is used to associate all of the parts in the specific multipart upload. You specify this upload ID in each of your subsequent upload part requests (see UploadPart). You also include this upload ID in the final request to either complete or abort the multipart upload request. For more information about multipart uploads, see Multipart Upload Overview in the Amazon S3 User Guide.

After you initiate a multipart upload and upload one or more parts, to stop being charged for storing the uploaded parts, you must either complete or abort the multipart upload. Amazon S3 frees up the space used to store the parts and stops charging you for storing them only after you either complete or abort a multipart upload.

If you have configured a lifecycle rule to abort incomplete multipart uploads, the created multipart upload must be completed within the number of days specified in the bucket lifecycle configuration. Otherwise, the incomplete multipart upload becomes eligible for an abort action and Amazon S3 aborts the multipart upload. For more information, see Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration.

Request signing

For request signing, multipart upload is just a series of regular requests. You initiate a multipart upload, send one or more requests to upload parts, and then complete the multipart upload process. You sign each request individually. There is nothing special about signing multipart upload requests. For more information about signing, see Authenticating Requests (Amazon Web Services Signature Version 4) in the Amazon S3 User Guide.

Permissions
Encryption
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to CreateMultipartUpload:

", "alias":"InitiateMultipartUpload" }, "CreateSession":{ @@ -102,7 +102,7 @@ "errors":[ {"shape":"NoSuchBucket"} ], - "documentation":"

Creates a session that establishes temporary security credentials to support fast authentication and authorization for the Zonal endpoint APIs on directory buckets. For more information about Zonal endpoint APIs that include the Availability Zone in the request endpoint, see S3 Express One Zone APIs in the Amazon S3 User Guide.

To make Zonal endpoint API requests on a directory bucket, use the CreateSession API operation. Specifically, you grant s3express:CreateSession permission to a bucket in a bucket policy or an IAM identity-based policy. Then, you use IAM credentials to make the CreateSession API request on the bucket, which returns temporary security credentials that include the access key ID, secret access key, session token, and expiration. These credentials have associated permissions to access the Zonal endpoint APIs. After the session is created, you don’t need to use other policies to grant permissions to each Zonal endpoint API individually. Instead, in your Zonal endpoint API requests, you sign your requests by applying the temporary security credentials of the session to the request headers and following the SigV4 protocol for authentication. You also apply the session token to the x-amz-s3session-token request header for authorization. Temporary security credentials are scoped to the bucket and expire after 5 minutes. After the expiration time, any calls that you make with those credentials will fail. You must use IAM credentials again to make a CreateSession API request that generates a new set of temporary credentials for use. Temporary credentials cannot be extended or refreshed beyond the original specified interval.

If you use Amazon Web Services SDKs, SDKs handle the session token refreshes automatically to avoid service interruptions when a session expires. We recommend that you use the Amazon Web Services SDKs to initiate and manage requests to the CreateSession API. For more information, see Performance guidelines and design patterns in the Amazon S3 User Guide.

Permissions

To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that grants s3express:CreateSession permission to the bucket. In a policy, you can have the s3express:SessionMode condition key to control who can create a ReadWrite or ReadOnly session. For more information about ReadWrite or ReadOnly sessions, see x-amz-create-session-mode . For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

To grant cross-account access to Zonal endpoint APIs, the bucket policy should also grant both accounts the s3express:CreateSession permission.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

", + "documentation":"

Creates a session that establishes temporary security credentials to support fast authentication and authorization for the Zonal endpoint API operations on directory buckets. For more information about Zonal endpoint API operations that include the Availability Zone in the request endpoint, see S3 Express One Zone APIs in the Amazon S3 User Guide.

To make Zonal endpoint API requests on a directory bucket, use the CreateSession API operation. Specifically, you grant s3express:CreateSession permission to a bucket in a bucket policy or an IAM identity-based policy. Then, you use IAM credentials to make the CreateSession API request on the bucket, which returns temporary security credentials that include the access key ID, secret access key, session token, and expiration. These credentials have associated permissions to access the Zonal endpoint API operations. After the session is created, you don’t need to use other policies to grant permissions to each Zonal endpoint API individually. Instead, in your Zonal endpoint API requests, you sign your requests by applying the temporary security credentials of the session to the request headers and following the SigV4 protocol for authentication. You also apply the session token to the x-amz-s3session-token request header for authorization. Temporary security credentials are scoped to the bucket and expire after 5 minutes. After the expiration time, any calls that you make with those credentials will fail. You must use IAM credentials again to make a CreateSession API request that generates a new set of temporary credentials for use. Temporary credentials cannot be extended or refreshed beyond the original specified interval.

If you use Amazon Web Services SDKs, SDKs handle the session token refreshes automatically to avoid service interruptions when a session expires. We recommend that you use the Amazon Web Services SDKs to initiate and manage requests to the CreateSession API. For more information, see Performance guidelines and design patterns in the Amazon S3 User Guide.

Permissions

To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that grants s3express:CreateSession permission to the bucket. In a policy, you can have the s3express:SessionMode condition key to control who can create a ReadWrite or ReadOnly session. For more information about ReadWrite or ReadOnly sessions, see x-amz-create-session-mode . For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

To grant cross-account access to Zonal endpoint API operations, the bucket policy should also grant both accounts the s3express:CreateSession permission.

If you want to encrypt objects with SSE-KMS, you must also have the kms:GenerateDataKey and the kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the target KMS key.

Encryption

For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

For Zonal endpoint (object-level) API operations except CopyObject and UploadPartCopy, you authenticate and authorize requests through CreateSession for low latency. To encrypt new objects in a directory bucket with SSE-KMS, you must specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). Then, when a session is created for Zonal endpoint API operations, new objects are automatically encrypted and decrypted with SSE-KMS and S3 Bucket Keys during the session.

Only 1 customer managed key is supported per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported. After you specify SSE-KMS as your bucket's default encryption configuration with a customer managed key, you can't change the customer managed key for the bucket's SSE-KMS configuration.

In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, you can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) from the CreateSession request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket.

When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. Also, in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), it's not supported to override the values of the encryption settings from the CreateSession request.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

", "staticContextParams":{ "DisableS3ExpressSessionAuth":{"value":true} } @@ -156,7 +156,7 @@ "responseCode":204 }, "input":{"shape":"DeleteBucketEncryptionRequest"}, - "documentation":"

This operation is not supported by directory buckets.

This implementation of the DELETE action resets the default encryption for the bucket as server-side encryption with Amazon S3 managed keys (SSE-S3). For information about the bucket default encryption feature, see Amazon S3 Bucket Default Encryption in the Amazon S3 User Guide.

To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration action. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to your Amazon S3 Resources in the Amazon S3 User Guide.

The following operations are related to DeleteBucketEncryption:

", + "documentation":"

This implementation of the DELETE action resets the default encryption for the bucket as server-side encryption with Amazon S3 managed keys (SSE-S3).

Permissions
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com.

The following operations are related to DeleteBucketEncryption:

", "staticContextParams":{ "UseS3ExpressControlEndpoint":{"value":true} } @@ -396,7 +396,7 @@ }, "input":{"shape":"GetBucketEncryptionRequest"}, "output":{"shape":"GetBucketEncryptionOutput"}, - "documentation":"

This operation is not supported by directory buckets.

Returns the default encryption configuration for an Amazon S3 bucket. By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). For information about the bucket default encryption feature, see Amazon S3 Bucket Default Encryption in the Amazon S3 User Guide.

To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration action. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 Resources.

The following operations are related to GetBucketEncryption:

", + "documentation":"

Returns the default encryption configuration for an Amazon S3 bucket. By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3).

Permissions
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com.

The following operations are related to GetBucketEncryption:

", "staticContextParams":{ "UseS3ExpressControlEndpoint":{"value":true} } @@ -646,7 +646,7 @@ {"shape":"InvalidObjectState"} ], "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html", - "documentation":"

Retrieves an object from Amazon S3.

In the GetObject request, specify the full key name for the object.

General purpose buckets - Both the virtual-hosted-style requests and the path-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg, specify the object key name as /photos/2006/February/sample.jpg. For a path-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket, specify the object key name as /examplebucket/photos/2006/February/sample.jpg. For more information about request types, see HTTP Host Header Bucket Specification in the Amazon S3 User Guide.

Directory buckets - Only virtual-hosted-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket--use1-az5--x-s3, specify the object key name as /photos/2006/February/sample.jpg. Also, when you make requests to this API operation, your requests are sent to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Storage classes

If the object you are retrieving is stored in the S3 Glacier Flexible Retrieval storage class, the S3 Glacier Deep Archive storage class, the S3 Intelligent-Tiering Archive Access tier, or the S3 Intelligent-Tiering Deep Archive Access tier, before you can retrieve the object you must first restore a copy using RestoreObject. Otherwise, this operation returns an InvalidObjectState error. For information about restoring archived objects, see Restoring Archived Objects in the Amazon S3 User Guide.

Directory buckets - For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects. Unsupported storage class values won't write a destination object and will respond with the HTTP status code 400 Bad Request.

Encryption

Encryption request headers, like x-amz-server-side-encryption, should not be sent for the GetObject requests, if your object uses server-side encryption with Amazon S3 managed encryption keys (SSE-S3), server-side encryption with Key Management Service (KMS) keys (SSE-KMS), or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you include the header in your GetObject requests for the object that uses these types of keys, you’ll get an HTTP 400 Bad Request error.

Overriding response header values through the request

There are times when you want to override certain response header values of a GetObject response. For example, you might override the Content-Disposition response header value through your GetObject request.

You can override values for a set of response headers. These modified response header values are included only in a successful response, that is, when the HTTP status code 200 OK is returned. The headers you can override using the following query parameters in the request are a subset of the headers that Amazon S3 accepts when you create an object.

The response headers that you can override for the GetObject response are Cache-Control, Content-Disposition, Content-Encoding, Content-Language, Content-Type, and Expires.

To override values for a set of response headers in the GetObject response, you can use the following query parameters in the request.

When you use these parameters, you must sign the request by using either an Authorization header or a presigned URL. These parameters cannot be used with an unsigned (anonymous) request.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to GetObject:

", + "documentation":"

Retrieves an object from Amazon S3.

In the GetObject request, specify the full key name for the object.

General purpose buckets - Both the virtual-hosted-style requests and the path-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg, specify the object key name as /photos/2006/February/sample.jpg. For a path-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket, specify the object key name as /examplebucket/photos/2006/February/sample.jpg. For more information about request types, see HTTP Host Header Bucket Specification in the Amazon S3 User Guide.

Directory buckets - Only virtual-hosted-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket--use1-az5--x-s3, specify the object key name as /photos/2006/February/sample.jpg. Also, when you make requests to this API operation, your requests are sent to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Storage classes

If the object you are retrieving is stored in the S3 Glacier Flexible Retrieval storage class, the S3 Glacier Deep Archive storage class, the S3 Intelligent-Tiering Archive Access tier, or the S3 Intelligent-Tiering Deep Archive Access tier, before you can retrieve the object you must first restore a copy using RestoreObject. Otherwise, this operation returns an InvalidObjectState error. For information about restoring archived objects, see Restoring Archived Objects in the Amazon S3 User Guide.

Directory buckets - For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects. Unsupported storage class values won't write a destination object and will respond with the HTTP status code 400 Bad Request.

Encryption

Encryption request headers, like x-amz-server-side-encryption, should not be sent for the GetObject requests, if your object uses server-side encryption with Amazon S3 managed encryption keys (SSE-S3), server-side encryption with Key Management Service (KMS) keys (SSE-KMS), or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you include the header in your GetObject requests for the object that uses these types of keys, you’ll get an HTTP 400 Bad Request error.

Directory buckets - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C isn't supported. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

Overriding response header values through the request

There are times when you want to override certain response header values of a GetObject response. For example, you might override the Content-Disposition response header value through your GetObject request.

You can override values for a set of response headers. These modified response header values are included only in a successful response, that is, when the HTTP status code 200 OK is returned. The headers you can override using the following query parameters in the request are a subset of the headers that Amazon S3 accepts when you create an object.

The response headers that you can override for the GetObject response are Cache-Control, Content-Disposition, Content-Encoding, Content-Language, Content-Type, and Expires.

To override values for a set of response headers in the GetObject response, you can use the following query parameters in the request.

When you use these parameters, you must sign the request by using either an Authorization header or a presigned URL. These parameters cannot be used with an unsigned (anonymous) request.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to GetObject:

", "httpChecksum":{ "requestValidationModeMember":"ChecksumMode", "responseAlgorithms":[ @@ -682,7 +682,7 @@ "errors":[ {"shape":"NoSuchKey"} ], - "documentation":"

Retrieves all the metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

GetObjectAttributes combines the functionality of HeadObject and ListParts. All of the data returned with each of those individual calls can be returned with a single call to GetObjectAttributes.

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Encryption

Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a GET request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

Directory bucket permissions - For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

Versioning

Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

Conditional request headers

Consider the following when using request headers:

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following actions are related to GetObjectAttributes:

" + "documentation":"

Retrieves all the metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

GetObjectAttributes combines the functionality of HeadObject and ListParts. All of the data returned with each of those individual calls can be returned with a single call to GetObjectAttributes.

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Encryption

Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a GET request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

Directory bucket permissions - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

Versioning

Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

Conditional request headers

Consider the following when using request headers:

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following actions are related to GetObjectAttributes:

" }, "GetObjectLegalHold":{ "name":"GetObjectLegalHold", @@ -774,7 +774,7 @@ {"shape":"NoSuchKey"} ], "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectHEAD.html", - "documentation":"

The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

A HEAD request has the same options as a GET operation on an object. The response is identical to the GET response except that there is no response body. Because of this, if the HEAD request generates an error, it returns a generic code, such as 400 Bad Request, 403 Forbidden, 404 Not Found, 405 Method Not Allowed, 412 Precondition Failed, or 304 Not Modified. It's not possible to retrieve the exact exception of these error codes.

Request headers are limited to 8 KB in size. For more information, see Common Request Headers.

Permissions

Encryption

Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a HEAD request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

Directory bucket permissions - For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

Versioning
  • Directory buckets - Delete marker is not supported by directory buckets.

  • Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

The following actions are related to HeadObject:

" + "documentation":"

The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

A HEAD request has the same options as a GET operation on an object. The response is identical to the GET response except that there is no response body. Because of this, if the HEAD request generates an error, it returns a generic code, such as 400 Bad Request, 403 Forbidden, 404 Not Found, 405 Method Not Allowed, 412 Precondition Failed, or 304 Not Modified. It's not possible to retrieve the exact exception of these error codes.

Request headers are limited to 8 KB in size. For more information, see Common Request Headers.

Permissions

Encryption

Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a HEAD request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

Directory bucket - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C isn't supported. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

Versioning
  • Directory buckets - Delete marker is not supported by directory buckets.

  • Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

The following actions are related to HeadObject:

" }, "ListBucketAnalyticsConfigurations":{ "name":"ListBucketAnalyticsConfigurations", @@ -981,7 +981,7 @@ "requestUri":"/{Bucket}?encryption" }, "input":{"shape":"PutBucketEncryptionRequest"}, - "documentation":"

This operation is not supported by directory buckets.

This action uses the encryption subresource to configure default encryption and Amazon S3 Bucket Keys for an existing bucket.

By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). You can optionally configure default encryption for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS) or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you specify default encryption by using SSE-KMS, you can also configure Amazon S3 Bucket Keys. If you use PutBucketEncryption to set your default bucket encryption to SSE-KMS, you should verify that your KMS key ID is correct. Amazon S3 does not validate the KMS key ID provided in PutBucketEncryption requests.

If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

Also, this action requires Amazon Web Services Signature Version 4. For more information, see Authenticating Requests (Amazon Web Services Signature Version 4).

To use this operation, you must have permission to perform the s3:PutEncryptionConfiguration action. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 Resources in the Amazon S3 User Guide.

The following operations are related to PutBucketEncryption:

", + "documentation":"

This operation configures default encryption and Amazon S3 Bucket Keys for an existing bucket.

Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3).

If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

Also, this action requires Amazon Web Services Signature Version 4. For more information, see Authenticating Requests (Amazon Web Services Signature Version 4).

Permissions
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com.

The following operations are related to PutBucketEncryption:

", "httpChecksum":{ "requestAlgorithmMember":"ChecksumAlgorithm", "requestChecksumRequired":true @@ -1230,7 +1230,7 @@ "input":{"shape":"PutObjectRequest"}, "output":{"shape":"PutObjectOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html", - "documentation":"

Adds an object to a bucket.

Amazon S3 is a distributed system. If it receives multiple write requests for the same object simultaneously, it overwrites all but the last object written. However, Amazon S3 provides features that can modify this behavior:

Permissions
Data integrity with Content-MD5
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

For more information about related Amazon S3 APIs, see the following:

", + "documentation":"

Adds an object to a bucket.

Amazon S3 is a distributed system. If it receives multiple write requests for the same object simultaneously, it overwrites all but the last object written. However, Amazon S3 provides features that can modify this behavior:

Permissions
Data integrity with Content-MD5
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

For more information about related Amazon S3 APIs, see the following:

", "httpChecksum":{ "requestAlgorithmMember":"ChecksumAlgorithm", "requestChecksumRequired":false @@ -1368,7 +1368,7 @@ "input":{"shape":"UploadPartRequest"}, "output":{"shape":"UploadPartOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPart.html", - "documentation":"

Uploads a part in a multipart upload.

In this operation, you provide new data as a part of an object in your request. However, you have an option to specify your existing Amazon S3 object as a data source for the part you are uploading. To upload a part from an existing object, you use the UploadPartCopy operation.

You must initiate a multipart upload (see CreateMultipartUpload) before you can upload any part. In response to your initiate request, Amazon S3 returns an upload ID, a unique identifier that you must include in your upload part request.

Part numbers can be any number from 1 to 10,000, inclusive. A part number uniquely identifies a part and also defines its position within the object being created. If you upload a new part using the same part number that was used with a previous part, the previously uploaded part is overwritten.

For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

For more information on multipart uploads, go to Multipart Upload Overview in the Amazon S3 User Guide .

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Data integrity

General purpose bucket - To ensure that data is not corrupted traversing the network, specify the Content-MD5 header in the upload part request. Amazon S3 checks the part data against the provided MD5 value. If they do not match, Amazon S3 returns an error. If the upload request is signed with Signature Version 4, then Amazon Web Services S3 uses the x-amz-content-sha256 header as a checksum instead of Content-MD5. For more information see Authenticating Requests: Using the Authorization Header (Amazon Web Services Signature Version 4).

Directory buckets - MD5 is not supported by directory buckets. You can use checksum algorithms to check object integrity.

Encryption

For more information, see Using Server-Side Encryption in the Amazon S3 User Guide.

Special errors
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to UploadPart:

", + "documentation":"

Uploads a part in a multipart upload.

In this operation, you provide new data as a part of an object in your request. However, you have an option to specify your existing Amazon S3 object as a data source for the part you are uploading. To upload a part from an existing object, you use the UploadPartCopy operation.

You must initiate a multipart upload (see CreateMultipartUpload) before you can upload any part. In response to your initiate request, Amazon S3 returns an upload ID, a unique identifier that you must include in your upload part request.

Part numbers can be any number from 1 to 10,000, inclusive. A part number uniquely identifies a part and also defines its position within the object being created. If you upload a new part using the same part number that was used with a previous part, the previously uploaded part is overwritten.

For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

For more information on multipart uploads, go to Multipart Upload Overview in the Amazon S3 User Guide .

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Permissions
Data integrity

General purpose bucket - To ensure that data is not corrupted traversing the network, specify the Content-MD5 header in the upload part request. Amazon S3 checks the part data against the provided MD5 value. If they do not match, Amazon S3 returns an error. If the upload request is signed with Signature Version 4, then Amazon Web Services S3 uses the x-amz-content-sha256 header as a checksum instead of Content-MD5. For more information see Authenticating Requests: Using the Authorization Header (Amazon Web Services Signature Version 4).

Directory buckets - MD5 is not supported by directory buckets. You can use checksum algorithms to check object integrity.

Encryption
Special errors
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to UploadPart:

", "httpChecksum":{ "requestAlgorithmMember":"ChecksumAlgorithm", "requestChecksumRequired":false @@ -1383,7 +1383,7 @@ "input":{"shape":"UploadPartCopyRequest"}, "output":{"shape":"UploadPartCopyOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html", - "documentation":"

Uploads a part by copying data from an existing object as data source. To specify the data source, you add the request header x-amz-copy-source in your request. To specify a byte range, you add the request header x-amz-copy-source-range in your request.

For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

Instead of copying data from an existing object as part data, you might use the UploadPart action to upload new data as a part of an object in your request.

You must initiate a multipart upload before you can upload any part. In response to your initiate request, Amazon S3 returns the upload ID, a unique identifier that you must include in your upload part request.

For conceptual information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide. For information about copying objects using a single atomic action vs. a multipart upload, see Operations on Objects in the Amazon S3 User Guide.

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Authentication and authorization

All UploadPartCopy requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

Directory buckets - You must use IAM credentials to authenticate and authorize your access to the UploadPartCopy API operation, instead of using the temporary security credentials through the CreateSession API operation.

Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

Permissions

You must have READ access to the source object and WRITE access to the destination bucket.

Encryption
Special errors
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to UploadPartCopy:

", + "documentation":"

Uploads a part by copying data from an existing object as data source. To specify the data source, you add the request header x-amz-copy-source in your request. To specify a byte range, you add the request header x-amz-copy-source-range in your request.

For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

Instead of copying data from an existing object as part data, you might use the UploadPart action to upload new data as a part of an object in your request.

You must initiate a multipart upload before you can upload any part. In response to your initiate request, Amazon S3 returns the upload ID, a unique identifier that you must include in your upload part request.

For conceptual information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide. For information about copying objects using a single atomic action vs. a multipart upload, see Operations on Objects in the Amazon S3 User Guide.

Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

Authentication and authorization

All UploadPartCopy requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

Directory buckets - You must use IAM credentials to authenticate and authorize your access to the UploadPartCopy API operation, instead of using the temporary security credentials through the CreateSession API operation.

Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

Permissions

You must have READ access to the source object and WRITE access to the destination bucket.

Encryption
Special errors
HTTP Host header syntax

Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

The following operations are related to UploadPartCopy:

", "staticContextParams":{ "DisableS3ExpressSessionAuth":{"value":true} } @@ -2053,7 +2053,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when storing this object in Amazon S3 (for example, AES256, aws:kms).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when storing this object in Amazon S3 (for example, AES256, aws:kms).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2065,13 +2065,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2291,7 +2291,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2309,19 +2309,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the copied object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the copied object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2478,7 +2478,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when storing this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse). Unrecognized or unsupported values won’t write a destination object and will receive a 400 Bad Request response.

Amazon S3 automatically encrypts all new objects that are copied to an S3 bucket. When copying an object, if you don't specify encryption information in your copy request, the encryption setting of the target object is set to the default encryption configuration of the destination bucket. By default, all buckets have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a default encryption configuration that uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with customer-provided encryption keys (SSE-C), Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt the target object copy.

When you perform a CopyObject operation, if you want to use a different type of encryption setting for the target object, you can specify appropriate encryption-related headers to encrypt the target object with an Amazon S3 managed key, a KMS key, or a customer-provided key. If the encryption setting in your request is different from the default encryption configuration of the destination bucket, the encryption setting in your request takes precedence.

With server-side encryption, Amazon S3 encrypts your data as it writes your data to disks in its data centers and decrypts the data when you access it. For more information about server-side encryption, see Using Server-Side Encryption in the Amazon S3 User Guide.

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when storing this object in Amazon S3. Unrecognized or unsupported values won’t write a destination object and will receive a 400 Bad Request response.

Amazon S3 automatically encrypts all new objects that are copied to an S3 bucket. When copying an object, if you don't specify encryption information in your copy request, the encryption setting of the target object is set to the default encryption configuration of the destination bucket. By default, all buckets have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a different default encryption configuration, Amazon S3 uses the corresponding encryption key to encrypt the target object copy.

With server-side encryption, Amazon S3 encrypts your data as it writes your data to disks in its data centers and decrypts the data when you access it. For more information about server-side encryption, see Using Server-Side Encryption in the Amazon S3 User Guide.

General purpose buckets

Directory buckets

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2514,19 +2514,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object encryption. All GET and PUT requests for an object protected by KMS will fail if they're not made via SSL or using SigV4. For information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying the Signature Version in Request Authentication in the Amazon S3 User Guide.

This functionality is not supported when the destination bucket is a directory bucket.

", + "documentation":"

Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. All GET and PUT requests for an object protected by KMS will fail if they're not made via SSL or using SigV4. For information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying the Signature Version in Request Authentication in the Amazon S3 User Guide.

Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. This value must be explicitly added to specify encryption context for CopyObject requests.

This functionality is not supported when the destination bucket is a directory bucket.

", + "documentation":"

Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for the destination object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

General purpose buckets - This value must be explicitly added to specify encryption context for CopyObject requests if you want an additional encryption context for your destination object. The additional encryption context of the source object won't be copied to the destination object. For more information, see Encryption context in the Amazon S3 User Guide.

Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the object.

Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Specifying this header with a COPY action doesn’t affect bucket-level settings for S3 Bucket Key.

For more information, see Amazon S3 Bucket Keys in the Amazon S3 User Guide.

This functionality is not supported when the destination bucket is a directory bucket.

", + "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the object.

Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Specifying this header with a COPY action doesn’t affect bucket-level settings for S3 Bucket Key.

For more information, see Amazon S3 Bucket Keys in the Amazon S3 User Guide.

Directory buckets - S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2793,7 +2793,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2811,19 +2811,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs.

", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2935,7 +2935,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2971,19 +2971,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric encryption customer managed key to use for object encryption.

This functionality is not supported for directory buckets.

", + "documentation":"

Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.

General purpose buckets - If you specify x-amz-server-side-encryption with aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify x-amz-server-side-encryption:aws:kms or x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3) to protect the data.

Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

This functionality is not supported for directory buckets.

", + "documentation":"

Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs.

Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

Specifying this header with an object action doesn’t affect bucket-level settings for S3 Bucket Key.

This functionality is not supported for directory buckets.

", + "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).

General purpose buckets - Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.

Directory buckets - S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -3034,6 +3034,30 @@ "type":"structure", "required":["Credentials"], "members":{ + "ServerSideEncryption":{ + "shape":"ServerSideEncryption", + "documentation":"

The server-side encryption algorithm used when you store objects in the directory bucket.

", + "location":"header", + "locationName":"x-amz-server-side-encryption" + }, + "SSEKMSKeyId":{ + "shape":"SSEKMSKeyId", + "documentation":"

If you specify x-amz-server-side-encryption with aws:kms, this header indicates the ID of the KMS symmetric encryption customer managed key that was used for object encryption.

", + "location":"header", + "locationName":"x-amz-server-side-encryption-aws-kms-key-id" + }, + "SSEKMSEncryptionContext":{ + "shape":"SSEKMSEncryptionContext", + "documentation":"

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

", + "location":"header", + "locationName":"x-amz-server-side-encryption-context" + }, + "BucketKeyEnabled":{ + "shape":"BucketKeyEnabled", + "documentation":"

Indicates whether to use an S3 Bucket Key for server-side encryption with KMS keys (SSE-KMS).

", + "location":"header", + "locationName":"x-amz-server-side-encryption-bucket-key-enabled" + }, "Credentials":{ "shape":"SessionCredentials", "documentation":"

The established temporary security credentials for the created session.

", @@ -3047,7 +3071,7 @@ "members":{ "SessionMode":{ "shape":"SessionMode", - "documentation":"

Specifies the mode of the session that will be created, either ReadWrite or ReadOnly. By default, a ReadWrite session is created. A ReadWrite session is capable of executing all the Zonal endpoint APIs on a directory bucket. A ReadOnly session is constrained to execute the following Zonal endpoint APIs: GetObject, HeadObject, ListObjectsV2, GetObjectAttributes, ListParts, and ListMultipartUploads.

", + "documentation":"

Specifies the mode of the session that will be created, either ReadWrite or ReadOnly. By default, a ReadWrite session is created. A ReadWrite session is capable of executing all the Zonal endpoint API operations on a directory bucket. A ReadOnly session is constrained to execute the following Zonal endpoint API operations: GetObject, HeadObject, ListObjectsV2, GetObjectAttributes, ListParts, and ListMultipartUploads.

", "location":"header", "locationName":"x-amz-create-session-mode" }, @@ -3057,6 +3081,30 @@ "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" + }, + "ServerSideEncryption":{ + "shape":"ServerSideEncryption", + "documentation":"

The server-side encryption algorithm to use when you store objects in the directory bucket.

For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). By default, Amazon S3 encrypts data with SSE-S3. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

", + "location":"header", + "locationName":"x-amz-server-side-encryption" + }, + "SSEKMSKeyId":{ + "shape":"SSEKMSKeyId", + "documentation":"

If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Also, if the KMS key doesn't exist in the same account that't issuing the command, you must use the full Key ARN not the Key ID.

Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

", + "location":"header", + "locationName":"x-amz-server-side-encryption-aws-kms-key-id" + }, + "SSEKMSEncryptionContext":{ + "shape":"SSEKMSEncryptionContext", + "documentation":"

Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

General purpose buckets - This value must be explicitly added during CopyObject operations if you want an additional encryption context for your object. For more information, see Encryption context in the Amazon S3 User Guide.

Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

", + "location":"header", + "locationName":"x-amz-server-side-encryption-context" + }, + "BucketKeyEnabled":{ + "shape":"BucketKeyEnabled", + "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using KMS keys (SSE-KMS).

S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

", + "location":"header", + "locationName":"x-amz-server-side-encryption-bucket-key-enabled" } } }, @@ -3164,14 +3212,14 @@ "members":{ "Bucket":{ "shape":"BucketName", - "documentation":"

The name of the bucket containing the server-side encryption configuration to delete.

", + "documentation":"

The name of the bucket containing the server-side encryption configuration to delete.

Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the format bucket_base_name--az_id--x-s3 (for example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide

", "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" }, "ExpectedBucketOwner":{ "shape":"AccountId", - "documentation":"

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

", + "documentation":"

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code 501 Not Implemented.

", "location":"header", "locationName":"x-amz-expected-bucket-owner" } @@ -3861,7 +3909,7 @@ "documentation":"

Specifies whether Amazon S3 replicates existing source bucket objects.

" } }, - "documentation":"

Optional configuration to replicate existing source bucket objects. For more information, see Replicating Existing Objects in the Amazon S3 User Guide.

" + "documentation":"

Optional configuration to replicate existing source bucket objects.

This parameter is no longer supported. To replicate existing objects, see Replicating existing objects with S3 Batch Replication in the Amazon S3 User Guide.

" }, "ExistingObjectReplicationStatus":{ "type":"string", @@ -4086,14 +4134,14 @@ "members":{ "Bucket":{ "shape":"BucketName", - "documentation":"

The name of the bucket from which the server-side encryption configuration is retrieved.

", + "documentation":"

The name of the bucket from which the server-side encryption configuration is retrieved.

Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the format bucket_base_name--az_id--x-s3 (for example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide

", "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" }, "ExpectedBucketOwner":{ "shape":"AccountId", - "documentation":"

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

", + "documentation":"

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code 501 Not Implemented.

", "location":"header", "locationName":"x-amz-expected-bucket-owner" } @@ -5010,7 +5058,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3.

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -5034,13 +5082,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -5224,7 +5272,7 @@ }, "ChecksumMode":{ "shape":"ChecksumMode", - "documentation":"

To retrieve the checksum, this mode must be enabled.

In addition, if you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

", + "documentation":"

To retrieve the checksum, this mode must be enabled.

General purpose buckets - In addition, if you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

", "location":"header", "locationName":"x-amz-checksum-mode" } @@ -5666,7 +5714,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -5690,13 +5738,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -5873,7 +5921,7 @@ }, "ChecksumMode":{ "shape":"ChecksumMode", - "documentation":"

To retrieve the checksum, this parameter must be enabled.

In addition, if you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

", + "documentation":"

To retrieve the checksum, this parameter must be enabled.

General purpose buckets - If you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

Directory buckets - If you enable ChecksumMode and the object is encrypted with Amazon Web Services Key Management Service (Amazon Web Services KMS), you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key to retrieve the checksum of the object.

", "location":"header", "locationName":"x-amz-checksum-mode" } @@ -8411,20 +8459,20 @@ "members":{ "Bucket":{ "shape":"BucketName", - "documentation":"

Specifies default encryption for a bucket using server-side encryption with different key options. By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). You can optionally configure default encryption for a bucket by using server-side encryption with an Amazon Web Services KMS key (SSE-KMS) or a customer-provided key (SSE-C). For information about the bucket default encryption feature, see Amazon S3 Bucket Default Encryption in the Amazon S3 User Guide.

", + "documentation":"

Specifies default encryption for a bucket using server-side encryption with different key options.

Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the format bucket_base_name--az_id--x-s3 (for example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide

", "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" }, "ContentMD5":{ "shape":"ContentMD5", - "documentation":"

The base64-encoded 128-bit MD5 digest of the server-side encryption configuration.

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

", + "documentation":"

The base64-encoded 128-bit MD5 digest of the server-side encryption configuration.

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

This functionality is not supported for directory buckets.

", "location":"header", "locationName":"Content-MD5" }, "ChecksumAlgorithm":{ "shape":"ChecksumAlgorithm", - "documentation":"

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more information, see Checking object integrity in the Amazon S3 User Guide.

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm parameter.

", + "documentation":"

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more information, see Checking object integrity in the Amazon S3 User Guide.

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm parameter.

For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

", "location":"header", "locationName":"x-amz-sdk-checksum-algorithm" }, @@ -8435,7 +8483,7 @@ }, "ExpectedBucketOwner":{ "shape":"AccountId", - "documentation":"

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

", + "documentation":"

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code 501 Not Implemented.

", "location":"header", "locationName":"x-amz-expected-bucket-owner" } @@ -9299,7 +9347,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3.

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -9323,19 +9371,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If x-amz-server-side-encryption has a valid value of aws:kms or aws:kms:dsse, this header indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject or CopyObject operations on this object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the uploaded object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the uploaded object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -9494,7 +9542,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

General purpose buckets - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see Using Server-Side Encryption in the Amazon S3 User Guide.

Directory buckets - For directory buckets, only the server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) value is supported.

", + "documentation":"

The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -9530,19 +9578,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If x-amz-server-side-encryption has a valid value of aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object. If you specify x-amz-server-side-encryption:aws:kms or x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3) to protect the data. If the KMS key does not exist in the same account that's issuing the command, you must use the full ARN and not just the ID.

This functionality is not supported for directory buckets.

", + "documentation":"

Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.

General purpose buckets - If you specify x-amz-server-side-encryption with aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify x-amz-server-side-encryption:aws:kms or x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3) to protect the data.

Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject or CopyObject operations on this object. This value must be explicitly added during CopyObject operations.

This functionality is not supported for directory buckets.

", + "documentation":"

Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

General purpose buckets - This value must be explicitly added during CopyObject operations if you want an additional encryption context for your object. For more information, see Encryption context in the Amazon S3 User Guide.

Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

Specifying this header with a PUT action doesn’t affect bucket-level settings for S3 Bucket Key.

This functionality is not supported for directory buckets.

", + "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).

General purpose buckets - Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.

Directory buckets - S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -9961,7 +10009,7 @@ }, "ExistingObjectReplication":{ "shape":"ExistingObjectReplication", - "documentation":"

Optional configuration to replicate existing source bucket objects. For more information, see Replicating Existing Objects in the Amazon S3 User Guide.

" + "documentation":"

Optional configuration to replicate existing source bucket objects.

This parameter is no longer supported. To replicate existing objects, see Replicating existing objects with S3 Batch Replication in the Amazon S3 User Guide.

" }, "Destination":{ "shape":"Destination", @@ -10537,14 +10585,14 @@ "members":{ "SSEAlgorithm":{ "shape":"ServerSideEncryption", - "documentation":"

Server-side encryption algorithm to use for the default encryption.

" + "documentation":"

Server-side encryption algorithm to use for the default encryption.

For directory buckets, there are only two supported values for server-side encryption: AES256 and aws:kms.

" }, "KMSMasterKeyID":{ "shape":"SSEKMSKeyId", - "documentation":"

Amazon Web Services Key Management Service (KMS) customer Amazon Web Services KMS key ID to use for the default encryption. This parameter is allowed if and only if SSEAlgorithm is set to aws:kms or aws:kms:dsse.

You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.

If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log.

If you are using encryption with cross-account or Amazon Web Services service operations you must use a fully qualified KMS key ARN. For more information, see Using encryption for cross-account operations.

Amazon S3 only supports symmetric encryption KMS keys. For more information, see Asymmetric keys in Amazon Web Services KMS in the Amazon Web Services Key Management Service Developer Guide.

" + "documentation":"

Amazon Web Services Key Management Service (KMS) customer managed key ID to use for the default encryption.

You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.

If you are using encryption with cross-account or Amazon Web Services service operations, you must use a fully qualified KMS key ARN. For more information, see Using encryption for cross-account operations.

Amazon S3 only supports symmetric encryption KMS keys. For more information, see Asymmetric keys in Amazon Web Services KMS in the Amazon Web Services Key Management Service Developer Guide.

" } }, - "documentation":"

Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. If you don't specify a customer managed key at configuration, Amazon S3 automatically creates an Amazon Web Services KMS key in your Amazon Web Services account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS. For more information, see PUT Bucket encryption in the Amazon S3 API Reference.

If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

" + "documentation":"

Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. For more information, see PutBucketEncryption.

" }, "ServerSideEncryptionConfiguration":{ "type":"structure", @@ -10567,10 +10615,10 @@ }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the BucketKeyEnabled element to true causes Amazon S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.

For more information, see Amazon S3 Bucket Keys in the Amazon S3 User Guide.

" + "documentation":"

Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the BucketKeyEnabled element to true causes Amazon S3 to use an S3 Bucket Key.

" } }, - "documentation":"

Specifies the default server-side encryption configuration.

If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

" + "documentation":"

Specifies the default server-side encryption configuration.

" }, "ServerSideEncryptionRules":{ "type":"list", @@ -10611,7 +10659,7 @@ "locationName":"Expiration" } }, - "documentation":"

The established temporary security credentials of the session.

Directory buckets - These session credentials are only supported for the authentication and authorization of Zonal endpoint APIs on directory buckets.

" + "documentation":"

The established temporary security credentials of the session.

Directory buckets - These session credentials are only supported for the authentication and authorization of Zonal endpoint API operations on directory buckets.

" }, "SessionExpiration":{"type":"timestamp"}, "SessionMode":{ @@ -10983,7 +11031,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -11001,13 +11049,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -11150,7 +11198,7 @@ "members":{ "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

", + "documentation":"

The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -11198,13 +11246,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

This functionality is not supported for directory buckets.

", + "documentation":"

If present, indicates the ID of the KMS key that was used for object encryption.

", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

This functionality is not supported for directory buckets.

", + "documentation":"

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, diff --git a/botocore/utils.py b/botocore/utils.py index 0efd7ef325..314d30516d 100644 --- a/botocore/utils.py +++ b/botocore/utils.py @@ -3579,6 +3579,7 @@ def is_s3express_bucket(bucket): 'discovery': 'application-discovery-service', 'dms': 'database-migration-service', 'ds': 'directory-service', + 'ds-data': 'directory-service-data', 'dynamodbstreams': 'dynamodb-streams', 'elasticbeanstalk': 'elastic-beanstalk', 'elastictranscoder': 'elastic-transcoder', diff --git a/docs/source/conf.py b/docs/source/conf.py index 91bd2a6292..2039265834 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -59,7 +59,7 @@ # The short X.Y version. version = '1.35.' # The full version, including alpha/beta/rc tags. -release = '1.35.21' +release = '1.35.22' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/tests/functional/endpoint-rules/ds-data/endpoint-tests-1.json b/tests/functional/endpoint-rules/ds-data/endpoint-tests-1.json new file mode 100644 index 0000000000..aa20546a9a --- /dev/null +++ b/tests/functional/endpoint-rules/ds-data/endpoint-tests-1.json @@ -0,0 +1,314 @@ +{ + "testCases": [ + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "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 + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "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-iso-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "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 + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "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 + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips disabled and dualstack enabled", + "expect": { + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file