AWS::S3::Bucket WebsiteConfiguration
Specifies website configuration parameters for an Amazon S3 bucket.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "ErrorDocument" :
String
, "IndexDocument" :String
, "RedirectAllRequestsTo" :RedirectAllRequestsTo
, "RoutingRules" :[ RoutingRule, ... ]
}
YAML
ErrorDocument:
String
IndexDocument:String
RedirectAllRequestsTo:RedirectAllRequestsTo
RoutingRules:- RoutingRule
Properties
ErrorDocument
-
The name of the error document for the website.
Required: No
Type: String
Update requires: No interruption
IndexDocument
-
The name of the index document for the website.
Required: No
Type: String
Update requires: No interruption
RedirectAllRequestsTo
-
The redirect behavior for every request to this bucket's website endpoint.
Important
If you specify this property, you can't specify any other property.
Required: No
Type: RedirectAllRequestsTo
Update requires: No interruption
RoutingRules
-
Rules that define when a redirect is applied and the redirect behavior.
Required: No
Type: Array of RoutingRule
Update requires: No interruption
Examples
Configure a static website with a routing rule
In this example, AWS::S3::Bucket's Fn::GetAtt
values are used to provide
outputs. If an HTTP 404 error occurs, the routing rule redirects requests to an EC2
instance and inserts the object key prefix report-404/
in the redirect. For
example, if you request a page called ExamplePage.html
and it results in an
HTTP 404 error, the request is routed to a page called
report-404/ExamplePage.html
on the specified instance. For all other HTTP
error codes, error.html
is returned.
This example also specifies a metrics configuration called EntireBucket
that enables CloudWatch request metrics at the bucket level.
JSON
{ "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead", "BucketName": "public-bucket", "MetricsConfigurations": [ { "Id": "EntireBucket" } ], "WebsiteConfiguration": { "IndexDocument": "index.html", "ErrorDocument": "error.html", "RoutingRules": [ { "RoutingRuleCondition": { "HttpErrorCodeReturnedEquals": "404", "KeyPrefixEquals": "out1/" }, "RedirectRule": { "HostName": "ec2-11-22-333-44.compute-1.amazonaws.com", "ReplaceKeyPrefixWith": "report-404/" } } ] } }, "DeletionPolicy": "Retain" } }, "Outputs": { "WebsiteURL": { "Value": { "Fn::GetAtt": [ "S3Bucket", "WebsiteURL" ] }, "Description": "URL for website hosted on S3" }, "S3BucketSecureURL": { "Value": { "Fn::Join": [ "", [ "https://", { "Fn::GetAtt": [ "S3Bucket", "DomainName" ] } ] ] }, "Description": "Name of S3 bucket to hold website content" } } }
YAML
Resources: S3Bucket: Type: 'AWS::S3::Bucket' Properties: AccessControl: PublicRead BucketName: public-bucket MetricsConfigurations: - Id: EntireBucket WebsiteConfiguration: IndexDocument: index.html ErrorDocument: error.html RoutingRules: - RoutingRuleCondition: HttpErrorCodeReturnedEquals: '404' KeyPrefixEquals: out1/ RedirectRule: HostName: ec2-11-22-333-44.compute-1.amazonaws.com ReplaceKeyPrefixWith: report-404/ DeletionPolicy: Retain Outputs: WebsiteURL: Value: !GetAtt - S3Bucket - WebsiteURL Description: URL for website hosted on S3 S3BucketSecureURL: Value: !Join - '' - - 'https://' - !GetAtt - S3Bucket - DomainName Description: Name of S3 bucket to hold website content