diff --git a/CHANGELOG.md b/CHANGELOG.md index 88de419..e1606bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## NOT RELEASED +### Changed + +- AWS enhancement: Documentation updates. + ## 2.2.0 ### Added diff --git a/src/Input/AbortMultipartUploadRequest.php b/src/Input/AbortMultipartUploadRequest.php index 5167e50..c1a96e4 100644 --- a/src/Input/AbortMultipartUploadRequest.php +++ b/src/Input/AbortMultipartUploadRequest.php @@ -16,7 +16,7 @@ final class AbortMultipartUploadRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/CompleteMultipartUploadRequest.php b/src/Input/CompleteMultipartUploadRequest.php index 08fec4a..fc12a4b 100644 --- a/src/Input/CompleteMultipartUploadRequest.php +++ b/src/Input/CompleteMultipartUploadRequest.php @@ -17,7 +17,7 @@ final class CompleteMultipartUploadRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/CopyObjectRequest.php b/src/Input/CopyObjectRequest.php index 3787901..5643e53 100644 --- a/src/Input/CopyObjectRequest.php +++ b/src/Input/CopyObjectRequest.php @@ -50,7 +50,7 @@ final class CopyObjectRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/CreateBucketRequest.php b/src/Input/CreateBucketRequest.php index 020e468..73099ff 100644 --- a/src/Input/CreateBucketRequest.php +++ b/src/Input/CreateBucketRequest.php @@ -30,7 +30,7 @@ final class CreateBucketRequest extends Input * **Directory buckets ** - When you use this operation with a directory bucket, you must use path-style requests in the * format `https://s3express-control.*region_code*.amazonaws.com/*bucket-name*`. Virtual-hosted-style requests aren't * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the - * format `*bucket_base_name*--*az_id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information + * format `*bucket_base_name*--*az_id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information * about bucket naming restrictions, see Directory bucket naming rules [^2] in the *Amazon S3 User Guide* * * [^1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html diff --git a/src/Input/CreateMultipartUploadRequest.php b/src/Input/CreateMultipartUploadRequest.php index c57c1b3..b288f9c 100644 --- a/src/Input/CreateMultipartUploadRequest.php +++ b/src/Input/CreateMultipartUploadRequest.php @@ -44,7 +44,7 @@ final class CreateMultipartUploadRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/DeleteBucketRequest.php b/src/Input/DeleteBucketRequest.php index 1ac384c..9819439 100644 --- a/src/Input/DeleteBucketRequest.php +++ b/src/Input/DeleteBucketRequest.php @@ -15,7 +15,7 @@ final class DeleteBucketRequest extends Input * **Directory buckets ** - When you use this operation with a directory bucket, you must use path-style requests in the * format `https://s3express-control.*region_code*.amazonaws.com/*bucket-name*`. Virtual-hosted-style requests aren't * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the - * format `*bucket_base_name*--*az_id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information + * format `*bucket_base_name*--*az_id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information * about bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide* * * [^1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html diff --git a/src/Input/DeleteObjectRequest.php b/src/Input/DeleteObjectRequest.php index a7ea252..ad3b47a 100644 --- a/src/Input/DeleteObjectRequest.php +++ b/src/Input/DeleteObjectRequest.php @@ -16,7 +16,7 @@ final class DeleteObjectRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/DeleteObjectsRequest.php b/src/Input/DeleteObjectsRequest.php index da5de13..204cbf6 100644 --- a/src/Input/DeleteObjectsRequest.php +++ b/src/Input/DeleteObjectsRequest.php @@ -18,7 +18,7 @@ final class DeleteObjectsRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/GetObjectRequest.php b/src/Input/GetObjectRequest.php index 001a0e9..2b30fa9 100644 --- a/src/Input/GetObjectRequest.php +++ b/src/Input/GetObjectRequest.php @@ -17,7 +17,7 @@ final class GetObjectRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/HeadBucketRequest.php b/src/Input/HeadBucketRequest.php index 0dfc5fd..e98f48f 100644 --- a/src/Input/HeadBucketRequest.php +++ b/src/Input/HeadBucketRequest.php @@ -15,7 +15,7 @@ final class HeadBucketRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/HeadObjectRequest.php b/src/Input/HeadObjectRequest.php index 86d3546..0470e45 100644 --- a/src/Input/HeadObjectRequest.php +++ b/src/Input/HeadObjectRequest.php @@ -17,7 +17,7 @@ final class HeadObjectRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/ListMultipartUploadsRequest.php b/src/Input/ListMultipartUploadsRequest.php index 95a6e81..1abd682 100644 --- a/src/Input/ListMultipartUploadsRequest.php +++ b/src/Input/ListMultipartUploadsRequest.php @@ -17,7 +17,7 @@ final class ListMultipartUploadsRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/ListObjectsV2Request.php b/src/Input/ListObjectsV2Request.php index d68b909..72f1552 100644 --- a/src/Input/ListObjectsV2Request.php +++ b/src/Input/ListObjectsV2Request.php @@ -16,7 +16,7 @@ final class ListObjectsV2Request extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in @@ -61,7 +61,9 @@ final class ListObjectsV2Request extends Input private $delimiter; /** - * Encoding type used by Amazon S3 to encode object keys in the response. + * Encoding type used by Amazon S3 to encode object keys in the response. If using `url`, non-ASCII characters used in + * an object's key name will be URL encoded. For example, the object test_file(3).png will appear as + * test_file%283%29.png. * * @var EncodingType::*|null */ diff --git a/src/Input/ListPartsRequest.php b/src/Input/ListPartsRequest.php index b67db40..582c684 100644 --- a/src/Input/ListPartsRequest.php +++ b/src/Input/ListPartsRequest.php @@ -16,7 +16,7 @@ final class ListPartsRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/PutObjectRequest.php b/src/Input/PutObjectRequest.php index 9fe858e..dee17b7 100644 --- a/src/Input/PutObjectRequest.php +++ b/src/Input/PutObjectRequest.php @@ -58,7 +58,7 @@ final class PutObjectRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/UploadPartCopyRequest.php b/src/Input/UploadPartCopyRequest.php index b918d03..403c831 100644 --- a/src/Input/UploadPartCopyRequest.php +++ b/src/Input/UploadPartCopyRequest.php @@ -16,7 +16,7 @@ final class UploadPartCopyRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Input/UploadPartRequest.php b/src/Input/UploadPartRequest.php index b9a033a..ce28484 100644 --- a/src/Input/UploadPartRequest.php +++ b/src/Input/UploadPartRequest.php @@ -24,7 +24,7 @@ final class UploadPartRequest extends Input * **Directory buckets** - When you use this operation with a directory bucket, you must use virtual-hosted-style * requests in the format `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. Path-style requests are not * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must follow the format - * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az2*--x-s3`). For information about + * `*bucket_base_name*--*az-id*--x-s3` (for example, `*DOC-EXAMPLE-BUCKET*--*usw2-az1*--x-s3`). For information about * bucket naming restrictions, see Directory bucket naming rules [^1] in the *Amazon S3 User Guide*. * * **Access points** - When you use this action with an access point, you must provide the alias of the access point in diff --git a/src/Result/ListMultipartUploadsOutput.php b/src/Result/ListMultipartUploadsOutput.php index ff4486a..896e8c2 100644 --- a/src/Result/ListMultipartUploadsOutput.php +++ b/src/Result/ListMultipartUploadsOutput.php @@ -35,7 +35,10 @@ class ListMultipartUploadsOutput extends Result implements \IteratorAggregate private $keyMarker; /** - * Upload ID after which listing began. + * Together with key-marker, specifies the multipart upload after which listing should begin. If key-marker is not + * specified, the upload-id-marker parameter is ignored. Otherwise, any multipart uploads for a key equal to the + * key-marker might be included in the list only if they have an upload ID lexicographically greater than the specified + * `upload-id-marker`. * * > This functionality is not supported for directory buckets. * diff --git a/src/Result/ListPartsOutput.php b/src/Result/ListPartsOutput.php index 1a36920..e01af9f 100644 --- a/src/Result/ListPartsOutput.php +++ b/src/Result/ListPartsOutput.php @@ -69,8 +69,7 @@ class ListPartsOutput extends Result implements \IteratorAggregate private $uploadId; /** - * When a list is truncated, this element specifies the last part in the list, as well as the value to use for the - * part-number-marker request parameter in a subsequent request. + * Specifies the part after which listing should begin. Only parts with higher part numbers will be listed. * * @var int|null */ diff --git a/src/S3Client.php b/src/S3Client.php index 3887610..7660668 100644 --- a/src/S3Client.php +++ b/src/S3Client.php @@ -234,8 +234,8 @@ public function bucketNotExists($input): BucketNotExistsWaiter * handling per your configuration settings (including automatically retrying the request as appropriate). If the * condition persists, the SDKs throw an exception (or, for the SDKs that don't use exceptions, they return an error). * - * Note that if `CompleteMultipartUpload` fails, applications should be prepared to retry the failed requests. For more - * information, see Amazon S3 Error Best Practices [^3]. + * Note that if `CompleteMultipartUpload` fails, applications should be prepared to retry any failed requests (including + * 500 error responses). For more information, see Amazon S3 Error Best Practices [^3]. * * ! You can't use `Content-Type: application/x-www-form-urlencoded` for the CompleteMultipartUpload requests. Also, if * ! you don't provide a `Content-Type` header, `CompleteMultipartUpload` can still return a `200 OK` response. @@ -360,17 +360,18 @@ public function completeMultipartUpload($input): CompleteMultipartUploadOutput * > For more information, see Regional and Zonal endpoints [^2] in the *Amazon S3 User Guide*. * * Both the Region that you want to copy the object from and the Region that you want to copy the object to must be - * enabled for your account. + * enabled for your account. For more information about how to enable a Region for your account, see Enable or disable a + * Region for standalone accounts [^3] in the *Amazon Web Services Account Management Guide*. * * ! Amazon S3 transfer acceleration does not support cross-Region copies. If you request a cross-Region copy using a * ! transfer acceleration endpoint, you get a `400 Bad Request` error. For more information, see Transfer Acceleration - * ! [^3]. + * ! [^4]. * * - `Authentication and authorization`: * * All `CopyObject` requests must be authenticated and signed by using IAM credentials (access key ID and secret * access key for the IAM identities). All headers with the `x-amz-` prefix, including `x-amz-copy-source`, must be - * signed. For more information, see REST Authentication [^4]. + * signed. For more information, see REST Authentication [^5]. * * **Directory buckets** - You must use the IAM credentials to authenticate and authorize your access to the * `CopyObject` API operation, instead of using the temporary security credentials through the `CreateSession` API @@ -386,7 +387,7 @@ public function completeMultipartUpload($input): CompleteMultipartUploadOutput * * - If the source object is in a general purpose bucket, you must have **`s3:GetObject`** permission to read the * source object that is being copied. - * - If the destination bucket is a general purpose bucket, you must have **`s3:PubObject`** permission to write the + * - If the destination bucket is a general purpose bucket, you must have **`s3:PutObject`** permission to write the * object copy to the destination bucket. * * - **Directory bucket permissions** - You must have permissions in a bucket policy or an IAM identity-based policy @@ -400,8 +401,8 @@ public function completeMultipartUpload($input): CompleteMultipartUploadOutput * the `Action` element of a policy to write the object to the destination. The `s3express:SessionMode` condition * key can't be set to `ReadOnly` on the copy destination bucket. * - * For example policies, see Example bucket policies for S3 Express One Zone [^5] and Amazon Web Services Identity - * and Access Management (IAM) identity-based policies for S3 Express One Zone [^6] in the *Amazon S3 User Guide*. + * For example policies, see Example bucket policies for S3 Express One Zone [^6] and Amazon Web Services Identity + * and Access Management (IAM) identity-based policies for S3 Express One Zone [^7] in the *Amazon S3 User Guide*. * * - `Response and special errors`: * @@ -416,7 +417,7 @@ public function completeMultipartUpload($input): CompleteMultipartUploadOutput * - If the error occurs before the copy action starts, you receive a standard Amazon S3 error. * - If the error occurs during the copy operation, the error response is embedded in the `200 OK` response. For * example, in a cross-region copy, you may encounter throttling and receive a `200 OK` response. For more - * information, see Resolve the Error 200 response when copying objects to Amazon S3 [^7]. The `200 OK` status + * information, see Resolve the Error 200 response when copying objects to Amazon S3 [^8]. The `200 OK` status * code means the copy was accepted, but it doesn't mean the copy is complete. Another example is when you * disconnect from Amazon S3 before the copy is complete, Amazon S3 might cancel the copy and you may receive a * `200 OK` response. You must stay connected to Amazon S3 until the entire response is successfully received and @@ -433,26 +434,28 @@ public function completeMultipartUpload($input): CompleteMultipartUploadOutput * * The copy request charge is based on the storage class and Region that you specify for the destination object. The * request can also result in a data retrieval charge for the source if the source storage class bills for data - * retrieval. For pricing information, see Amazon S3 pricing [^8]. + * retrieval. If the copy source is in a different region, the data transfer is billed to the copy source account. For + * pricing information, see Amazon S3 pricing [^9]. * - `HTTP Host header syntax`: * * **Directory buckets ** - The HTTP Host header syntax is `*Bucket_name*.s3express-*az_id*.*region*.amazonaws.com`. * * The following operations are related to `CopyObject`: * - * - PutObject [^9] - * - GetObject [^10] + * - PutObject [^10] + * - GetObject [^11] * * [^1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html * [^2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html - * [^3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html - * [^4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html - * [^5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html - * [^6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html - * [^7]: repost.aws/knowledge-center/s3-resolve-200-internalerror - * [^8]: http://aws.amazon.com/s3/pricing/ - * [^9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html - * [^10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html + * [^3]: https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html#manage-acct-regions-enable-standalone + * [^4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html + * [^5]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html + * [^6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html + * [^7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html + * [^8]: https://repost.aws/knowledge-center/s3-resolve-200-internalerror + * [^9]: http://aws.amazon.com/s3/pricing/ + * [^10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html + * [^11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html * * @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html * @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html @@ -552,30 +555,36 @@ public function copyObject($input): CopyObjectOutput * - **S3 Object Ownership** - If your `CreateBucket` request includes the `x-amz-object-ownership` header, then the * `s3:PutBucketOwnershipControls` permission is required. * - * ! If your `CreateBucket` request sets `BucketOwnerEnforced` for Amazon S3 Object Ownership and specifies a - * ! bucket ACL that provides access to an external Amazon Web Services account, your request fails with a `400` - * ! error and returns the `InvalidBucketAcLWithObjectOwnership` error code. For more information, see Setting - * ! Object Ownership on an existing bucket [^5] in the *Amazon S3 User Guide*. + * ! To set an ACL on a bucket as part of a `CreateBucket` request, you must explicitly set S3 Object Ownership + * ! for the bucket to a different value than the default, `BucketOwnerEnforced`. Additionally, if your desired + * ! bucket ACL grants public access, you must first create the bucket (without the bucket ACL) and then + * ! explicitly disable Block Public Access on the bucket before using `PutBucketAcl` to set the ACL. If you try + * ! to create a bucket with a public ACL, the request will fail. + * ! + * ! For the majority of modern use cases in S3, we recommend that you keep all Block Public Access settings + * ! enabled and keep ACLs disabled. If you would like to share data with users outside of your account, you can + * ! use bucket policies as needed. For more information, see Controlling ownership of objects and disabling ACLs + * ! for your bucket [^5] and Blocking public access to your Amazon S3 storage [^6] in the *Amazon S3 User Guide*. * * - **S3 Block Public Access** - If your specific use case requires granting public access to your S3 resources, * you can disable Block Public Access. Specifically, you can create a new bucket with Block Public Access - * enabled, then separately call the `DeletePublicAccessBlock` [^6] API. To use this operation, you must have the + * enabled, then separately call the `DeletePublicAccessBlock` [^7] API. To use this operation, you must have the * `s3:PutBucketPublicAccessBlock` permission. For more information about S3 Block Public Access, see Blocking - * public access to your Amazon S3 storage [^7] in the *Amazon S3 User Guide*. + * public access to your Amazon S3 storage [^8] in the *Amazon S3 User Guide*. * * - **Directory bucket permissions** - You must have the `s3express:CreateBucket` 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 [^8] in the *Amazon S3 User Guide*. + * Zone [^9] in the *Amazon S3 User Guide*. * * ! The permissions for ACLs, Object Lock, S3 Object Ownership, and S3 Block Public Access are not supported for * ! directory buckets. For directory buckets, all Block Public Access settings are enabled at the bucket level and * ! S3 Object Ownership is set to Bucket owner enforced (ACLs disabled). These settings can't be modified. * ! * ! For more information about permissions for creating and working with directory buckets, see Directory buckets - * ! [^9] in the *Amazon S3 User Guide*. For more information about supported S3 features for directory buckets, see - * ! Features of S3 Express One Zone [^10] in the *Amazon S3 User Guide*. + * ! [^10] in the *Amazon S3 User Guide*. For more information about supported S3 features for directory buckets, + * ! see Features of S3 Express One Zone [^11] in the *Amazon S3 User Guide*. * * * - `HTTP Host header syntax`: @@ -584,21 +593,22 @@ public function copyObject($input): CopyObjectOutput * * The following operations are related to `CreateBucket`: * - * - PutObject [^11] - * - DeleteBucket [^12] + * - PutObject [^12] + * - DeleteBucket [^13] * * [^1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html * [^2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html * [^3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html * [^4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html - * [^5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-existing-bucket.html - * [^6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html - * [^7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html - * [^8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html - * [^9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-overview.html - * [^10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html#s3-express-features - * [^11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html - * [^12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html + * [^5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html + * [^6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html + * [^7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html + * [^8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html + * [^9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html + * [^10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-overview.html + * [^11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html#s3-express-features + * [^12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html + * [^13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html * * @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUT.html * @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html @@ -914,10 +924,17 @@ public function deleteBucketCors($input): Result /** * Removes an object from a bucket. The behavior depends on the bucket's versioning state:. * - * - If versioning is enabled, the operation removes the null version (if there is one) of an object and inserts a - * delete marker, which becomes the latest version of the object. If there isn't a null version, Amazon S3 does not - * remove any objects but will still respond that the command was successful. - * - If versioning is suspended or not enabled, the operation permanently deletes the object. + * - If bucket versioning is not enabled, the operation permanently deletes the object. + * - 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 [^1]. + * - 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 [^2]. * * > - **Directory buckets** - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, * > only the `null` value of the version ID is supported by directory buckets. You can only specify `null` to the @@ -925,7 +942,7 @@ public function deleteBucketCors($input): Result * > - **Directory buckets** - For directory buckets, you must make requests for this API operation to the Zonal * > endpoint. These endpoints support virtual-hosted-style requests in the format * > `https://*bucket_name*.s3express-*az_id*.*region*.amazonaws.com/*key-name*`. Path-style requests are not - * > supported. For more information, see Regional and Zonal endpoints [^1] in the *Amazon S3 User Guide*. + * > supported. For more information, see Regional and Zonal endpoints [^3] in the *Amazon S3 User Guide*. * > * * To remove a specific version, you must use the `versionId` query parameter. Using this query parameter permanently @@ -934,12 +951,12 @@ public function deleteBucketCors($input): Result * * 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 [^2] in the *Amazon S3 User Guide*. To see - * sample requests that use versioning, see Sample Request [^3]. + * use HTTPS. For more information about MFA Delete, see Using MFA Delete [^4] in the *Amazon S3 User Guide*. To see + * sample requests that use versioning, see Sample Request [^5]. * * > **Directory buckets** - MFA delete is not supported by directory buckets. * - * You can delete objects by explicitly calling DELETE Object or calling (PutBucketLifecycle [^4]) to enable Amazon S3 + * You can delete objects by explicitly calling DELETE Object or calling (PutBucketLifecycle [^6]) 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. * @@ -952,17 +969,17 @@ public function deleteBucketCors($input): Result * * - **`s3:DeleteObject`** - To delete an object from a bucket, you must always have the `s3:DeleteObject` * permission. - * - **`s3:DeleteObjectVersion`** - To delete a specific version of an object from a versiong-enabled bucket, you + * - **`s3:DeleteObjectVersion`** - To delete a specific version of an object from a versioning-enabled bucket, you * must have the `s3:DeleteObjectVersion` permission. * * - **Directory bucket permissions** - To grant access to this API operation on a directory bucket, we recommend that - * you use the `CreateSession` [^5] API operation for session-based authorization. Specifically, you grant the + * you use the `CreateSession` [^7] 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` [^6]. + * more information about authorization, see `CreateSession` [^8]. * * - `HTTP Host header syntax`: * @@ -970,15 +987,17 @@ public function deleteBucketCors($input): Result * * The following action is related to `DeleteObject`: * - * - PutObject [^7] + * - PutObject [^9] * - * [^1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html - * [^2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html - * [^3]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete - * [^4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html - * [^5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html - * [^6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html - * [^7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html + * [^1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html + * [^2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectsfromVersioningSuspendedBuckets.html + * [^3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html + * [^4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html + * [^5]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete + * [^6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html + * [^7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html + * [^8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html + * [^9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html * * @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectDELETE.html * @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html @@ -2780,7 +2799,7 @@ public function uploadPart($input): UploadPartOutput * * - If the source object is in a general purpose bucket, you must have the **`s3:GetObject`** permission to read * the source object that is being copied. - * - If the destination bucket is a general purpose bucket, you must have the **`s3:PubObject`** permission to write + * - If the destination bucket is a general purpose bucket, you must have the **`s3:PutObject`** permission to write * the object copy to the destination bucket. * * For information about permissions required to use the multipart upload API, see Multipart Upload and Permissions diff --git a/src/ValueObject/FilterRule.php b/src/ValueObject/FilterRule.php index 384862e..dc17a79 100644 --- a/src/ValueObject/FilterRule.php +++ b/src/ValueObject/FilterRule.php @@ -6,7 +6,12 @@ use AsyncAws\S3\Enum\FilterRuleName; /** - * Specifies the Amazon S3 object key name to filter on and whether to filter on the suffix or prefix of the key name. + * Specifies the Amazon S3 object key name to filter on. An object key name is the name assigned to an object in your + * Amazon S3 bucket. You specify whether to filter on the suffix or prefix of the object key name. A prefix is a + * specific string of characters at the beginning of an object key name, which you can use to organize objects. For + * example, you can start the key names of related objects with a prefix, such as `2023-` or `engineering/`. Then, you + * can use `FilterRule` to find objects in a bucket with key names that have the same prefix. A suffix is similar to a + * prefix, but it is at the end of the object key name instead of at the beginning. */ final class FilterRule { diff --git a/src/ValueObject/LocationInfo.php b/src/ValueObject/LocationInfo.php index a0f3f00..50fb25b 100644 --- a/src/ValueObject/LocationInfo.php +++ b/src/ValueObject/LocationInfo.php @@ -27,8 +27,8 @@ final class LocationInfo /** * The name of the location where the bucket will be created. * - * For directory buckets, the AZ ID of the Availability Zone where the bucket will be created. An example AZ ID value is - * `usw2-az2`. + * For directory buckets, the name of the location is the AZ ID of the Availability Zone where the bucket will be + * created. An example AZ ID value is `usw2-az1`. * * @var string|null */ diff --git a/src/ValueObject/ServerSideEncryptionByDefault.php b/src/ValueObject/ServerSideEncryptionByDefault.php index 498df68..daaad99 100644 --- a/src/ValueObject/ServerSideEncryptionByDefault.php +++ b/src/ValueObject/ServerSideEncryptionByDefault.php @@ -25,7 +25,7 @@ final class ServerSideEncryptionByDefault /** * Amazon Web Services Key Management Service (KMS) customer Amazon Web Services KMS key ID to use for the default - * encryption. This parameter is allowed if and only if `SSEAlgorithm` is set to `aws:kms`. + * encryption. This parameter is allowed if and only if `SSEAlgorithm` is set to `aws:kms` or `aws:kms:dsse`. * * You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key. *