putBucketWebsite method
- required String bucket,
- required WebsiteConfiguration websiteConfiguration,
- String? contentMD5,
- String? expectedBucketOwner,
Sets the configuration of the website that is specified in the
website
subresource. To configure a bucket as a website, you
can add this subresource on the bucket with website configuration
information such as the file name of the index document and any redirect
rules. For more information, see Hosting
Websites on Amazon S3.
This PUT operation requires the S3:PutBucketWebsite
permission. By default, only the bucket owner can configure the website
attached to a bucket; however, bucket owners can allow other users to set
the website configuration by writing a bucket policy that grants them the
S3:PutBucketWebsite
permission.
To redirect all website requests sent to the bucket's website endpoint, you add a website configuration with the following elements. Because all requests are sent to another website, you don't need to provide index document name for the bucket.
-
WebsiteConfiguration
-
RedirectAllRequestsTo
-
HostName
-
Protocol
-
WebsiteConfiguration
-
IndexDocument
-
Suffix
-
ErrorDocument
-
Key
-
RoutingRules
-
RoutingRule
-
Condition
-
HttpErrorCodeReturnedEquals
-
KeyPrefixEquals
-
Redirect
-
Protocol
-
HostName
-
ReplaceKeyPrefixWith
-
ReplaceKeyWith
-
HttpRedirectCode
Parameter bucket
:
The bucket name.
Parameter websiteConfiguration
:
Container for the request.
Parameter contentMD5
:
The base64-encoded 128-bit MD5 digest of the data. You must use this
header as a message integrity check to verify that the request body was
not corrupted in transit. For more information, see RFC 1864.
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> putBucketWebsite({
required String bucket,
required WebsiteConfiguration websiteConfiguration,
String? contentMD5,
String? expectedBucketOwner,
}) async {
ArgumentError.checkNotNull(bucket, 'bucket');
ArgumentError.checkNotNull(websiteConfiguration, 'websiteConfiguration');
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)}?website',
headers: headers,
payload: websiteConfiguration.toXml('WebsiteConfiguration'),
exceptionFnMap: _exceptionFns,
);
}