@aws-sdk/client-s3 3.41.0 → 3.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist-cjs/endpoints.js +29 -0
  3. package/dist-cjs/models/models_0.js +18 -10
  4. package/dist-cjs/models/models_1.js +7 -1
  5. package/dist-cjs/protocols/Aws_restXml.js +82 -0
  6. package/dist-es/endpoints.js +29 -0
  7. package/dist-es/models/models_0.js +12 -4
  8. package/dist-es/models/models_1.js +4 -0
  9. package/dist-es/protocols/Aws_restXml.js +83 -3
  10. package/dist-types/S3.d.ts +124 -38
  11. package/dist-types/commands/CompleteMultipartUploadCommand.d.ts +4 -0
  12. package/dist-types/commands/CopyObjectCommand.d.ts +11 -1
  13. package/dist-types/commands/CreateBucketCommand.d.ts +39 -11
  14. package/dist-types/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts +2 -2
  15. package/dist-types/commands/GetBucketAclCommand.d.ts +7 -0
  16. package/dist-types/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts +2 -2
  17. package/dist-types/commands/GetBucketOwnershipControlsCommand.d.ts +3 -3
  18. package/dist-types/commands/GetObjectAclCommand.d.ts +7 -1
  19. package/dist-types/commands/GetObjectCommand.d.ts +7 -4
  20. package/dist-types/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts +2 -2
  21. package/dist-types/commands/PutBucketAclCommand.d.ts +7 -1
  22. package/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts +2 -2
  23. package/dist-types/commands/PutBucketLoggingCommand.d.ts +8 -3
  24. package/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts +2 -2
  25. package/dist-types/commands/PutObjectAclCommand.d.ts +7 -2
  26. package/dist-types/commands/PutObjectCommand.d.ts +14 -2
  27. package/dist-types/models/models_0.d.ts +110 -25
  28. package/dist-types/models/models_1.d.ts +16 -1
  29. package/dist-types/ts3.4/models/models_0.d.ts +55 -15
  30. package/dist-types/ts3.4/models/models_1.d.ts +10 -1
  31. package/package.json +7 -7
@@ -208,9 +208,9 @@ export var serializeAws_restXmlCreateBucketCommand = function (input, context) {
208
208
  case 0: return [4, context.endpoint()];
209
209
  case 1:
210
210
  _a = _c.sent(), hostname = _a.hostname, _b = _a.protocol, protocol = _b === void 0 ? "https" : _b, port = _a.port, basePath = _a.path;
211
- headers = __assign(__assign(__assign(__assign(__assign(__assign(__assign({ "content-type": "application/xml" }, (isSerializableHeaderValue(input.ACL) && { "x-amz-acl": input.ACL })), (isSerializableHeaderValue(input.GrantFullControl) && { "x-amz-grant-full-control": input.GrantFullControl })), (isSerializableHeaderValue(input.GrantRead) && { "x-amz-grant-read": input.GrantRead })), (isSerializableHeaderValue(input.GrantReadACP) && { "x-amz-grant-read-acp": input.GrantReadACP })), (isSerializableHeaderValue(input.GrantWrite) && { "x-amz-grant-write": input.GrantWrite })), (isSerializableHeaderValue(input.GrantWriteACP) && { "x-amz-grant-write-acp": input.GrantWriteACP })), (isSerializableHeaderValue(input.ObjectLockEnabledForBucket) && {
211
+ headers = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ "content-type": "application/xml" }, (isSerializableHeaderValue(input.ACL) && { "x-amz-acl": input.ACL })), (isSerializableHeaderValue(input.GrantFullControl) && { "x-amz-grant-full-control": input.GrantFullControl })), (isSerializableHeaderValue(input.GrantRead) && { "x-amz-grant-read": input.GrantRead })), (isSerializableHeaderValue(input.GrantReadACP) && { "x-amz-grant-read-acp": input.GrantReadACP })), (isSerializableHeaderValue(input.GrantWrite) && { "x-amz-grant-write": input.GrantWrite })), (isSerializableHeaderValue(input.GrantWriteACP) && { "x-amz-grant-write-acp": input.GrantWriteACP })), (isSerializableHeaderValue(input.ObjectLockEnabledForBucket) && {
212
212
  "x-amz-bucket-object-lock-enabled": input.ObjectLockEnabledForBucket.toString(),
213
- }));
213
+ })), (isSerializableHeaderValue(input.ObjectOwnership) && { "x-amz-object-ownership": input.ObjectOwnership }));
214
214
  resolvedPath = "" + ((basePath === null || basePath === void 0 ? void 0 : basePath.endsWith("/")) ? basePath.slice(0, -1) : basePath || "") + "/{Bucket}";
215
215
  if (input.Bucket !== undefined) {
216
216
  labelValue = input.Bucket;
@@ -2978,8 +2978,10 @@ export var serializeAws_restXmlPutBucketNotificationConfigurationCommand = funct
2978
2978
  case 0: return [4, context.endpoint()];
2979
2979
  case 1:
2980
2980
  _a = _c.sent(), hostname = _a.hostname, _b = _a.protocol, protocol = _b === void 0 ? "https" : _b, port = _a.port, basePath = _a.path;
2981
- headers = __assign({ "content-type": "application/xml" }, (isSerializableHeaderValue(input.ExpectedBucketOwner) && {
2981
+ headers = __assign(__assign({ "content-type": "application/xml" }, (isSerializableHeaderValue(input.ExpectedBucketOwner) && {
2982
2982
  "x-amz-expected-bucket-owner": input.ExpectedBucketOwner,
2983
+ })), (isSerializableHeaderValue(input.SkipDestinationValidation) && {
2984
+ "x-amz-skip-destination-validation": input.SkipDestinationValidation.toString(),
2983
2985
  }));
2984
2986
  resolvedPath = "" + ((basePath === null || basePath === void 0 ? void 0 : basePath.endsWith("/")) ? basePath.slice(0, -1) : basePath || "") + "/{Bucket}";
2985
2987
  if (input.Bucket !== undefined) {
@@ -5858,6 +5860,7 @@ export var deserializeAws_restXmlGetBucketNotificationConfigurationCommand = fun
5858
5860
  }
5859
5861
  contents = {
5860
5862
  $metadata: deserializeMetadata(output),
5863
+ EventBridgeConfiguration: undefined,
5861
5864
  LambdaFunctionConfigurations: undefined,
5862
5865
  QueueConfigurations: undefined,
5863
5866
  TopicConfigurations: undefined,
@@ -5867,6 +5870,9 @@ export var deserializeAws_restXmlGetBucketNotificationConfigurationCommand = fun
5867
5870
  return [4, parseBody(output.body, context)];
5868
5871
  case 1:
5869
5872
  data = _a.apply(void 0, [_b.apply(void 0, [_c.sent()]), "body"]);
5873
+ if (data["EventBridgeConfiguration"] !== undefined) {
5874
+ contents.EventBridgeConfiguration = deserializeAws_restXmlEventBridgeConfiguration(data["EventBridgeConfiguration"], context);
5875
+ }
5870
5876
  if (data.CloudFunctionConfiguration === "") {
5871
5877
  contents.LambdaFunctionConfigurations = [];
5872
5878
  }
@@ -10145,6 +10151,10 @@ var serializeAws_restXmlErrorDocument = function (input, context) {
10145
10151
  }
10146
10152
  return bodyNode;
10147
10153
  };
10154
+ var serializeAws_restXmlEventBridgeConfiguration = function (input, context) {
10155
+ var bodyNode = new __XmlNode("EventBridgeConfiguration");
10156
+ return bodyNode;
10157
+ };
10148
10158
  var serializeAws_restXmlEventList = function (input, context) {
10149
10159
  return input
10150
10160
  .filter(function (e) { return e != null; })
@@ -10581,6 +10591,18 @@ var serializeAws_restXmlLifecycleRuleAndOperator = function (input, context) {
10581
10591
  bodyNode.addChildNode(node);
10582
10592
  });
10583
10593
  }
10594
+ if (input.ObjectSizeGreaterThan !== undefined && input.ObjectSizeGreaterThan !== null) {
10595
+ var node = new __XmlNode("ObjectSizeGreaterThanBytes")
10596
+ .addChildNode(new __XmlText(String(input.ObjectSizeGreaterThan)))
10597
+ .withName("ObjectSizeGreaterThan");
10598
+ bodyNode.addChildNode(node);
10599
+ }
10600
+ if (input.ObjectSizeLessThan !== undefined && input.ObjectSizeLessThan !== null) {
10601
+ var node = new __XmlNode("ObjectSizeLessThanBytes")
10602
+ .addChildNode(new __XmlText(String(input.ObjectSizeLessThan)))
10603
+ .withName("ObjectSizeLessThan");
10604
+ bodyNode.addChildNode(node);
10605
+ }
10584
10606
  return bodyNode;
10585
10607
  };
10586
10608
  var serializeAws_restXmlLifecycleRuleFilter = function (input, context) {
@@ -10594,6 +10616,18 @@ var serializeAws_restXmlLifecycleRuleFilter = function (input, context) {
10594
10616
  var node = serializeAws_restXmlTag(value, context).withName("Tag");
10595
10617
  bodyNode.addChildNode(node);
10596
10618
  },
10619
+ ObjectSizeGreaterThan: function (value) {
10620
+ var node = new __XmlNode("ObjectSizeGreaterThanBytes")
10621
+ .addChildNode(new __XmlText(String(value)))
10622
+ .withName("ObjectSizeGreaterThan");
10623
+ bodyNode.addChildNode(node);
10624
+ },
10625
+ ObjectSizeLessThan: function (value) {
10626
+ var node = new __XmlNode("ObjectSizeLessThanBytes")
10627
+ .addChildNode(new __XmlText(String(value)))
10628
+ .withName("ObjectSizeLessThan");
10629
+ bodyNode.addChildNode(node);
10630
+ },
10597
10631
  And: function (value) {
10598
10632
  var node = serializeAws_restXmlLifecycleRuleAndOperator(value, context).withName("And");
10599
10633
  bodyNode.addChildNode(node);
@@ -10731,6 +10765,12 @@ var serializeAws_restXmlNoncurrentVersionExpiration = function (input, context)
10731
10765
  .withName("NoncurrentDays");
10732
10766
  bodyNode.addChildNode(node);
10733
10767
  }
10768
+ if (input.NewerNoncurrentVersions !== undefined && input.NewerNoncurrentVersions !== null) {
10769
+ var node = new __XmlNode("VersionCount")
10770
+ .addChildNode(new __XmlText(String(input.NewerNoncurrentVersions)))
10771
+ .withName("NewerNoncurrentVersions");
10772
+ bodyNode.addChildNode(node);
10773
+ }
10734
10774
  return bodyNode;
10735
10775
  };
10736
10776
  var serializeAws_restXmlNoncurrentVersionTransition = function (input, context) {
@@ -10747,6 +10787,12 @@ var serializeAws_restXmlNoncurrentVersionTransition = function (input, context)
10747
10787
  .withName("StorageClass");
10748
10788
  bodyNode.addChildNode(node);
10749
10789
  }
10790
+ if (input.NewerNoncurrentVersions !== undefined && input.NewerNoncurrentVersions !== null) {
10791
+ var node = new __XmlNode("VersionCount")
10792
+ .addChildNode(new __XmlText(String(input.NewerNoncurrentVersions)))
10793
+ .withName("NewerNoncurrentVersions");
10794
+ bodyNode.addChildNode(node);
10795
+ }
10750
10796
  return bodyNode;
10751
10797
  };
10752
10798
  var serializeAws_restXmlNoncurrentVersionTransitionList = function (input, context) {
@@ -10783,6 +10829,10 @@ var serializeAws_restXmlNotificationConfiguration = function (input, context) {
10783
10829
  bodyNode.addChildNode(node);
10784
10830
  });
10785
10831
  }
10832
+ if (input.EventBridgeConfiguration !== undefined && input.EventBridgeConfiguration !== null) {
10833
+ var node = serializeAws_restXmlEventBridgeConfiguration(input.EventBridgeConfiguration, context).withName("EventBridgeConfiguration");
10834
+ bodyNode.addChildNode(node);
10835
+ }
10786
10836
  return bodyNode;
10787
10837
  };
10788
10838
  var serializeAws_restXmlNotificationConfigurationFilter = function (input, context) {
@@ -12092,6 +12142,10 @@ var deserializeAws_restXmlErrors = function (output, context) {
12092
12142
  return deserializeAws_restXml_Error(entry, context);
12093
12143
  });
12094
12144
  };
12145
+ var deserializeAws_restXmlEventBridgeConfiguration = function (output, context) {
12146
+ var contents = {};
12147
+ return contents;
12148
+ };
12095
12149
  var deserializeAws_restXmlEventList = function (output, context) {
12096
12150
  return (output || [])
12097
12151
  .filter(function (e) { return e != null; })
@@ -12504,6 +12558,8 @@ var deserializeAws_restXmlLifecycleRuleAndOperator = function (output, context)
12504
12558
  var contents = {
12505
12559
  Prefix: undefined,
12506
12560
  Tags: undefined,
12561
+ ObjectSizeGreaterThan: undefined,
12562
+ ObjectSizeLessThan: undefined,
12507
12563
  };
12508
12564
  if (output["Prefix"] !== undefined) {
12509
12565
  contents.Prefix = __expectString(output["Prefix"]);
@@ -12514,6 +12570,12 @@ var deserializeAws_restXmlLifecycleRuleAndOperator = function (output, context)
12514
12570
  if (output["Tag"] !== undefined) {
12515
12571
  contents.Tags = deserializeAws_restXmlTagSet(__getArrayIfSingleItem(output["Tag"]), context);
12516
12572
  }
12573
+ if (output["ObjectSizeGreaterThan"] !== undefined) {
12574
+ contents.ObjectSizeGreaterThan = __strictParseLong(output["ObjectSizeGreaterThan"]);
12575
+ }
12576
+ if (output["ObjectSizeLessThan"] !== undefined) {
12577
+ contents.ObjectSizeLessThan = __strictParseLong(output["ObjectSizeLessThan"]);
12578
+ }
12517
12579
  return contents;
12518
12580
  };
12519
12581
  var deserializeAws_restXmlLifecycleRuleFilter = function (output, context) {
@@ -12527,6 +12589,16 @@ var deserializeAws_restXmlLifecycleRuleFilter = function (output, context) {
12527
12589
  Tag: deserializeAws_restXmlTag(output["Tag"], context),
12528
12590
  };
12529
12591
  }
12592
+ if (output["ObjectSizeGreaterThan"] !== undefined) {
12593
+ return {
12594
+ ObjectSizeGreaterThan: __strictParseLong(output["ObjectSizeGreaterThan"]),
12595
+ };
12596
+ }
12597
+ if (output["ObjectSizeLessThan"] !== undefined) {
12598
+ return {
12599
+ ObjectSizeLessThan: __strictParseLong(output["ObjectSizeLessThan"]),
12600
+ };
12601
+ }
12530
12602
  if (output["And"] !== undefined) {
12531
12603
  return {
12532
12604
  And: deserializeAws_restXmlLifecycleRuleAndOperator(output["And"], context),
@@ -12685,16 +12757,21 @@ var deserializeAws_restXmlMultipartUploadList = function (output, context) {
12685
12757
  var deserializeAws_restXmlNoncurrentVersionExpiration = function (output, context) {
12686
12758
  var contents = {
12687
12759
  NoncurrentDays: undefined,
12760
+ NewerNoncurrentVersions: undefined,
12688
12761
  };
12689
12762
  if (output["NoncurrentDays"] !== undefined) {
12690
12763
  contents.NoncurrentDays = __strictParseInt32(output["NoncurrentDays"]);
12691
12764
  }
12765
+ if (output["NewerNoncurrentVersions"] !== undefined) {
12766
+ contents.NewerNoncurrentVersions = __strictParseInt32(output["NewerNoncurrentVersions"]);
12767
+ }
12692
12768
  return contents;
12693
12769
  };
12694
12770
  var deserializeAws_restXmlNoncurrentVersionTransition = function (output, context) {
12695
12771
  var contents = {
12696
12772
  NoncurrentDays: undefined,
12697
12773
  StorageClass: undefined,
12774
+ NewerNoncurrentVersions: undefined,
12698
12775
  };
12699
12776
  if (output["NoncurrentDays"] !== undefined) {
12700
12777
  contents.NoncurrentDays = __strictParseInt32(output["NoncurrentDays"]);
@@ -12702,6 +12779,9 @@ var deserializeAws_restXmlNoncurrentVersionTransition = function (output, contex
12702
12779
  if (output["StorageClass"] !== undefined) {
12703
12780
  contents.StorageClass = __expectString(output["StorageClass"]);
12704
12781
  }
12782
+ if (output["NewerNoncurrentVersions"] !== undefined) {
12783
+ contents.NewerNoncurrentVersions = __strictParseInt32(output["NewerNoncurrentVersions"]);
12784
+ }
12705
12785
  return contents;
12706
12786
  };
12707
12787
  var deserializeAws_restXmlNoncurrentVersionTransitionList = function (output, context) {
@@ -158,6 +158,10 @@ export declare class S3 extends S3Client {
158
158
  * to determine whether the request succeeded.</p>
159
159
  * <p>Note that if <code>CompleteMultipartUpload</code> fails, applications should be prepared
160
160
  * to retry the failed requests. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html">Amazon S3 Error Best Practices</a>.</p>
161
+ * <important>
162
+ * <p>You cannot use <code>Content-Type: application/x-www-form-urlencoded</code> with Complete
163
+ * Multipart Upload requests. Also, if you do not provide a <code>Content-Type</code> header, <code>CompleteMultipartUpload</code> returns a 200 OK response.</p>
164
+ * </important>
161
165
  * <p>For more information about multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading Objects Using Multipart
162
166
  * Upload</a>.</p>
163
167
  * <p>For information about permissions required to use the multipart upload API, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart Upload and
@@ -388,7 +392,17 @@ export declare class S3 extends S3Client {
388
392
  * defined by Amazon S3. These permissions are then added to the ACL on the object. For more
389
393
  * information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST
390
394
  * API</a>. </p>
391
- *
395
+ * <p>If the bucket that you're copying objects to uses the bucket owner enforced setting for
396
+ * S3 Object Ownership, ACLs are disabled and no longer affect permissions. Buckets that
397
+ * use this setting only accept PUT requests that don't specify an ACL or PUT requests that
398
+ * specify bucket owner full control ACLs, such as the <code>bucket-owner-full-control</code> canned
399
+ * ACL or an equivalent form of this ACL expressed in the XML format.</p>
400
+ * <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of
401
+ * objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p>
402
+ * <note>
403
+ * <p>If your bucket uses the bucket owner enforced setting for Object Ownership,
404
+ * all objects written to the bucket by any account will be owned by the bucket owner.</p>
405
+ * </note>
392
406
  * <p>
393
407
  * <b>Storage Class Options</b>
394
408
  * </p>
@@ -451,9 +465,20 @@ export declare class S3 extends S3Client {
451
465
  * bucket in a Region other than US East (N. Virginia), your application must be able to
452
466
  * handle 307 redirect. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html">Virtual hosting of buckets</a>.</p>
453
467
  * </note>
454
- * <p>When creating a bucket using this operation, you can optionally specify the accounts or
455
- * groups that should be granted specific permissions on the bucket. There are two ways to
456
- * grant the appropriate permissions using the request headers.</p>
468
+ * <p>
469
+ * <b>Access control lists (ACLs)</b>
470
+ * </p>
471
+ * <p>When creating a bucket using this operation, you can optionally configure the bucket ACL to specify the accounts or
472
+ * groups that should be granted specific permissions on the bucket.</p>
473
+ * <important>
474
+ * <p>If your CreateBucket request includes the <code>BucketOwnerEnforced</code> value for
475
+ * the <code>x-amz-object-ownership</code> header, your request can either not specify
476
+ * an ACL or specify bucket owner full control ACLs, such as the <code>bucket-owner-full-control</code>
477
+ * canned ACL or an equivalent ACL expressed in the XML format. For
478
+ * more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Controlling object
479
+ * ownership</a> in the <i>Amazon S3 User Guide</i>.</p>
480
+ * </important>
481
+ * <p>There are two ways to grant the appropriate permissions using the request headers.</p>
457
482
  * <ul>
458
483
  * <li>
459
484
  * <p>Specify a canned ACL using the <code>x-amz-acl</code> request header. Amazon S3
@@ -466,7 +491,7 @@ export declare class S3 extends S3Client {
466
491
  * <code>x-amz-grant-write</code>, <code>x-amz-grant-read-acp</code>,
467
492
  * <code>x-amz-grant-write-acp</code>, and <code>x-amz-grant-full-control</code>
468
493
  * headers. These headers map to the set of permissions Amazon S3 supports in an ACL. For
469
- * more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access control list
494
+ * more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html">Access control list
470
495
  * (ACL) overview</a>.</p>
471
496
  * <p>You specify each grantee as a type=value pair, where the type is one of the
472
497
  * following:</p>
@@ -530,13 +555,30 @@ export declare class S3 extends S3Client {
530
555
  * <p>
531
556
  * <b>Permissions</b>
532
557
  * </p>
533
- * <p>If your <code>CreateBucket</code> request specifies ACL permissions and the ACL is public-read, public-read-write,
534
- * authenticated-read, or if you specify access permissions explicitly through any other ACL, both
535
- * <code>s3:CreateBucket</code> and <code>s3:PutBucketAcl</code> permissions are needed. If the ACL the
536
- * <code>CreateBucket</code> request is private, only <code>s3:CreateBucket</code> permission is needed. </p>
537
- * <p>If <code>ObjectLockEnabledForBucket</code> is set to true in your <code>CreateBucket</code> request,
538
- * <code>s3:PutBucketObjectLockConfiguration</code> and <code>s3:PutBucketVersioning</code> permissions are required.</p>
539
- *
558
+ * <p>In addition to <code>s3:CreateBucket</code>, the following permissions are required when your CreateBucket includes specific headers:</p>
559
+ * <ul>
560
+ * <li>
561
+ * <p>
562
+ * <b>ACLs</b> - If your <code>CreateBucket</code> request specifies ACL permissions and the ACL is public-read, public-read-write,
563
+ * authenticated-read, or if you specify access permissions explicitly through any other ACL, both
564
+ * <code>s3:CreateBucket</code> and <code>s3:PutBucketAcl</code> permissions are needed. If the ACL the
565
+ * <code>CreateBucket</code> request is private or doesn't specify any ACLs, only <code>s3:CreateBucket</code> permission is needed. </p>
566
+ * </li>
567
+ * <li>
568
+ * <p>
569
+ * <b>Object Lock</b> - If
570
+ * <code>ObjectLockEnabledForBucket</code> is set to true in your
571
+ * <code>CreateBucket</code> request,
572
+ * <code>s3:PutBucketObjectLockConfiguration</code> and
573
+ * <code>s3:PutBucketVersioning</code> permissions are required.</p>
574
+ * </li>
575
+ * <li>
576
+ * <p>
577
+ * <b>S3 Object Ownership</b> - If your CreateBucket
578
+ * request includes the the <code>x-amz-object-ownership</code> header,
579
+ * <code>s3:PutBucketOwnershipControls</code> permission is required.</p>
580
+ * </li>
581
+ * </ul>
540
582
  * <p>The following operations are related to <code>CreateBucket</code>:</p>
541
583
  * <ul>
542
584
  * <li>
@@ -933,8 +975,8 @@ export declare class S3 extends S3Client {
933
975
  deleteBucketEncryption(args: DeleteBucketEncryptionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketEncryptionCommandOutput) => void): void;
934
976
  /**
935
977
  * <p>Deletes the S3 Intelligent-Tiering configuration from the specified bucket.</p>
936
- * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in two low latency and high throughput access tiers. For data that can be accessed asynchronously, you can choose to activate automatic archiving capabilities within the S3 Intelligent-Tiering storage class.</p>
937
- * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
978
+ * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.</p>
979
+ * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
938
980
  * <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage class for automatically optimizing frequently and infrequently accessed objects</a>.</p>
939
981
  * <p>Operations related to
940
982
  * <code>DeleteBucketIntelligentTieringConfiguration</code> include: </p>
@@ -1410,6 +1452,13 @@ export declare class S3 extends S3Client {
1410
1452
  * return the ACL of the bucket, you must have <code>READ_ACP</code> access to the bucket. If
1411
1453
  * <code>READ_ACP</code> permission is granted to the anonymous user, you can return the
1412
1454
  * ACL of the bucket without using an authorization header.</p>
1455
+ * <note>
1456
+ * <p>If your bucket uses the bucket owner enforced setting for S3 Object Ownership,
1457
+ * requests to read ACLs are still supported and return the <code>bucket-owner-full-control</code>
1458
+ * ACL with the owner being the account that created the bucket. For more information, see
1459
+ * <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">
1460
+ * Controlling object ownership and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p>
1461
+ * </note>
1413
1462
  *
1414
1463
  * <p class="title">
1415
1464
  * <b>Related Resources</b>
@@ -1515,8 +1564,8 @@ export declare class S3 extends S3Client {
1515
1564
  getBucketEncryption(args: GetBucketEncryptionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketEncryptionCommandOutput) => void): void;
1516
1565
  /**
1517
1566
  * <p>Gets the S3 Intelligent-Tiering configuration from the specified bucket.</p>
1518
- * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in two low latency and high throughput access tiers. For data that can be accessed asynchronously, you can choose to activate automatic archiving capabilities within the S3 Intelligent-Tiering storage class.</p>
1519
- * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
1567
+ * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.</p>
1568
+ * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
1520
1569
  * <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage class for automatically optimizing frequently and infrequently accessed objects</a>.</p>
1521
1570
  * <p>Operations related to
1522
1571
  * <code>GetBucketIntelligentTieringConfiguration</code> include: </p>
@@ -1755,9 +1804,9 @@ export declare class S3 extends S3Client {
1755
1804
  /**
1756
1805
  * <p>Retrieves <code>OwnershipControls</code> for an Amazon S3 bucket. To use this operation, you
1757
1806
  * must have the <code>s3:GetBucketOwnershipControls</code> permission. For more information
1758
- * about Amazon S3 permissions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying
1759
- * Permissions in a Policy</a>. </p>
1760
- * <p>For information about Amazon S3 Object Ownership, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html">Using Object Ownership</a>. </p>
1807
+ * about Amazon S3 permissions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html">Specifying
1808
+ * permissions in a policy</a>. </p>
1809
+ * <p>For information about Amazon S3 Object Ownership, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Using Object Ownership</a>. </p>
1761
1810
  * <p>The following operations are related to <code>GetBucketOwnershipControls</code>:</p>
1762
1811
  * <ul>
1763
1812
  * <li>
@@ -2077,13 +2126,16 @@ export declare class S3 extends S3Client {
2077
2126
  * <note>
2078
2127
  * <ul>
2079
2128
  * <li>
2080
- * <p>You need the <code>s3:GetObjectVersion</code> permission to access a specific version of an object.
2081
- * </p>
2129
+ * <p>
2130
+ * If you supply a <code>versionId</code>, you need the <code>s3:GetObjectVersion</code> permission to
2131
+ * access a specific version of an object. If you request a specific version, you do not need to have
2132
+ * the <code>s3:GetObject</code> permission.
2133
+ * </p>
2082
2134
  * </li>
2083
2135
  * <li>
2084
2136
  * <p>If the current version of the object is a delete marker, Amazon S3 behaves as if the
2085
- * object was deleted and includes <code>x-amz-delete-marker: true</code> in the
2086
- * response.</p>
2137
+ * object was deleted and includes <code>x-amz-delete-marker: true</code> in the
2138
+ * response.</p>
2087
2139
  * </li>
2088
2140
  * </ul>
2089
2141
  * </note>
@@ -2187,7 +2239,13 @@ export declare class S3 extends S3Client {
2187
2239
  * </p>
2188
2240
  * <p>By default, GET returns ACL information about the current version of an object. To
2189
2241
  * return ACL information about a different version, use the versionId subresource.</p>
2190
- *
2242
+ * <note>
2243
+ * <p>If your bucket uses the bucket owner enforced setting for S3 Object Ownership,
2244
+ * requests to read ACLs are still supported and return the <code>bucket-owner-full-control</code>
2245
+ * ACL with the owner being the account that created the bucket. For more information, see
2246
+ * <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">
2247
+ * Controlling object ownership and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p>
2248
+ * </note>
2191
2249
  * <p>The following operations are related to <code>GetObjectAcl</code>:</p>
2192
2250
  * <ul>
2193
2251
  * <li>
@@ -2518,8 +2576,8 @@ export declare class S3 extends S3Client {
2518
2576
  listBucketAnalyticsConfigurations(args: ListBucketAnalyticsConfigurationsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListBucketAnalyticsConfigurationsCommandOutput) => void): void;
2519
2577
  /**
2520
2578
  * <p>Lists the S3 Intelligent-Tiering configuration from the specified bucket.</p>
2521
- * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in two low latency and high throughput access tiers. For data that can be accessed asynchronously, you can choose to activate automatic archiving capabilities within the S3 Intelligent-Tiering storage class.</p>
2522
- * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
2579
+ * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.</p>
2580
+ * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
2523
2581
  * <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage class for automatically optimizing frequently and infrequently accessed objects</a>.</p>
2524
2582
  * <p>Operations related to
2525
2583
  * <code>ListBucketIntelligentTieringConfigurations</code> include: </p>
@@ -2956,7 +3014,13 @@ export declare class S3 extends S3Client {
2956
3014
  * that updates a bucket ACL using the request body, then you can continue to use that
2957
3015
  * approach.</p>
2958
3016
  *
2959
- *
3017
+ * <important>
3018
+ * <p>If your bucket uses the bucket owner enforced setting for S3 Object Ownership, ACLs are disabled and no longer affect permissions.
3019
+ * You must use policies to grant access to your bucket and the objects in it. Requests to set ACLs or update ACLs fail and
3020
+ * return the <code>AccessControlListNotSupported</code> error code. Requests to read ACLs are still supported.
3021
+ * For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Controlling object ownership</a>
3022
+ * in the <i>Amazon S3 User Guide</i>.</p>
3023
+ * </important>
2960
3024
  * <p>
2961
3025
  * <b>Access Permissions</b>
2962
3026
  * </p>
@@ -3350,8 +3414,8 @@ export declare class S3 extends S3Client {
3350
3414
  /**
3351
3415
  * <p>Puts a S3 Intelligent-Tiering configuration to the specified bucket.
3352
3416
  * You can have up to 1,000 S3 Intelligent-Tiering configurations per bucket.</p>
3353
- * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in two low latency and high throughput access tiers. For data that can be accessed asynchronously, you can choose to activate automatic archiving capabilities within the S3 Intelligent-Tiering storage class.</p>
3354
- * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
3417
+ * <p>The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.</p>
3418
+ * <p>The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.</p>
3355
3419
  * <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access">Storage class for automatically optimizing frequently and infrequently accessed objects</a>.</p>
3356
3420
  * <p>Operations related to
3357
3421
  * <code>PutBucketIntelligentTieringConfiguration</code> include: </p>
@@ -3645,10 +3709,15 @@ export declare class S3 extends S3Client {
3645
3709
  * modify the logging parameters. All logs are saved to buckets in the same Amazon Web Services Region as the
3646
3710
  * source bucket. To set the logging status of a bucket, you must be the bucket owner.</p>
3647
3711
  *
3648
- * <p>The bucket owner is automatically granted FULL_CONTROL to all logs. You use the
3649
- * <code>Grantee</code> request element to grant access to other people. The
3712
+ * <p>The bucket owner is automatically granted FULL_CONTROL to all logs. You use the <code>Grantee</code> request element to grant access to other people. The
3650
3713
  * <code>Permissions</code> request element specifies the kind of access the grantee has to
3651
3714
  * the logs.</p>
3715
+ * <important>
3716
+ * <p>If the target bucket for log delivery uses the bucket owner enforced
3717
+ * setting for S3 Object Ownership, you can't use the <code>Grantee</code> request element
3718
+ * to grant access to others. Permissions can only be granted using policies. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html#grant-log-delivery-permissions-general">Permissions for server access log delivery</a> in the
3719
+ * <i>Amazon S3 User Guide</i>.</p>
3720
+ * </important>
3652
3721
  *
3653
3722
  * <p>
3654
3723
  * <b>Grantee Values</b>
@@ -3693,7 +3762,7 @@ export declare class S3 extends S3Client {
3693
3762
  * /></code>
3694
3763
  * </p>
3695
3764
  *
3696
- * <p>For more information about server access logging, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html">Server Access Logging</a>. </p>
3765
+ * <p>For more information about server access logging, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html">Server Access Logging</a> in the <i>Amazon S3 User Guide</i>. </p>
3697
3766
  *
3698
3767
  * <p>For more information about creating a bucket, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html">CreateBucket</a>. For more
3699
3768
  * information about returning the logging status of a bucket, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html">GetBucketLogging</a>.</p>
@@ -3851,8 +3920,8 @@ export declare class S3 extends S3Client {
3851
3920
  /**
3852
3921
  * <p>Creates or modifies <code>OwnershipControls</code> for an Amazon S3 bucket. To use this
3853
3922
  * operation, you must have the <code>s3:PutBucketOwnershipControls</code> permission. For
3854
- * more information about Amazon S3 permissions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying Permissions in a Policy</a>. </p>
3855
- * <p>For information about Amazon S3 Object Ownership, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html">Using Object Ownership</a>. </p>
3923
+ * more information about Amazon S3 permissions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-with-s3-actions.html">Specifying permissions in a policy</a>. </p>
3924
+ * <p>For information about Amazon S3 Object Ownership, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/user-guide/about-object-ownership.html">Using object ownership</a>. </p>
3856
3925
  * <p>The following operations are related to <code>PutBucketOwnershipControls</code>:</p>
3857
3926
  * <ul>
3858
3927
  * <li>
@@ -4309,7 +4378,6 @@ export declare class S3 extends S3Client {
4309
4378
  * </li>
4310
4379
  * </ul>
4311
4380
  * </note>
4312
- *
4313
4381
  * <p>
4314
4382
  * <b>Server-side Encryption</b>
4315
4383
  * </p>
@@ -4331,7 +4399,20 @@ export declare class S3 extends S3Client {
4331
4399
  * permissions are then added to the ACL on the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List
4332
4400
  * (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST
4333
4401
  * API</a>. </p>
4334
- *
4402
+ * <p>If the bucket that you're uploading objects to uses the bucket owner enforced setting
4403
+ * for S3 Object Ownership, ACLs are disabled and no longer affect permissions. Buckets that
4404
+ * use this setting only accept PUT requests that don't specify an ACL or PUT requests that
4405
+ * specify bucket owner full control ACLs, such as the <code>bucket-owner-full-control</code> canned
4406
+ * ACL or an equivalent form of this ACL expressed in the XML format. PUT requests that contain other
4407
+ * ACLs (for example, custom grants to certain Amazon Web Services accounts) fail and return a
4408
+ * <code>400</code> error with the error code
4409
+ * <code>AccessControlListNotSupported</code>.</p>
4410
+ * <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of
4411
+ * objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p>
4412
+ * <note>
4413
+ * <p>If your bucket uses the bucket owner enforced setting for Object Ownership,
4414
+ * all objects written to the bucket by any account will be owned by the bucket owner.</p>
4415
+ * </note>
4335
4416
  * <p>
4336
4417
  * <b>Storage Class Options</b>
4337
4418
  * </p>
@@ -4383,8 +4464,13 @@ export declare class S3 extends S3Client {
4383
4464
  * the ACL on an object using either the request body or the headers. For example, if you have
4384
4465
  * an existing application that updates a bucket ACL using the request body, you can continue
4385
4466
  * to use that approach. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
4386
- *
4387
- *
4467
+ * <important>
4468
+ * <p>If your bucket uses the bucket owner enforced setting for S3 Object Ownership, ACLs are disabled and no longer affect permissions.
4469
+ * You must use policies to grant access to your bucket and the objects in it. Requests to set ACLs or update ACLs fail and
4470
+ * return the <code>AccessControlListNotSupported</code> error code. Requests to read ACLs are still supported.
4471
+ * For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html">Controlling object ownership</a>
4472
+ * in the <i>Amazon S3 User Guide</i>.</p>
4473
+ * </important>
4388
4474
  *
4389
4475
  * <p>
4390
4476
  * <b>Access Permissions</b>
@@ -24,6 +24,10 @@ export interface CompleteMultipartUploadCommandOutput extends CompleteMultipartU
24
24
  * to determine whether the request succeeded.</p>
25
25
  * <p>Note that if <code>CompleteMultipartUpload</code> fails, applications should be prepared
26
26
  * to retry the failed requests. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html">Amazon S3 Error Best Practices</a>.</p>
27
+ * <important>
28
+ * <p>You cannot use <code>Content-Type: application/x-www-form-urlencoded</code> with Complete
29
+ * Multipart Upload requests. Also, if you do not provide a <code>Content-Type</code> header, <code>CompleteMultipartUpload</code> returns a 200 OK response.</p>
30
+ * </important>
27
31
  * <p>For more information about multipart uploads, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html">Uploading Objects Using Multipart
28
32
  * Upload</a>.</p>
29
33
  * <p>For information about permissions required to use the multipart upload API, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html">Multipart Upload and
@@ -139,7 +139,17 @@ export interface CopyObjectCommandOutput extends CopyObjectOutput, __MetadataBea
139
139
  * defined by Amazon S3. These permissions are then added to the ACL on the object. For more
140
140
  * information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST
141
141
  * API</a>. </p>
142
- *
142
+ * <p>If the bucket that you're copying objects to uses the bucket owner enforced setting for
143
+ * S3 Object Ownership, ACLs are disabled and no longer affect permissions. Buckets that
144
+ * use this setting only accept PUT requests that don't specify an ACL or PUT requests that
145
+ * specify bucket owner full control ACLs, such as the <code>bucket-owner-full-control</code> canned
146
+ * ACL or an equivalent form of this ACL expressed in the XML format.</p>
147
+ * <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of
148
+ * objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p>
149
+ * <note>
150
+ * <p>If your bucket uses the bucket owner enforced setting for Object Ownership,
151
+ * all objects written to the bucket by any account will be owned by the bucket owner.</p>
152
+ * </note>
143
153
  * <p>
144
154
  * <b>Storage Class Options</b>
145
155
  * </p>