putPublicAccessBlock method

Future<void> putPublicAccessBlock({
  1. required String bucket,
  2. required PublicAccessBlockConfiguration publicAccessBlockConfiguration,
  3. String? contentMD5,
  4. String? expectedBucketOwner,
})

Creates or modifies the PublicAccessBlock configuration for an Amazon S3 bucket. To use this operation, you must have the s3:PutBucketPublicAccessBlock permission. For more information about Amazon S3 permissions, see Specifying Permissions in a Policy. For more information about when Amazon S3 considers a bucket or an object public, see The Meaning of "Public".

Related Resources

Parameter bucket : The name of the Amazon S3 bucket whose PublicAccessBlock configuration you want to set.

Parameter publicAccessBlockConfiguration : The PublicAccessBlock configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see The Meaning of "Public" in the Amazon Simple Storage Service Developer Guide.

Parameter contentMD5 : The MD5 hash of the PutPublicAccessBlock request body.

For requests made using the AWS Command Line Interface (CLI) or AWS SDKs, this field is calculated automatically.

Parameter expectedBucketOwner : The account id of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.

Implementation

Future<void> putPublicAccessBlock({
  required String bucket,
  required PublicAccessBlockConfiguration publicAccessBlockConfiguration,
  String? contentMD5,
  String? expectedBucketOwner,
}) async {
  ArgumentError.checkNotNull(bucket, 'bucket');
  ArgumentError.checkNotNull(
      publicAccessBlockConfiguration, 'publicAccessBlockConfiguration');
  final headers = <String, String>{
    if (contentMD5 != null) 'Content-MD5': contentMD5.toString(),
    if (expectedBucketOwner != null)
      'x-amz-expected-bucket-owner': expectedBucketOwner.toString(),
  };
  await _protocol.send(
    method: 'PUT',
    requestUri: '/${Uri.encodeComponent(bucket)}?publicAccessBlock',
    headers: headers,
    payload: publicAccessBlockConfiguration
        .toXml('PublicAccessBlockConfiguration'),
    exceptionFnMap: _exceptionFns,
  );
}