diff --git a/clients/client-s3/src/commands/CreateSessionCommand.ts b/clients/client-s3/src/commands/CreateSessionCommand.ts index aa2c607ce768c..2fb49a2373ed5 100644 --- a/clients/client-s3/src/commands/CreateSessionCommand.ts +++ b/clients/client-s3/src/commands/CreateSessionCommand.ts @@ -103,7 +103,7 @@ export interface CreateSessionCommandOutput extends CreateSessionOutput, __Metad * 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. + * Only 1 customer managed key is supported per directory bucket for the lifetime of the bucket. The 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. *

*
diff --git a/clients/client-s3/src/commands/DeleteObjectCommand.ts b/clients/client-s3/src/commands/DeleteObjectCommand.ts index 3e7e5c89da4f6..60bee70a7e665 100644 --- a/clients/client-s3/src/commands/DeleteObjectCommand.ts +++ b/clients/client-s3/src/commands/DeleteObjectCommand.ts @@ -29,87 +29,78 @@ export interface DeleteObjectCommandInput extends DeleteObjectRequest {} export interface DeleteObjectCommandOutput extends DeleteObjectOutput, __MetadataBearer {} /** - *

Removes an object from a bucket. The behavior depends on the bucket's versioning state:

- * + *

Removes an object from a bucket. The behavior depends on the bucket's versioning state. + * For more information, see Best + * practices to consider before deleting an object.

+ *

To remove a specific version, you must use the versionId query parameter. + * Using this query parameter permanently deletes the version. If the object deleted is a + * delete marker, Amazon S3 sets the response header x-amz-delete-marker to true. If + * the object you want to delete is in a bucket where the bucket versioning configuration is + * MFA delete enabled, you must include the x-amz-mfa request header in the + * DELETE versionId request. Requests that include x-amz-mfa must + * use HTTPS. For more information about MFA delete and to see example requests, see Using MFA + * delete and Sample + * request in the Amazon S3 User Guide.

* * * - *

To remove a specific version, you must use the versionId query parameter. Using this - * query parameter permanently deletes the version. If the object deleted is a delete marker, Amazon S3 - * sets the response header x-amz-delete-marker to true.

- *

If the object you want to delete is in a bucket where the bucket versioning - * configuration is MFA Delete enabled, you must include the x-amz-mfa request - * header in the DELETE versionId request. Requests that include - * x-amz-mfa must use HTTPS. For more information about MFA Delete, see Using MFA Delete in the Amazon S3 - * User Guide. To see sample - * requests that use versioning, see Sample - * Request.

- * - *

- * Directory buckets - MFA delete is not supported by directory buckets.

- *
- *

You can delete objects by explicitly calling DELETE Object or calling - * (PutBucketLifecycle) to enable Amazon S3 to remove them for you. If you want to block - * users or accounts from removing or deleting objects from your bucket, you must deny them - * the s3:DeleteObject, s3:DeleteObjectVersion, and - * s3:PutLifeCycleConfiguration actions.

- * - *

- * Directory buckets - S3 Lifecycle is not supported by directory buckets.

- *
*
*
Permissions
*
*
    *
  • *

    - * General purpose bucket permissions - The following permissions are required in your policies when your - * DeleteObjects request includes specific headers.

    + * General purpose bucket permissions - The + * following permissions are required in your policies when your + * DeleteObjects request includes specific headers.

    *
      *
    • *

      * * s3:DeleteObject - * - To delete an object from a bucket, you must always have the s3:DeleteObject permission.

      + * + * - To delete an object from a bucket, you must always have the + * s3:DeleteObject permission.

      + * + *

      You can also use PutBucketLifecycle to delete + * objects in Amazon S3.

      + *
      *
    • *
    • *

      * * s3:DeleteObjectVersion - * - To delete a specific version of an object from a versioning-enabled bucket, you must have the s3:DeleteObjectVersion permission.

      + * - To delete a specific version of an object from a + * versioning-enabled bucket, you must have the + * s3:DeleteObjectVersion permission.

      + *
    • + *
    • + *

      If you want to block users or accounts from removing or deleting + * objects from your bucket, you must deny them the + * s3:DeleteObject, s3:DeleteObjectVersion, + * and s3:PutLifeCycleConfiguration permissions.

      *
    • *
    *
  • *
  • *

    - * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the - * CreateSession - * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. - * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see - * CreateSession - * .

    + * Directory buckets permissions - + * To grant access to this API operation on a directory bucket, we recommend + * that you use the CreateSession API operation for + * session-based authorization.

    *
  • *
*
diff --git a/clients/client-s3/src/commands/ListBucketsCommand.ts b/clients/client-s3/src/commands/ListBucketsCommand.ts index bf00655b2146b..64445cc204627 100644 --- a/clients/client-s3/src/commands/ListBucketsCommand.ts +++ b/clients/client-s3/src/commands/ListBucketsCommand.ts @@ -45,6 +45,8 @@ export interface ListBucketsCommandOutput extends ListBucketsOutput, __MetadataB * const input = { // ListBucketsRequest * MaxBuckets: Number("int"), * ContinuationToken: "STRING_VALUE", + * Prefix: "STRING_VALUE", + * BucketRegion: "STRING_VALUE", * }; * const command = new ListBucketsCommand(input); * const response = await client.send(command); @@ -53,6 +55,7 @@ export interface ListBucketsCommandOutput extends ListBucketsOutput, __MetadataB * // { // Bucket * // Name: "STRING_VALUE", * // CreationDate: new Date("TIMESTAMP"), + * // BucketRegion: "STRING_VALUE", * // }, * // ], * // Owner: { // Owner @@ -60,6 +63,7 @@ export interface ListBucketsCommandOutput extends ListBucketsOutput, __MetadataB * // ID: "STRING_VALUE", * // }, * // ContinuationToken: "STRING_VALUE", + * // Prefix: "STRING_VALUE", * // }; * * ``` diff --git a/clients/client-s3/src/commands/ListDirectoryBucketsCommand.ts b/clients/client-s3/src/commands/ListDirectoryBucketsCommand.ts index c4d8103814126..0b01ab120aeb9 100644 --- a/clients/client-s3/src/commands/ListDirectoryBucketsCommand.ts +++ b/clients/client-s3/src/commands/ListDirectoryBucketsCommand.ts @@ -65,6 +65,7 @@ export interface ListDirectoryBucketsCommandOutput extends ListDirectoryBucketsO * // { // Bucket * // Name: "STRING_VALUE", * // CreationDate: new Date("TIMESTAMP"), + * // BucketRegion: "STRING_VALUE", * // }, * // ], * // ContinuationToken: "STRING_VALUE", diff --git a/clients/client-s3/src/commands/PutBucketEncryptionCommand.ts b/clients/client-s3/src/commands/PutBucketEncryptionCommand.ts index 7734b5e15f919..62f5fcb6295d2 100644 --- a/clients/client-s3/src/commands/PutBucketEncryptionCommand.ts +++ b/clients/client-s3/src/commands/PutBucketEncryptionCommand.ts @@ -75,7 +75,7 @@ export interface PutBucketEncryptionCommandOutput extends __MetadataBearer {} * *
  • *

    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. + * The Amazon Web Services managed key (aws/s3) isn't supported. *

    *
  • *
  • diff --git a/clients/client-s3/src/commands/RestoreObjectCommand.ts b/clients/client-s3/src/commands/RestoreObjectCommand.ts index 418c9361f9bc5..a63ff0f640b21 100644 --- a/clients/client-s3/src/commands/RestoreObjectCommand.ts +++ b/clients/client-s3/src/commands/RestoreObjectCommand.ts @@ -33,10 +33,6 @@ export interface RestoreObjectCommandOutput extends RestoreObjectOutput, __Metad * *

    This operation is not supported by directory buckets.

    *
    - * - *

    The SELECT job type for the RestoreObject operation is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more - *

    - *
    *

    Restores an archived copy of an object back into Amazon S3

    *

    This functionality is not supported for Amazon S3 on Outposts.

    *

    This action performs the following types of requests:

    diff --git a/clients/client-s3/src/commands/SelectObjectContentCommand.ts b/clients/client-s3/src/commands/SelectObjectContentCommand.ts index 5a55da6208717..af481e548ff87 100644 --- a/clients/client-s3/src/commands/SelectObjectContentCommand.ts +++ b/clients/client-s3/src/commands/SelectObjectContentCommand.ts @@ -38,10 +38,6 @@ export interface SelectObjectContentCommandOutput extends SelectObjectContentOut * *

    This operation is not supported by directory buckets.

    *
    - * - *

    The SelectObjectContent operation is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the operation as usual. Learn more - *

    - *
    *

    This action filters the contents of an Amazon S3 object based on a simple structured query * language (SQL) statement. In the request, along with the SQL expression, you must also * specify a data serialization format (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses diff --git a/clients/client-s3/src/models/models_0.ts b/clients/client-s3/src/models/models_0.ts index 1e283d3511368..d72e5e4515ba5 100644 --- a/clients/client-s3/src/models/models_0.ts +++ b/clients/client-s3/src/models/models_0.ts @@ -1,5 +1,6 @@ // smithy-typescript generated code import { ExceptionOptionType as __ExceptionOptionType, SENSITIVE_STRING } from "@smithy/smithy-client"; + import { StreamingBlobTypes } from "@smithy/types"; import { S3ServiceException as __BaseException } from "./S3ServiceException"; @@ -1454,7 +1455,7 @@ export interface CopyObjectRequest { *

  • *
  • *

    To encrypt new object copies to a directory bucket with SSE-KMS, we recommend you specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). - * Amazon Web Services managed key (aws/s3) isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS, you can't override the customer managed key for the bucket's SSE-KMS configuration. + * The Amazon Web Services managed key (aws/s3) isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS, you can't override the customer managed key for the bucket's SSE-KMS configuration. * Then, when you perform a CopyObject operation and want to specify server-side encryption settings for new object copies with SSE-KMS in the encryption-related request headers, you must ensure the encryption key is the same customer managed key that you specified for the directory bucket's default encryption configuration. *

    *
  • @@ -1566,10 +1567,13 @@ export interface CopyObjectRequest { * 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. + * Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, the + * x-amz-server-side-encryption-aws-kms-key-id header is implicitly assigned the ID of the KMS + * symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. + * If you want to specify the + * x-amz-server-side-encryption-aws-kms-key-id header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS + * customer managed key that's configured for your directory bucket's default encryption setting. 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. + * The Amazon Web Services managed key (aws/s3) isn't supported. *

    * @public */ @@ -2765,10 +2769,13 @@ export interface CreateMultipartUploadRequest { * 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. + * Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, the + * x-amz-server-side-encryption-aws-kms-key-id header is implicitly assigned the ID of the KMS + * symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. + * If you want to specify the + * x-amz-server-side-encryption-aws-kms-key-id header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS + * customer managed key that's configured for your directory bucket's default encryption setting. 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. + * The Amazon Web Services managed key (aws/s3) isn't supported. *

    * @public */ @@ -2995,7 +3002,7 @@ export interface CreateSessionRequest { * 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. + * The Amazon Web Services managed key (aws/s3) isn't supported. *

    * @public */ @@ -6160,7 +6167,7 @@ export interface GetBucketCorsRequest { *
  • *

    * Directory buckets - 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. + * The Amazon Web Services managed key (aws/s3) isn't supported. *

    *
  • *
  • @@ -10582,7 +10589,7 @@ export interface PublicAccessBlockConfiguration { /** *

    Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting - * this element to TRUE restricts access to this bucket to only Amazon Web Servicesservice principals and authorized users within this account if the bucket has + * this element to TRUE restricts access to this bucket to only Amazon Web Services service principals and authorized users within this account if the bucket has * a public policy.

    *

    Enabling this setting doesn't affect previously stored bucket policies, except that * public and cross-account access within any public bucket policy, including non-public @@ -11604,6 +11611,13 @@ export interface Bucket { * @public */ CreationDate?: Date; + + /** + *

    + * BucketRegion indicates the Amazon Web Services region where the bucket is located. If the request contains at least one valid parameter, it is included in the response.

    + * @public + */ + BucketRegion?: string; } /** @@ -11629,6 +11643,13 @@ export interface ListBucketsOutput { * @public */ ContinuationToken?: string; + + /** + *

    If Prefix was sent with the request, it is included in the response.

    + *

    All bucket names in the response begin with the specified bucket name prefix.

    + * @public + */ + Prefix?: string; } /** @@ -11651,6 +11672,21 @@ export interface ListBucketsRequest { * @public */ ContinuationToken?: string; + + /** + *

    Limits the response to bucket names that begin with the specified bucket name prefix.

    + * @public + */ + Prefix?: string; + + /** + *

    Limits the response to buckets that are located in the specified Amazon Web Services Region. The Amazon Web Services Region must be expressed according to the Amazon Web Services Region code, such as us-west-2 for the US West (Oregon) Region. For a list of the valid values for all of the Amazon Web Services Regions, see Regions and Endpoints.

    + * + *

    Requests made to a Regional endpoint that is different from the bucket-region parameter are not supported. For example, if you want to limit the response to your buckets in Region us-west-2, the request must be made to an endpoint in Region us-west-2.

    + *
    + * @public + */ + BucketRegion?: string; } /** diff --git a/clients/client-s3/src/models/models_1.ts b/clients/client-s3/src/models/models_1.ts index 5c4f9f9ea2738..96e1892918fd1 100644 --- a/clients/client-s3/src/models/models_1.ts +++ b/clients/client-s3/src/models/models_1.ts @@ -1,5 +1,6 @@ // smithy-typescript generated code import { ExceptionOptionType as __ExceptionOptionType, SENSITIVE_STRING } from "@smithy/smithy-client"; + import { StreamingBlobTypes } from "@smithy/types"; import { @@ -29,6 +30,7 @@ import { StorageClass, Tag, } from "./models_0"; + import { S3ServiceException as __BaseException } from "./S3ServiceException"; /** @@ -784,10 +786,10 @@ export interface PutObjectRequest { * Content-MD5 mechanism as an end-to-end integrity check. For more information about REST * request authentication, see REST Authentication.

    * - *

    The Content-MD5 header is required for any request to upload an + *

    The Content-MD5 or x-amz-sdk-checksum-algorithm header is required for any request to upload an * object with a retention period configured using Amazon S3 Object Lock. For more - * information about Amazon S3 Object Lock, see Amazon S3 Object Lock - * Overview in the Amazon S3 User Guide.

    + * information, see Uploading objects to an Object Lock enabled bucket + * in the Amazon S3 User Guide.

    *
    * *

    This functionality is not supported for directory buckets.

    @@ -842,8 +844,12 @@ export interface PutObjectRequest { * ChecksumAlgorithm parameter and uses the checksum algorithm that matches the provided value in x-amz-checksum-algorithm * .

    * - *

    For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

    + *

    The Content-MD5 or x-amz-sdk-checksum-algorithm header is required for any request to upload an + * object with a retention period configured using Amazon S3 Object Lock. For more + * information, see Uploading objects to an Object Lock enabled bucket + * in the Amazon S3 User Guide.

    *
    + *

    For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

    * @public */ ChecksumAlgorithm?: ChecksumAlgorithm; @@ -1106,10 +1112,13 @@ export interface PutObjectRequest { * 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. + * Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, the + * x-amz-server-side-encryption-aws-kms-key-id header is implicitly assigned the ID of the KMS + * symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. + * If you want to specify the + * x-amz-server-side-encryption-aws-kms-key-id header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS + * customer managed key that's configured for your directory bucket's default encryption setting. 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. + * The Amazon Web Services managed key (aws/s3) isn't supported. *

    * @public */ @@ -2211,13 +2220,7 @@ export interface OutputSerialization { } /** - * - *

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more - *

    - *
    - *

    Describes the parameters for Select job types.

    - *

    Learn How to optimize querying your data in Amazon S3 using - * Amazon Athena, S3 Object Lambda, or client-side filtering.

    + *

    Describes the parameters for Select job types.

    * @public */ export interface SelectParameters { @@ -2234,11 +2237,7 @@ export interface SelectParameters { ExpressionType: ExpressionType | undefined; /** - * - *

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more - *

    - *
    - *

    The expression that is used to query the object.

    + *

    The expression that is used to query the object.

    * @public */ Expression: string | undefined; @@ -2285,11 +2284,7 @@ export interface RestoreRequest { GlacierJobParameters?: GlacierJobParameters; /** - * - *

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more - *

    - *
    - *

    Type of restore request.

    + *

    Type of restore request.

    * @public */ Type?: RestoreRequestType; @@ -2307,11 +2302,7 @@ export interface RestoreRequest { Description?: string; /** - * - *

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more - *

    - *
    - *

    Describes the parameters for Select job types.

    + *

    Describes the parameters for Select job types.

    * @public */ SelectParameters?: SelectParameters; @@ -2662,11 +2653,7 @@ export interface ScanRange { } /** - * - *

    Learn Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more - *

    - *
    - *

    Request to filter the contents of an Amazon S3 object based on a simple Structured Query + *

    Request to filter the contents of an Amazon S3 object based on a simple Structured Query * Language (SQL) statement. In the request, along with the SQL expression, you must specify a * data serialization format (JSON or CSV) of the object. Amazon S3 uses this to parse object data * into records. It returns only records that match the specified SQL expression. You must diff --git a/clients/client-s3/src/protocols/Aws_restXml.ts b/clients/client-s3/src/protocols/Aws_restXml.ts index 8fd4a42d708ac..a0e2a0bd17367 100644 --- a/clients/client-s3/src/protocols/Aws_restXml.ts +++ b/clients/client-s3/src/protocols/Aws_restXml.ts @@ -1880,6 +1880,8 @@ export const se_ListBucketsCommand = async ( [_xi]: [, "ListBuckets"], [_mb]: [() => input.MaxBuckets !== void 0, () => input[_MB]!.toString()], [_ct_]: [, input[_CTo]!], + [_pr]: [, input[_P]!], + [_br]: [, input[_BR]!], }); let body: any; b.m("GET").h(headers).q(query).b(body); @@ -4497,6 +4499,9 @@ export const de_ListBucketsCommand = async ( if (data[_O] != null) { contents[_O] = de_Owner(data[_O], context); } + if (data[_P] != null) { + contents[_P] = __expectString(data[_P]); + } return contents; }; @@ -7644,6 +7649,9 @@ const de_Bucket = (output: any, context: __SerdeContext): Bucket => { if (output[_CDr] != null) { contents[_CDr] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_CDr])); } + if (output[_BR] != null) { + contents[_BR] = __expectString(output[_BR]); + } return contents; }; @@ -10101,6 +10109,7 @@ const _ac = "accelerate"; const _acl = "acl"; const _ar = "accept-ranges"; const _at = "attributes"; +const _br = "bucket-region"; const _c = "cors"; const _cc = "cache-control"; const _cd = "content-disposition"; diff --git a/codegen/sdk-codegen/aws-models/s3.json b/codegen/sdk-codegen/aws-models/s3.json index 4d762ce4fa2b3..4f2ce31662753 100644 --- a/codegen/sdk-codegen/aws-models/s3.json +++ b/codegen/sdk-codegen/aws-models/s3.json @@ -17619,6 +17619,12 @@ "traits": { "smithy.api#documentation": "

    Date the bucket was created. This date can change when making changes to your bucket,\n such as editing its bucket policy.

    " } + }, + "BucketRegion": { + "target": "com.amazonaws.s3#BucketRegion", + "traits": { + "smithy.api#documentation": "

    \n BucketRegion indicates the Amazon Web Services region where the bucket is located. If the request contains at least one valid parameter, it is included in the response.

    " + } } }, "traits": { @@ -17942,6 +17948,9 @@ "com.amazonaws.s3#BucketName": { "type": "string" }, + "com.amazonaws.s3#BucketRegion": { + "type": "string" + }, "com.amazonaws.s3#BucketType": { "type": "enum", "members": { @@ -18945,7 +18954,7 @@ "ServerSideEncryption": { "target": "com.amazonaws.s3#ServerSideEncryption", "traits": { - "smithy.api#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.

    \n

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

    \n

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

    \n

    \n General purpose buckets \n

    \n
      \n
    • \n

      For general purpose buckets, there are the following supported options for server-side encryption: server-side encryption with Key Management Service (KMS) keys\n (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), and \n server-side encryption with customer-provided encryption keys (SSE-C). Amazon S3 uses\n the corresponding KMS key, or a customer-provided key to encrypt the target\n object copy.

      \n
    • \n
    • \n

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

      \n
    • \n
    \n

    \n Directory buckets \n

    \n
      \n
    • \n

      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 \n CreateSession requests or PUT object requests. Then, new objects \n are automatically encrypted with the desired encryption settings. For more\n 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.

      \n
    • \n
    • \n

      To encrypt new object copies to a directory bucket with SSE-KMS, we recommend you specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). \n Amazon Web Services managed key (aws/s3) isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS, you can't override the customer managed key for the bucket's SSE-KMS configuration. \n Then, when you perform a CopyObject operation and want to specify server-side encryption settings for new object copies with SSE-KMS in the encryption-related request headers, you must ensure the encryption key is the same customer managed key that you specified for the directory bucket's default encryption configuration. \n

      \n
    • \n
    ", + "smithy.api#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.

    \n

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

    \n

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

    \n

    \n General purpose buckets \n

    \n
      \n
    • \n

      For general purpose buckets, there are the following supported options for server-side encryption: server-side encryption with Key Management Service (KMS) keys\n (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), and \n server-side encryption with customer-provided encryption keys (SSE-C). Amazon S3 uses\n the corresponding KMS key, or a customer-provided key to encrypt the target\n object copy.

      \n
    • \n
    • \n

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

      \n
    • \n
    \n

    \n Directory buckets \n

    \n
      \n
    • \n

      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 \n CreateSession requests or PUT object requests. Then, new objects \n are automatically encrypted with the desired encryption settings. For more\n 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.

      \n
    • \n
    • \n

      To encrypt new object copies to a directory bucket with SSE-KMS, we recommend you specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). \n The Amazon Web Services managed key (aws/s3) isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS, you can't override the customer managed key for the bucket's SSE-KMS configuration. \n Then, when you perform a CopyObject operation and want to specify server-side encryption settings for new object copies with SSE-KMS in the encryption-related request headers, you must ensure the encryption key is the same customer managed key that you specified for the directory bucket's default encryption configuration. \n

      \n
    • \n
    ", "smithy.api#httpHeader": "x-amz-server-side-encryption" } }, @@ -18987,7 +18996,7 @@ "SSEKMSKeyId": { "target": "com.amazonaws.s3#SSEKMSKeyId", "traits": { - "smithy.api#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\n object protected by KMS will fail if they're not made via SSL or using SigV4. For\n information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see\n Specifying the\n Signature Version in Request Authentication in the\n Amazon S3 User Guide.

    \n

    \n Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the \n x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS \n 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. \nAmazon Web Services managed key (aws/s3) isn't supported. \n

    ", + "smithy.api#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\n object protected by KMS will fail if they're not made via SSL or using SigV4. For\n information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see\n Specifying the\n Signature Version in Request Authentication in the\n Amazon S3 User Guide.

    \n

    \n Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, the \n x-amz-server-side-encryption-aws-kms-key-id header is implicitly assigned the ID of the KMS \n symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. \n If you want to specify the \n x-amz-server-side-encryption-aws-kms-key-id header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS \n customer managed key that's configured for your directory bucket's default encryption setting. 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. \nThe Amazon Web Services managed key (aws/s3) isn't supported. \n

    ", "smithy.api#httpHeader": "x-amz-server-side-encryption-aws-kms-key-id" } }, @@ -19667,7 +19676,7 @@ "SSEKMSKeyId": { "target": "com.amazonaws.s3#SSEKMSKeyId", "traits": { - "smithy.api#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\n account that's issuing the command, you must use the full Key ARN not the Key ID.

    \n

    \n 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 \n key to use. If you specify\n x-amz-server-side-encryption:aws:kms or\n 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\n (aws/s3) to protect the data.

    \n

    \n Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the \n x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS \n 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. \nAmazon Web Services managed key (aws/s3) isn't supported. \n

    ", + "smithy.api#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\n account that's issuing the command, you must use the full Key ARN not the Key ID.

    \n

    \n 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 \n key to use. If you specify\n x-amz-server-side-encryption:aws:kms or\n 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\n (aws/s3) to protect the data.

    \n

    \n Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, the \n x-amz-server-side-encryption-aws-kms-key-id header is implicitly assigned the ID of the KMS \n symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. \n If you want to specify the \n x-amz-server-side-encryption-aws-kms-key-id header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS \n customer managed key that's configured for your directory bucket's default encryption setting. 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. \nThe Amazon Web Services managed key (aws/s3) isn't supported. \n

    ", "smithy.api#httpHeader": "x-amz-server-side-encryption-aws-kms-key-id" } }, @@ -19752,7 +19761,7 @@ } ], "traits": { - "smithy.api#documentation": "

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

    \n

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

    \n

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

    \n \n
      \n
    • \n

      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. Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the\n Amazon S3 User Guide.

      \n
    • \n
    • \n

      \n \n CopyObject API operation - Unlike other Zonal endpoint API operations, the CopyObject API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the CopyObject API operation on directory buckets, see CopyObject.

      \n
    • \n
    • \n

      \n \n HeadBucket API operation - Unlike other Zonal endpoint API operations, the HeadBucket API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the HeadBucket API operation on directory buckets, see HeadBucket.

      \n
    • \n
    \n
    \n
    \n
    Permissions
    \n
    \n

    To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that\n grants s3express:CreateSession permission to the bucket. In a\n policy, you can have the s3express:SessionMode condition key to\n control who can create a ReadWrite or ReadOnly session.\n For more information about ReadWrite or ReadOnly\n sessions, see \n x-amz-create-session-mode\n . For example policies, see\n 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\n Amazon S3 User Guide.

    \n

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

    \n

    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.

    \n
    \n
    Encryption
    \n
    \n

    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 \n CreateSession requests or PUT object requests. Then, new objects \n are automatically encrypted with the desired encryption settings. For more\n 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.

    \n

    For Zonal endpoint (object-level) API operations except CopyObject and UploadPartCopy, \nyou authenticate and authorize requests through CreateSession for low latency. \n 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.

    \n \n

    \n 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. \n 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.\n

    \n
    \n

    In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, \n 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. \n You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and \n Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket. \n

    \n \n

    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 \n CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. \n Also, in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), \n it's not supported to override the values of the encryption settings from the CreateSession request. \n\n

    \n
    \n
    \n
    HTTP Host header syntax
    \n
    \n

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

    \n
    \n
    ", + "smithy.api#documentation": "

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

    \n

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

    \n

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

    \n \n
      \n
    • \n

      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. Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the\n Amazon S3 User Guide.

      \n
    • \n
    • \n

      \n \n CopyObject API operation - Unlike other Zonal endpoint API operations, the CopyObject API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the CopyObject API operation on directory buckets, see CopyObject.

      \n
    • \n
    • \n

      \n \n HeadBucket API operation - Unlike other Zonal endpoint API operations, the HeadBucket API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the HeadBucket API operation on directory buckets, see HeadBucket.

      \n
    • \n
    \n
    \n
    \n
    Permissions
    \n
    \n

    To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that\n grants s3express:CreateSession permission to the bucket. In a\n policy, you can have the s3express:SessionMode condition key to\n control who can create a ReadWrite or ReadOnly session.\n For more information about ReadWrite or ReadOnly\n sessions, see \n x-amz-create-session-mode\n . For example policies, see\n 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\n Amazon S3 User Guide.

    \n

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

    \n

    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.

    \n
    \n
    Encryption
    \n
    \n

    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 \n CreateSession requests or PUT object requests. Then, new objects \n are automatically encrypted with the desired encryption settings. For more\n 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.

    \n

    For Zonal endpoint (object-level) API operations except CopyObject and UploadPartCopy, \nyou authenticate and authorize requests through CreateSession for low latency. \n 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.

    \n \n

    \n Only 1 customer managed key is supported per directory bucket for the lifetime of the bucket. The Amazon Web Services managed key (aws/s3) isn't supported. \n 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.\n

    \n
    \n

    In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, \n 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. \n You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and \n Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket. \n

    \n \n

    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 \n CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. \n Also, in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), \n it's not supported to override the values of the encryption settings from the CreateSession request. \n\n

    \n
    \n
    \n
    HTTP Host header syntax
    \n
    \n

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

    \n
    \n
    ", "smithy.api#http": { "method": "GET", "uri": "/{Bucket}?session", @@ -19806,7 +19815,8 @@ } }, "traits": { - "smithy.api#output": {} + "smithy.api#output": {}, + "smithy.api#xmlName": "CreateSessionResult" } }, "com.amazonaws.s3#CreateSessionRequest": { @@ -19840,7 +19850,7 @@ "SSEKMSKeyId": { "target": "com.amazonaws.s3#SSEKMSKeyId", "traits": { - "smithy.api#documentation": "

    If you specify x-amz-server-side-encryption with aws:kms, you must specify the \n x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS \n 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\n account that't issuing the command, you must use the full Key ARN not the Key ID.

    \n

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

    ", + "smithy.api#documentation": "

    If you specify x-amz-server-side-encryption with aws:kms, you must specify the \n x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS \n 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\n account that't issuing the command, you must use the full Key ARN not the Key ID.

    \n

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

    ", "smithy.api#httpHeader": "x-amz-server-side-encryption-aws-kms-key-id" } }, @@ -20740,7 +20750,7 @@ "target": "com.amazonaws.s3#DeleteObjectOutput" }, "traits": { - "smithy.api#documentation": "

    Removes an object from a bucket. The behavior depends on the bucket's versioning state:

    \n
      \n
    • \n

      If bucket versioning is not enabled, the operation permanently deletes the object.

      \n
    • \n
    • \n

      If bucket versioning is enabled, the operation inserts a delete marker, which becomes the current version of the object. To permanently delete an object in a versioned bucket, you must include the object’s versionId in the request. For more information about versioning-enabled buckets, see Deleting object versions from a versioning-enabled bucket.

      \n
    • \n
    • \n

      If bucket versioning is suspended, the operation removes the object that has a null versionId, if there is one, and inserts a delete marker that becomes the current version of the object. If there isn't an object with a null versionId, and all versions of the object have a versionId, Amazon S3 does not remove the object and only inserts a delete marker. To permanently delete an object that has a versionId, you must include the object’s versionId in the request. For more information about versioning-suspended buckets, see Deleting objects from versioning-suspended buckets.

      \n
    • \n
    \n \n
      \n
    • \n

      \n 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 \n to the versionId query parameter in the request.

      \n
    • \n
    • \n

      \n 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\n . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the\n Amazon S3 User Guide.

      \n
    • \n
    \n
    \n

    To remove a specific version, you must use the versionId query parameter. Using this\n query parameter permanently deletes the version. If the object deleted is a delete marker, Amazon S3\n sets the response header x-amz-delete-marker to true.

    \n

    If the object you want to delete is in a bucket where the bucket versioning\n configuration is MFA Delete enabled, you must include the x-amz-mfa request\n header in the DELETE versionId request. Requests that include\n x-amz-mfa must use HTTPS. For more information about MFA Delete, see Using MFA Delete in the Amazon S3\n User Guide. To see sample\n requests that use versioning, see Sample\n Request.

    \n \n

    \n Directory buckets - MFA delete is not supported by directory buckets.

    \n
    \n

    You can delete objects by explicitly calling DELETE Object or calling \n (PutBucketLifecycle) to enable Amazon S3 to remove them for you. If you want to block\n users or accounts from removing or deleting objects from your bucket, you must deny them\n the s3:DeleteObject, s3:DeleteObjectVersion, and\n s3:PutLifeCycleConfiguration actions.

    \n \n

    \n Directory buckets - S3 Lifecycle is not supported by directory buckets.

    \n
    \n
    \n
    Permissions
    \n
    \n
      \n
    • \n

      \n General purpose bucket permissions - The following permissions are required in your policies when your \n DeleteObjects request includes specific headers.

      \n
        \n
      • \n

        \n \n s3:DeleteObject\n - To delete an object from a bucket, you must always have the s3:DeleteObject permission.

        \n
      • \n
      • \n

        \n \n s3:DeleteObjectVersion\n - To delete a specific version of an object from a versioning-enabled bucket, you must have the s3:DeleteObjectVersion permission.

        \n
      • \n
      \n
    • \n
    • \n

      \n Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the \n CreateSession\n API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. \nAmazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see \n CreateSession\n .

      \n
    • \n
    \n
    \n
    HTTP Host header syntax
    \n
    \n

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

    \n
    \n
    \n

    The following action is related to DeleteObject:

    \n ", + "smithy.api#documentation": "

    Removes an object from a bucket. The behavior depends on the bucket's versioning state.\n For more information, see Best\n practices to consider before deleting an object.

    \n

    To remove a specific version, you must use the versionId query parameter.\n Using this query parameter permanently deletes the version. If the object deleted is a\n delete marker, Amazon S3 sets the response header x-amz-delete-marker to true. If\n the object you want to delete is in a bucket where the bucket versioning configuration is\n MFA delete enabled, you must include the x-amz-mfa request header in the\n DELETE versionId request. Requests that include x-amz-mfa must\n use HTTPS. For more information about MFA delete and to see example requests, see Using MFA\n delete and Sample\n request in the Amazon S3 User Guide.

    \n \n
      \n
    • \n

      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\n versionId query parameter in the request.

      \n
    • \n
    • \n

      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\n . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the\n Amazon S3 User Guide.

      \n
    • \n
    • \n

      MFA delete is not supported by directory buckets.

      \n
    • \n
    \n
    \n
    \n
    Permissions
    \n
    \n
      \n
    • \n

      \n General purpose bucket permissions - The\n following permissions are required in your policies when your\n DeleteObjects request includes specific headers.

      \n
        \n
      • \n

        \n \n s3:DeleteObject\n \n - To delete an object from a bucket, you must always have the\n s3:DeleteObject permission.

        \n \n

        You can also use PutBucketLifecycle to delete\n objects in Amazon S3.

        \n
        \n
      • \n
      • \n

        \n \n s3:DeleteObjectVersion\n - To delete a specific version of an object from a\n versioning-enabled bucket, you must have the\n s3:DeleteObjectVersion permission.

        \n
      • \n
      • \n

        If you want to block users or accounts from removing or deleting\n objects from your bucket, you must deny them the\n s3:DeleteObject, s3:DeleteObjectVersion,\n and s3:PutLifeCycleConfiguration permissions.

        \n
      • \n
      \n
    • \n
    • \n

      \n Directory buckets permissions -\n To grant access to this API operation on a directory bucket, we recommend\n that you use the CreateSession API operation for\n session-based authorization.

      \n
    • \n
    \n
    \n
    HTTP Host header syntax
    \n
    \n

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

    \n
    \n
    \n

    The following action is related to DeleteObject:

    \n ", "smithy.api#examples": [ { "title": "To delete an object (from a non-versioned bucket)", @@ -23473,7 +23483,8 @@ } }, "traits": { - "smithy.api#output": {} + "smithy.api#output": {}, + "smithy.api#xmlName": "GetObjectAttributesResponse" } }, "com.amazonaws.s3#GetObjectAttributesParts": { @@ -26487,6 +26498,12 @@ "traits": { "smithy.api#documentation": "

    \n ContinuationToken is included in the\n response when there are more buckets that can be listed with pagination. The next ListBuckets request to Amazon S3 can be continued with this ContinuationToken. ContinuationToken is obfuscated and is not a real bucket.

    " } + }, + "Prefix": { + "target": "com.amazonaws.s3#Prefix", + "traits": { + "smithy.api#documentation": "

    If Prefix was sent with the request, it is included in the response.

    \n

    All bucket names in the response begin with the specified bucket name prefix.

    " + } } }, "traits": { @@ -26510,6 +26527,20 @@ "smithy.api#documentation": "

    \n ContinuationToken indicates to Amazon S3 that the list is being continued on\n this bucket with a token. ContinuationToken is obfuscated and is not a real\n key. You can use this ContinuationToken for pagination of the list results.

    \n

    Length Constraints: Minimum length of 0. Maximum length of 1024.

    \n

    Required: No.

    ", "smithy.api#httpQuery": "continuation-token" } + }, + "Prefix": { + "target": "com.amazonaws.s3#Prefix", + "traits": { + "smithy.api#documentation": "

    Limits the response to bucket names that begin with the specified bucket name prefix.

    ", + "smithy.api#httpQuery": "prefix" + } + }, + "BucketRegion": { + "target": "com.amazonaws.s3#BucketRegion", + "traits": { + "smithy.api#documentation": "

    Limits the response to buckets that are located in the specified Amazon Web Services Region. The Amazon Web Services Region must be expressed according to the Amazon Web Services Region code, such as us-west-2 for the US West (Oregon) Region. For a list of the valid values for all of the Amazon Web Services Regions, see Regions and Endpoints.

    \n \n

    Requests made to a Regional endpoint that is different from the bucket-region parameter are not supported. For example, if you want to limit the response to your buckets in Region us-west-2, the request must be made to an endpoint in Region us-west-2.

    \n
    ", + "smithy.api#httpQuery": "bucket-region" + } } }, "traits": { @@ -26561,7 +26592,8 @@ } }, "traits": { - "smithy.api#output": {} + "smithy.api#output": {}, + "smithy.api#xmlName": "ListAllMyDirectoryBucketsResult" } }, "com.amazonaws.s3#ListDirectoryBucketsRequest": { @@ -29180,7 +29212,7 @@ "RestrictPublicBuckets": { "target": "com.amazonaws.s3#Setting", "traits": { - "smithy.api#documentation": "

    Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting\n this element to TRUE restricts access to this bucket to only Amazon Web Servicesservice principals and authorized users within this account if the bucket has\n a public policy.

    \n

    Enabling this setting doesn't affect previously stored bucket policies, except that\n public and cross-account access within any public bucket policy, including non-public\n delegation to specific accounts, is blocked.

    ", + "smithy.api#documentation": "

    Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting\n this element to TRUE restricts access to this bucket to only Amazon Web Services service principals and authorized users within this account if the bucket has\n a public policy.

    \n

    Enabling this setting doesn't affect previously stored bucket policies, except that\n public and cross-account access within any public bucket policy, including non-public\n delegation to specific accounts, is blocked.

    ", "smithy.api#xmlName": "RestrictPublicBuckets" } } @@ -29563,7 +29595,7 @@ "requestAlgorithmMember": "ChecksumAlgorithm", "requestChecksumRequired": true }, - "smithy.api#documentation": "

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

    \n \n

    \n 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\n . Virtual-hosted-style requests aren't supported. \nFor more information, see Regional and Zonal endpoints in the\n Amazon S3 User Guide.

    \n
    \n

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

    \n \n
      \n
    • \n

      \n General purpose buckets\n

      \n
        \n
      • \n

        You can optionally configure default encryption\n for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS) or\n dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). \n If you specify default encryption by using\n SSE-KMS, you can also configure Amazon S3 Bucket\n Keys. For information about the bucket default\n encryption feature, see Amazon S3 Bucket Default Encryption\n in the Amazon S3 User Guide.\n

        \n
      • \n
      • \n

        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 doesn't validate the KMS key ID provided in PutBucketEncryption requests.

        \n
      • \n
      \n
    • \n
    • \n

      \n Directory buckets - You can optionally configure default encryption\n for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

      \n
        \n
      • \n

        We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your \n CreateSession requests or PUT object requests. Then, new objects \n are automatically encrypted with the desired encryption settings. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

        \n
      • \n
      • \n

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

        \n
      • \n
      • \n

        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 \nto directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or \n 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.

        \n
      • \n
      • \n

        When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

        \n
      • \n
      • \n

        For directory buckets, if you use PutBucketEncryption to set your default bucket encryption to SSE-KMS, Amazon S3 validates the KMS key ID provided in PutBucketEncryption requests.

        \n
      • \n
      \n
    • \n
    \n
    \n \n

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

    \n

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

    \n
    \n
    \n
    Permissions
    \n
    \n
      \n
    • \n

      \n General purpose bucket permissions - The s3:PutEncryptionConfiguration permission is required in a policy. \n The bucket owner has this permission\n by default. The bucket owner can grant this permission to others. For more information\n about permissions, see Permissions Related to Bucket Operations and Managing\n Access Permissions to Your Amazon S3 Resources in the\n Amazon S3 User Guide.

      \n
    • \n
    • \n

      \n Directory bucket permissions - To grant access to this API operation, you must have the s3express:PutEncryptionConfiguration permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

      \n

      To set a directory bucket default encryption 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.

      \n
    • \n
    \n
    \n
    HTTP Host header syntax
    \n
    \n

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

    \n
    \n
    \n

    The following operations are related to PutBucketEncryption:

    \n ", + "smithy.api#documentation": "

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

    \n \n

    \n 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\n . Virtual-hosted-style requests aren't supported. \nFor more information, see Regional and Zonal endpoints in the\n Amazon S3 User Guide.

    \n
    \n

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

    \n \n
      \n
    • \n

      \n General purpose buckets\n

      \n
        \n
      • \n

        You can optionally configure default encryption\n for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS) or\n dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). \n If you specify default encryption by using\n SSE-KMS, you can also configure Amazon S3 Bucket\n Keys. For information about the bucket default\n encryption feature, see Amazon S3 Bucket Default Encryption\n in the Amazon S3 User Guide.\n

        \n
      • \n
      • \n

        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 doesn't validate the KMS key ID provided in PutBucketEncryption requests.

        \n
      • \n
      \n
    • \n
    • \n

      \n Directory buckets - You can optionally configure default encryption\n for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

      \n
        \n
      • \n

        We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your \n CreateSession requests or PUT object requests. Then, new objects \n are automatically encrypted with the desired encryption settings. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

        \n
      • \n
      • \n

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

        \n
      • \n
      • \n

        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 \nto directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or \n 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.

        \n
      • \n
      • \n

        When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

        \n
      • \n
      • \n

        For directory buckets, if you use PutBucketEncryption to set your default bucket encryption to SSE-KMS, Amazon S3 validates the KMS key ID provided in PutBucketEncryption requests.

        \n
      • \n
      \n
    • \n
    \n
    \n \n

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

    \n

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

    \n
    \n
    \n
    Permissions
    \n
    \n
      \n
    • \n

      \n General purpose bucket permissions - The s3:PutEncryptionConfiguration permission is required in a policy. \n The bucket owner has this permission\n by default. The bucket owner can grant this permission to others. For more information\n about permissions, see Permissions Related to Bucket Operations and Managing\n Access Permissions to Your Amazon S3 Resources in the\n Amazon S3 User Guide.

      \n
    • \n
    • \n

      \n Directory bucket permissions - To grant access to this API operation, you must have the s3express:PutEncryptionConfiguration permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

      \n

      To set a directory bucket default encryption 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.

      \n
    • \n
    \n
    \n
    HTTP Host header syntax
    \n
    \n

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

    \n
    \n
    \n

    The following operations are related to PutBucketEncryption:

    \n ", "smithy.api#http": { "method": "PUT", "uri": "/{Bucket}?encryption", @@ -31406,7 +31438,7 @@ "ContentMD5": { "target": "com.amazonaws.s3#ContentMD5", "traits": { - "smithy.api#documentation": "

    The base64-encoded 128-bit MD5 digest of the message (without the headers) according to\n RFC 1864. This header can be used as a message integrity check to verify that the data is\n the same data that was originally sent. Although it is optional, we recommend using the\n Content-MD5 mechanism as an end-to-end integrity check. For more information about REST\n request authentication, see REST Authentication.

    \n \n

    The Content-MD5 header is required for any request to upload an\n object with a retention period configured using Amazon S3 Object Lock. For more\n information about Amazon S3 Object Lock, see Amazon S3 Object Lock\n Overview in the Amazon S3 User Guide.

    \n
    \n \n

    This functionality is not supported for directory buckets.

    \n
    ", + "smithy.api#documentation": "

    The base64-encoded 128-bit MD5 digest of the message (without the headers) according to\n RFC 1864. This header can be used as a message integrity check to verify that the data is\n the same data that was originally sent. Although it is optional, we recommend using the\n Content-MD5 mechanism as an end-to-end integrity check. For more information about REST\n request authentication, see REST Authentication.

    \n \n

    The Content-MD5 or x-amz-sdk-checksum-algorithm header is required for any request to upload an\n object with a retention period configured using Amazon S3 Object Lock. For more\n information, see Uploading objects to an Object Lock enabled bucket\n in the Amazon S3 User Guide.

    \n
    \n \n

    This functionality is not supported for directory buckets.

    \n
    ", "smithy.api#httpHeader": "Content-MD5" } }, @@ -31420,7 +31452,7 @@ "ChecksumAlgorithm": { "target": "com.amazonaws.s3#ChecksumAlgorithm", "traits": { - "smithy.api#documentation": "

    Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any\n additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum-algorithm\n or\n x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request.

    \n

    For the x-amz-checksum-algorithm\n header, replace \n algorithm\n with the supported algorithm from the following list:

    \n
      \n
    • \n

      \n CRC32\n

      \n
    • \n
    • \n

      \n CRC32C\n

      \n
    • \n
    • \n

      \n SHA1\n

      \n
    • \n
    • \n

      \n SHA256\n

      \n
    • \n
    \n

    For more\n information, see Checking object integrity in\n the Amazon S3 User Guide.

    \n

    If the individual checksum value you provide through x-amz-checksum-algorithm\n doesn't match the checksum algorithm you set through x-amz-sdk-checksum-algorithm, Amazon S3 ignores any provided\n ChecksumAlgorithm parameter and uses the checksum algorithm that matches the provided value in x-amz-checksum-algorithm\n .

    \n \n

    For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

    \n
    ", + "smithy.api#documentation": "

    Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any\n additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum-algorithm\n or\n x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request.

    \n

    For the x-amz-checksum-algorithm\n header, replace \n algorithm\n with the supported algorithm from the following list:

    \n
      \n
    • \n

      \n CRC32\n

      \n
    • \n
    • \n

      \n CRC32C\n

      \n
    • \n
    • \n

      \n SHA1\n

      \n
    • \n
    • \n

      \n SHA256\n

      \n
    • \n
    \n

    For more\n information, see Checking object integrity in\n the Amazon S3 User Guide.

    \n

    If the individual checksum value you provide through x-amz-checksum-algorithm\n doesn't match the checksum algorithm you set through x-amz-sdk-checksum-algorithm, Amazon S3 ignores any provided\n ChecksumAlgorithm parameter and uses the checksum algorithm that matches the provided value in x-amz-checksum-algorithm\n .

    \n \n

    The Content-MD5 or x-amz-sdk-checksum-algorithm header is required for any request to upload an\n object with a retention period configured using Amazon S3 Object Lock. For more\n information, see Uploading objects to an Object Lock enabled bucket\n in the Amazon S3 User Guide.

    \n
    \n

    For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

    ", "smithy.api#httpHeader": "x-amz-sdk-checksum-algorithm" } }, @@ -31557,7 +31589,7 @@ "SSEKMSKeyId": { "target": "com.amazonaws.s3#SSEKMSKeyId", "traits": { - "smithy.api#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\n account that's issuing the command, you must use the full Key ARN not the Key ID.

    \n

    \n 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 \n key to use. If you specify\n x-amz-server-side-encryption:aws:kms or\n 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\n (aws/s3) to protect the data.

    \n

    \n Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the \n x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS \n 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. \nAmazon Web Services managed key (aws/s3) isn't supported. \n

    ", + "smithy.api#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\n account that's issuing the command, you must use the full Key ARN not the Key ID.

    \n

    \n 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 \n key to use. If you specify\n x-amz-server-side-encryption:aws:kms or\n 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\n (aws/s3) to protect the data.

    \n

    \n Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, the \n x-amz-server-side-encryption-aws-kms-key-id header is implicitly assigned the ID of the KMS \n symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. \n If you want to specify the \n x-amz-server-side-encryption-aws-kms-key-id header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS \n customer managed key that's configured for your directory bucket's default encryption setting. 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. \nThe Amazon Web Services managed key (aws/s3) isn't supported. \n

    ", "smithy.api#httpHeader": "x-amz-server-side-encryption-aws-kms-key-id" } }, @@ -32483,7 +32515,7 @@ "aws.protocols#httpChecksum": { "requestAlgorithmMember": "ChecksumAlgorithm" }, - "smithy.api#documentation": "\n

    This operation is not supported by directory buckets.

    \n
    \n \n

    The SELECT job type for the RestoreObject operation is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more\n

    \n
    \n

    Restores an archived copy of an object back into Amazon S3

    \n

    This functionality is not supported for Amazon S3 on Outposts.

    \n

    This action performs the following types of requests:

    \n
      \n
    • \n

      \n restore an archive - Restore an archived object

      \n
    • \n
    \n

    For more information about the S3 structure in the request body, see the\n following:

    \n \n
    \n
    Permissions
    \n
    \n

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

    \n
    \n
    Restoring objects
    \n
    \n

    Objects that you archive to the S3 Glacier Flexible Retrieval Flexible Retrieval\n or S3 Glacier Deep Archive storage class, and S3 Intelligent-Tiering Archive or\n S3 Intelligent-Tiering Deep Archive tiers, are not accessible in real time. For objects in the\n S3 Glacier Flexible Retrieval Flexible Retrieval or S3 Glacier Deep Archive\n storage classes, you must first initiate a restore request, and then wait until a\n temporary copy of the object is available. If you want a permanent copy of the\n object, create a copy of it in the Amazon S3 Standard storage class in your S3 bucket.\n To access an archived object, you must restore the object for the duration (number\n of days) that you specify. For objects in the Archive Access or Deep Archive\n Access tiers of S3 Intelligent-Tiering, you must first initiate a restore request,\n and then wait until the object is moved into the Frequent Access tier.

    \n

    To restore a specific object version, you can provide a version ID. If you\n don't provide a version ID, Amazon S3 restores the current version.

    \n

    When restoring an archived object, you can specify one of the following data\n access tier options in the Tier element of the request body:

    \n
      \n
    • \n

      \n Expedited - Expedited retrievals allow you to quickly access\n your data stored in the S3 Glacier Flexible Retrieval Flexible Retrieval\n storage class or S3 Intelligent-Tiering Archive tier when occasional urgent requests\n for restoring archives are required. For all but the largest archived\n objects (250 MB+), data accessed using Expedited retrievals is typically\n made available within 1–5 minutes. Provisioned capacity ensures that\n retrieval capacity for Expedited retrievals is available when you need it.\n Expedited retrievals and provisioned capacity are not available for objects\n stored in the S3 Glacier Deep Archive storage class or\n S3 Intelligent-Tiering Deep Archive tier.

      \n
    • \n
    • \n

      \n Standard - Standard retrievals allow you to access any of\n your archived objects within several hours. This is the default option for\n retrieval requests that do not specify the retrieval option. Standard\n retrievals typically finish within 3–5 hours for objects stored in the\n S3 Glacier Flexible Retrieval Flexible Retrieval storage class or\n S3 Intelligent-Tiering Archive tier. They typically finish within 12 hours for\n objects stored in the S3 Glacier Deep Archive storage class or\n S3 Intelligent-Tiering Deep Archive tier. Standard retrievals are free for objects stored\n in S3 Intelligent-Tiering.

      \n
    • \n
    • \n

      \n Bulk - Bulk retrievals free for objects stored in the\n S3 Glacier Flexible Retrieval and S3 Intelligent-Tiering storage classes,\n enabling you to retrieve large amounts, even petabytes, of data at no cost.\n Bulk retrievals typically finish within 5–12 hours for objects stored in the\n S3 Glacier Flexible Retrieval Flexible Retrieval storage class or\n S3 Intelligent-Tiering Archive tier. Bulk retrievals are also the lowest-cost\n retrieval option when restoring objects from\n S3 Glacier Deep Archive. They typically finish within 48 hours for\n objects stored in the S3 Glacier Deep Archive storage class or\n S3 Intelligent-Tiering Deep Archive tier.

      \n
    • \n
    \n

    For more information about archive retrieval options and provisioned capacity\n for Expedited data access, see Restoring Archived\n Objects in the Amazon S3 User Guide.

    \n

    You can use Amazon S3 restore speed upgrade to change the restore speed to a faster\n speed while it is in progress. For more information, see Upgrading the speed of an in-progress restore in the\n Amazon S3 User Guide.

    \n

    To get the status of object restoration, you can send a HEAD\n request. Operations return the x-amz-restore header, which provides\n information about the restoration status, in the response. You can use Amazon S3 event\n notifications to notify you when a restore is initiated or completed. For more\n information, see Configuring Amazon S3 Event\n Notifications in the Amazon S3 User Guide.

    \n

    After restoring an archived object, you can update the restoration period by\n reissuing the request with a new period. Amazon S3 updates the restoration period\n relative to the current time and charges only for the request-there are no\n data transfer charges. You cannot update the restoration period when Amazon S3 is\n actively processing your current restore request for the object.

    \n

    If your bucket has a lifecycle configuration with a rule that includes an\n expiration action, the object expiration overrides the life span that you specify\n in a restore request. For example, if you restore an object copy for 10 days, but\n the object is scheduled to expire in 3 days, Amazon S3 deletes the object in 3 days.\n For more information about lifecycle configuration, see PutBucketLifecycleConfiguration and Object Lifecycle\n Management in Amazon S3 User Guide.

    \n
    \n
    Responses
    \n
    \n

    A successful action returns either the 200 OK or 202\n Accepted status code.

    \n
      \n
    • \n

      If the object is not previously restored, then Amazon S3 returns 202\n Accepted in the response.

      \n
    • \n
    • \n

      If the object is previously restored, Amazon S3 returns 200 OK in\n the response.

      \n
    • \n
    \n
      \n
    • \n

      Special errors:

      \n
        \n
      • \n

        \n Code: RestoreAlreadyInProgress\n

        \n
      • \n
      • \n

        \n Cause: Object restore is already in progress.\n

        \n
      • \n
      • \n

        \n HTTP Status Code: 409 Conflict\n

        \n
      • \n
      • \n

        \n SOAP Fault Code Prefix: Client\n

        \n
      • \n
      \n
    • \n
    • \n
        \n
      • \n

        \n Code: GlacierExpeditedRetrievalNotAvailable\n

        \n
      • \n
      • \n

        \n Cause: expedited retrievals are currently not available.\n Try again later. (Returned if there is insufficient capacity to\n process the Expedited request. This error applies only to Expedited\n retrievals and not to S3 Standard or Bulk retrievals.)\n

        \n
      • \n
      • \n

        \n HTTP Status Code: 503\n

        \n
      • \n
      • \n

        \n SOAP Fault Code Prefix: N/A\n

        \n
      • \n
      \n
    • \n
    \n
    \n
    \n

    The following operations are related to RestoreObject:

    \n ", + "smithy.api#documentation": "\n

    This operation is not supported by directory buckets.

    \n
    \n

    Restores an archived copy of an object back into Amazon S3

    \n

    This functionality is not supported for Amazon S3 on Outposts.

    \n

    This action performs the following types of requests:

    \n
      \n
    • \n

      \n restore an archive - Restore an archived object

      \n
    • \n
    \n

    For more information about the S3 structure in the request body, see the\n following:

    \n \n
    \n
    Permissions
    \n
    \n

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

    \n
    \n
    Restoring objects
    \n
    \n

    Objects that you archive to the S3 Glacier Flexible Retrieval Flexible Retrieval\n or S3 Glacier Deep Archive storage class, and S3 Intelligent-Tiering Archive or\n S3 Intelligent-Tiering Deep Archive tiers, are not accessible in real time. For objects in the\n S3 Glacier Flexible Retrieval Flexible Retrieval or S3 Glacier Deep Archive\n storage classes, you must first initiate a restore request, and then wait until a\n temporary copy of the object is available. If you want a permanent copy of the\n object, create a copy of it in the Amazon S3 Standard storage class in your S3 bucket.\n To access an archived object, you must restore the object for the duration (number\n of days) that you specify. For objects in the Archive Access or Deep Archive\n Access tiers of S3 Intelligent-Tiering, you must first initiate a restore request,\n and then wait until the object is moved into the Frequent Access tier.

    \n

    To restore a specific object version, you can provide a version ID. If you\n don't provide a version ID, Amazon S3 restores the current version.

    \n

    When restoring an archived object, you can specify one of the following data\n access tier options in the Tier element of the request body:

    \n
      \n
    • \n

      \n Expedited - Expedited retrievals allow you to quickly access\n your data stored in the S3 Glacier Flexible Retrieval Flexible Retrieval\n storage class or S3 Intelligent-Tiering Archive tier when occasional urgent requests\n for restoring archives are required. For all but the largest archived\n objects (250 MB+), data accessed using Expedited retrievals is typically\n made available within 1–5 minutes. Provisioned capacity ensures that\n retrieval capacity for Expedited retrievals is available when you need it.\n Expedited retrievals and provisioned capacity are not available for objects\n stored in the S3 Glacier Deep Archive storage class or\n S3 Intelligent-Tiering Deep Archive tier.

      \n
    • \n
    • \n

      \n Standard - Standard retrievals allow you to access any of\n your archived objects within several hours. This is the default option for\n retrieval requests that do not specify the retrieval option. Standard\n retrievals typically finish within 3–5 hours for objects stored in the\n S3 Glacier Flexible Retrieval Flexible Retrieval storage class or\n S3 Intelligent-Tiering Archive tier. They typically finish within 12 hours for\n objects stored in the S3 Glacier Deep Archive storage class or\n S3 Intelligent-Tiering Deep Archive tier. Standard retrievals are free for objects stored\n in S3 Intelligent-Tiering.

      \n
    • \n
    • \n

      \n Bulk - Bulk retrievals free for objects stored in the\n S3 Glacier Flexible Retrieval and S3 Intelligent-Tiering storage classes,\n enabling you to retrieve large amounts, even petabytes, of data at no cost.\n Bulk retrievals typically finish within 5–12 hours for objects stored in the\n S3 Glacier Flexible Retrieval Flexible Retrieval storage class or\n S3 Intelligent-Tiering Archive tier. Bulk retrievals are also the lowest-cost\n retrieval option when restoring objects from\n S3 Glacier Deep Archive. They typically finish within 48 hours for\n objects stored in the S3 Glacier Deep Archive storage class or\n S3 Intelligent-Tiering Deep Archive tier.

      \n
    • \n
    \n

    For more information about archive retrieval options and provisioned capacity\n for Expedited data access, see Restoring Archived\n Objects in the Amazon S3 User Guide.

    \n

    You can use Amazon S3 restore speed upgrade to change the restore speed to a faster\n speed while it is in progress. For more information, see Upgrading the speed of an in-progress restore in the\n Amazon S3 User Guide.

    \n

    To get the status of object restoration, you can send a HEAD\n request. Operations return the x-amz-restore header, which provides\n information about the restoration status, in the response. You can use Amazon S3 event\n notifications to notify you when a restore is initiated or completed. For more\n information, see Configuring Amazon S3 Event\n Notifications in the Amazon S3 User Guide.

    \n

    After restoring an archived object, you can update the restoration period by\n reissuing the request with a new period. Amazon S3 updates the restoration period\n relative to the current time and charges only for the request-there are no\n data transfer charges. You cannot update the restoration period when Amazon S3 is\n actively processing your current restore request for the object.

    \n

    If your bucket has a lifecycle configuration with a rule that includes an\n expiration action, the object expiration overrides the life span that you specify\n in a restore request. For example, if you restore an object copy for 10 days, but\n the object is scheduled to expire in 3 days, Amazon S3 deletes the object in 3 days.\n For more information about lifecycle configuration, see PutBucketLifecycleConfiguration and Object Lifecycle\n Management in Amazon S3 User Guide.

    \n
    \n
    Responses
    \n
    \n

    A successful action returns either the 200 OK or 202\n Accepted status code.

    \n
      \n
    • \n

      If the object is not previously restored, then Amazon S3 returns 202\n Accepted in the response.

      \n
    • \n
    • \n

      If the object is previously restored, Amazon S3 returns 200 OK in\n the response.

      \n
    • \n
    \n
      \n
    • \n

      Special errors:

      \n
        \n
      • \n

        \n Code: RestoreAlreadyInProgress\n

        \n
      • \n
      • \n

        \n Cause: Object restore is already in progress.\n

        \n
      • \n
      • \n

        \n HTTP Status Code: 409 Conflict\n

        \n
      • \n
      • \n

        \n SOAP Fault Code Prefix: Client\n

        \n
      • \n
      \n
    • \n
    • \n
        \n
      • \n

        \n Code: GlacierExpeditedRetrievalNotAvailable\n

        \n
      • \n
      • \n

        \n Cause: expedited retrievals are currently not available.\n Try again later. (Returned if there is insufficient capacity to\n process the Expedited request. This error applies only to Expedited\n retrievals and not to S3 Standard or Bulk retrievals.)\n

        \n
      • \n
      • \n

        \n HTTP Status Code: 503\n

        \n
      • \n
      • \n

        \n SOAP Fault Code Prefix: N/A\n

        \n
      • \n
      \n
    • \n
    \n
    \n
    \n

    The following operations are related to RestoreObject:

    \n ", "smithy.api#examples": [ { "title": "To restore an archived object", @@ -32611,7 +32643,7 @@ "Type": { "target": "com.amazonaws.s3#RestoreRequestType", "traits": { - "smithy.api#documentation": "\n

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more\n

    \n
    \n

    Type of restore request.

    " + "smithy.api#documentation": "

    Type of restore request.

    " } }, "Tier": { @@ -32629,7 +32661,7 @@ "SelectParameters": { "target": "com.amazonaws.s3#SelectParameters", "traits": { - "smithy.api#documentation": "\n

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more\n

    \n
    \n

    Describes the parameters for Select job types.

    " + "smithy.api#documentation": "

    Describes the parameters for Select job types.

    " } }, "OutputLocation": { @@ -32854,7 +32886,7 @@ "target": "com.amazonaws.s3#SelectObjectContentOutput" }, "traits": { - "smithy.api#documentation": "\n

    This operation is not supported by directory buckets.

    \n
    \n \n

    The SelectObjectContent operation is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the operation as usual. Learn more\n

    \n
    \n

    This action filters the contents of an Amazon S3 object based on a simple structured query\n language (SQL) statement. In the request, along with the SQL expression, you must also\n specify a data serialization format (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses\n this format to parse object data into records, and returns only records that match the\n specified SQL expression. You must also specify the data serialization format for the\n response.

    \n

    This functionality is not supported for Amazon S3 on Outposts.

    \n

    For more information about Amazon S3 Select, see Selecting Content from\n Objects and SELECT\n Command in the Amazon S3 User Guide.

    \n

    \n
    \n
    Permissions
    \n
    \n

    You must have the s3:GetObject permission for this operation. Amazon S3\n Select does not support anonymous access. For more information about permissions,\n see Specifying Permissions in\n a Policy in the Amazon S3 User Guide.

    \n
    \n
    Object Data Formats
    \n
    \n

    You can use Amazon S3 Select to query objects that have the following format\n properties:

    \n
      \n
    • \n

      \n CSV, JSON, and Parquet - Objects must be in CSV,\n JSON, or Parquet format.

      \n
    • \n
    • \n

      \n UTF-8 - UTF-8 is the only encoding type Amazon S3 Select\n supports.

      \n
    • \n
    • \n

      \n GZIP or BZIP2 - CSV and JSON files can be compressed\n using GZIP or BZIP2. GZIP and BZIP2 are the only compression formats that\n Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select supports columnar\n compression for Parquet using GZIP or Snappy. Amazon S3 Select does not support\n whole-object compression for Parquet objects.

      \n
    • \n
    • \n

      \n Server-side encryption - Amazon S3 Select supports\n querying objects that are protected with server-side encryption.

      \n

      For objects that are encrypted with customer-provided encryption keys\n (SSE-C), you must use HTTPS, and you must use the headers that are\n documented in the GetObject. For more\n information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys)\n in the Amazon S3 User Guide.

      \n

      For objects that are encrypted with Amazon S3 managed keys (SSE-S3) and\n Amazon Web Services KMS keys (SSE-KMS), server-side encryption is handled transparently,\n so you don't need to specify anything. For more information about\n server-side encryption, including SSE-S3 and SSE-KMS, see Protecting Data Using Server-Side Encryption in the\n Amazon S3 User Guide.

      \n
    • \n
    \n
    \n
    Working with the Response Body
    \n
    \n

    Given the response size is unknown, Amazon S3 Select streams the response as a\n series of messages and includes a Transfer-Encoding header with\n chunked as its value in the response. For more information, see\n Appendix:\n SelectObjectContent\n Response.

    \n
    \n
    GetObject Support
    \n
    \n

    The SelectObjectContent action does not support the following\n GetObject functionality. For more information, see GetObject.

    \n
      \n
    • \n

      \n Range: Although you can specify a scan range for an Amazon S3 Select\n request (see SelectObjectContentRequest - ScanRange in the request\n parameters), you cannot specify the range of bytes of an object to return.\n

      \n
    • \n
    • \n

      The GLACIER, DEEP_ARCHIVE, and\n REDUCED_REDUNDANCY storage classes, or the\n ARCHIVE_ACCESS and DEEP_ARCHIVE_ACCESS access\n tiers of the INTELLIGENT_TIERING storage class: You cannot\n query objects in the GLACIER, DEEP_ARCHIVE, or\n REDUCED_REDUNDANCY storage classes, nor objects in the\n ARCHIVE_ACCESS or DEEP_ARCHIVE_ACCESS access\n tiers of the INTELLIGENT_TIERING storage class. For more\n information about storage classes, see Using Amazon S3\n storage classes in the\n Amazon S3 User Guide.

      \n
    • \n
    \n
    \n
    Special Errors
    \n
    \n

    For a list of special errors for this operation, see List of SELECT Object Content Error Codes\n

    \n
    \n
    \n

    The following operations are related to SelectObjectContent:

    \n ", + "smithy.api#documentation": "\n

    This operation is not supported by directory buckets.

    \n
    \n

    This action filters the contents of an Amazon S3 object based on a simple structured query\n language (SQL) statement. In the request, along with the SQL expression, you must also\n specify a data serialization format (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses\n this format to parse object data into records, and returns only records that match the\n specified SQL expression. You must also specify the data serialization format for the\n response.

    \n

    This functionality is not supported for Amazon S3 on Outposts.

    \n

    For more information about Amazon S3 Select, see Selecting Content from\n Objects and SELECT\n Command in the Amazon S3 User Guide.

    \n

    \n
    \n
    Permissions
    \n
    \n

    You must have the s3:GetObject permission for this operation. Amazon S3\n Select does not support anonymous access. For more information about permissions,\n see Specifying Permissions in\n a Policy in the Amazon S3 User Guide.

    \n
    \n
    Object Data Formats
    \n
    \n

    You can use Amazon S3 Select to query objects that have the following format\n properties:

    \n
      \n
    • \n

      \n CSV, JSON, and Parquet - Objects must be in CSV,\n JSON, or Parquet format.

      \n
    • \n
    • \n

      \n UTF-8 - UTF-8 is the only encoding type Amazon S3 Select\n supports.

      \n
    • \n
    • \n

      \n GZIP or BZIP2 - CSV and JSON files can be compressed\n using GZIP or BZIP2. GZIP and BZIP2 are the only compression formats that\n Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select supports columnar\n compression for Parquet using GZIP or Snappy. Amazon S3 Select does not support\n whole-object compression for Parquet objects.

      \n
    • \n
    • \n

      \n Server-side encryption - Amazon S3 Select supports\n querying objects that are protected with server-side encryption.

      \n

      For objects that are encrypted with customer-provided encryption keys\n (SSE-C), you must use HTTPS, and you must use the headers that are\n documented in the GetObject. For more\n information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys)\n in the Amazon S3 User Guide.

      \n

      For objects that are encrypted with Amazon S3 managed keys (SSE-S3) and\n Amazon Web Services KMS keys (SSE-KMS), server-side encryption is handled transparently,\n so you don't need to specify anything. For more information about\n server-side encryption, including SSE-S3 and SSE-KMS, see Protecting Data Using Server-Side Encryption in the\n Amazon S3 User Guide.

      \n
    • \n
    \n
    \n
    Working with the Response Body
    \n
    \n

    Given the response size is unknown, Amazon S3 Select streams the response as a\n series of messages and includes a Transfer-Encoding header with\n chunked as its value in the response. For more information, see\n Appendix:\n SelectObjectContent\n Response.

    \n
    \n
    GetObject Support
    \n
    \n

    The SelectObjectContent action does not support the following\n GetObject functionality. For more information, see GetObject.

    \n
      \n
    • \n

      \n Range: Although you can specify a scan range for an Amazon S3 Select\n request (see SelectObjectContentRequest - ScanRange in the request\n parameters), you cannot specify the range of bytes of an object to return.\n

      \n
    • \n
    • \n

      The GLACIER, DEEP_ARCHIVE, and\n REDUCED_REDUNDANCY storage classes, or the\n ARCHIVE_ACCESS and DEEP_ARCHIVE_ACCESS access\n tiers of the INTELLIGENT_TIERING storage class: You cannot\n query objects in the GLACIER, DEEP_ARCHIVE, or\n REDUCED_REDUNDANCY storage classes, nor objects in the\n ARCHIVE_ACCESS or DEEP_ARCHIVE_ACCESS access\n tiers of the INTELLIGENT_TIERING storage class. For more\n information about storage classes, see Using Amazon S3\n storage classes in the\n Amazon S3 User Guide.

      \n
    • \n
    \n
    \n
    Special Errors
    \n
    \n

    For a list of special errors for this operation, see List of SELECT Object Content Error Codes\n

    \n
    \n
    \n

    The following operations are related to SelectObjectContent:

    \n ", "smithy.api#http": { "method": "POST", "uri": "/{Bucket}/{Key+}?select&select-type=2", @@ -33008,7 +33040,7 @@ } }, "traits": { - "smithy.api#documentation": "\n

    Learn Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more\n

    \n
    \n

    Request to filter the contents of an Amazon S3 object based on a simple Structured Query\n Language (SQL) statement. In the request, along with the SQL expression, you must specify a\n data serialization format (JSON or CSV) of the object. Amazon S3 uses this to parse object data\n into records. It returns only records that match the specified SQL expression. You must\n also specify the data serialization format for the response. For more information, see\n S3Select API Documentation.

    ", + "smithy.api#documentation": "

    Request to filter the contents of an Amazon S3 object based on a simple Structured Query\n Language (SQL) statement. In the request, along with the SQL expression, you must specify a\n data serialization format (JSON or CSV) of the object. Amazon S3 uses this to parse object data\n into records. It returns only records that match the specified SQL expression. You must\n also specify the data serialization format for the response. For more information, see\n S3Select API Documentation.

    ", "smithy.api#input": {} } }, @@ -33032,7 +33064,7 @@ "Expression": { "target": "com.amazonaws.s3#Expression", "traits": { - "smithy.api#documentation": "\n

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more\n

    \n
    \n

    The expression that is used to query the object.

    ", + "smithy.api#documentation": "

    The expression that is used to query the object.

    ", "smithy.api#required": {} } }, @@ -33045,7 +33077,7 @@ } }, "traits": { - "smithy.api#documentation": "\n

    Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. Learn more\n

    \n
    \n

    Describes the parameters for Select job types.

    \n

    Learn How to optimize querying your data in Amazon S3 using\n Amazon Athena, S3 Object Lambda, or client-side filtering.

    " + "smithy.api#documentation": "

    Describes the parameters for Select job types.

    " } }, "com.amazonaws.s3#ServerSideEncryption": { @@ -33089,7 +33121,7 @@ } }, "traits": { - "smithy.api#documentation": "

    Describes the default server-side encryption to apply to new objects in the bucket. If a\n PUT Object request doesn't specify any server-side encryption, this default encryption will\n be applied. For more\n information, see PutBucketEncryption.

    \n \n
      \n
    • \n

      \n General purpose buckets - If you don't specify a customer managed key at configuration, Amazon S3 automatically creates\n an Amazon Web Services KMS key (aws/s3) in your Amazon Web Services account the first time that you add an object encrypted\n with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS.

      \n
    • \n
    • \n

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

      \n
    • \n
    • \n

      \n Directory buckets - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS.

      \n
    • \n
    \n
    " + "smithy.api#documentation": "

    Describes the default server-side encryption to apply to new objects in the bucket. If a\n PUT Object request doesn't specify any server-side encryption, this default encryption will\n be applied. For more\n information, see PutBucketEncryption.

    \n \n
      \n
    • \n

      \n General purpose buckets - If you don't specify a customer managed key at configuration, Amazon S3 automatically creates\n an Amazon Web Services KMS key (aws/s3) in your Amazon Web Services account the first time that you add an object encrypted\n with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS.

      \n
    • \n
    • \n

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

      \n
    • \n
    • \n

      \n Directory buckets - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS.

      \n
    • \n
    \n
    " } }, "com.amazonaws.s3#ServerSideEncryptionConfiguration": {