Bucket Website Configuration V2Args
Provides an S3 bucket website configuration resource. For more information, see Hosting Websites on S3.
This resource cannot be used with S3 directory buckets.
Example Usage
With routing_rule
configured
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.s3.BucketWebsiteConfigurationV2("example", {
bucket: exampleAwsS3Bucket.id,
indexDocument: {
suffix: "index.html",
},
errorDocument: {
key: "error.html",
},
routingRules: [{
condition: {
keyPrefixEquals: "docs/",
},
redirect: {
replaceKeyPrefixWith: "documents/",
},
}],
});
import pulumi
import pulumi_aws as aws
example = aws.s3.BucketWebsiteConfigurationV2("example",
bucket=example_aws_s3_bucket["id"],
index_document={
"suffix": "index.html",
},
error_document={
"key": "error.html",
},
routing_rules=[{
"condition": {
"key_prefix_equals": "docs/",
},
"redirect": {
"replace_key_prefix_with": "documents/",
},
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.S3.BucketWebsiteConfigurationV2("example", new()
{
Bucket = exampleAwsS3Bucket.Id,
IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationV2IndexDocumentArgs
{
Suffix = "index.html",
},
ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationV2ErrorDocumentArgs
{
Key = "error.html",
},
RoutingRules = new[]
{
new Aws.S3.Inputs.BucketWebsiteConfigurationV2RoutingRuleArgs
{
Condition = new Aws.S3.Inputs.BucketWebsiteConfigurationV2RoutingRuleConditionArgs
{
KeyPrefixEquals = "docs/",
},
Redirect = new Aws.S3.Inputs.BucketWebsiteConfigurationV2RoutingRuleRedirectArgs
{
ReplaceKeyPrefixWith = "documents/",
},
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := s3.NewBucketWebsiteConfigurationV2(ctx, "example", &s3.BucketWebsiteConfigurationV2Args{
Bucket: pulumi.Any(exampleAwsS3Bucket.Id),
IndexDocument: &s3.BucketWebsiteConfigurationV2IndexDocumentArgs{
Suffix: pulumi.String("index.html"),
},
ErrorDocument: &s3.BucketWebsiteConfigurationV2ErrorDocumentArgs{
Key: pulumi.String("error.html"),
},
RoutingRules: s3.BucketWebsiteConfigurationV2RoutingRuleArray{
&s3.BucketWebsiteConfigurationV2RoutingRuleArgs{
Condition: &s3.BucketWebsiteConfigurationV2RoutingRuleConditionArgs{
KeyPrefixEquals: pulumi.String("docs/"),
},
Redirect: &s3.BucketWebsiteConfigurationV2RoutingRuleRedirectArgs{
ReplaceKeyPrefixWith: pulumi.String("documents/"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.s3.BucketWebsiteConfigurationV2;
import com.pulumi.aws.s3.BucketWebsiteConfigurationV2Args;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2IndexDocumentArgs;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2ErrorDocumentArgs;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2RoutingRuleArgs;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2RoutingRuleConditionArgs;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2RoutingRuleRedirectArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new BucketWebsiteConfigurationV2("example", BucketWebsiteConfigurationV2Args.builder()
.bucket(exampleAwsS3Bucket.id())
.indexDocument(BucketWebsiteConfigurationV2IndexDocumentArgs.builder()
.suffix("index.html")
.build())
.errorDocument(BucketWebsiteConfigurationV2ErrorDocumentArgs.builder()
.key("error.html")
.build())
.routingRules(BucketWebsiteConfigurationV2RoutingRuleArgs.builder()
.condition(BucketWebsiteConfigurationV2RoutingRuleConditionArgs.builder()
.keyPrefixEquals("docs/")
.build())
.redirect(BucketWebsiteConfigurationV2RoutingRuleRedirectArgs.builder()
.replaceKeyPrefixWith("documents/")
.build())
.build())
.build());
}
}
resources:
example:
type: aws:s3:BucketWebsiteConfigurationV2
properties:
bucket: ${exampleAwsS3Bucket.id}
indexDocument:
suffix: index.html
errorDocument:
key: error.html
routingRules:
- condition:
keyPrefixEquals: docs/
redirect:
replaceKeyPrefixWith: documents/
With routing_rules
configured
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.s3.BucketWebsiteConfigurationV2("example", {
bucket: exampleAwsS3Bucket.id,
indexDocument: {
suffix: "index.html",
},
errorDocument: {
key: "error.html",
},
routingRuleDetails: `[{
"Condition": {
"KeyPrefixEquals": "docs/"
},
"Redirect": {
"ReplaceKeyPrefixWith": ""
}
}]
`,
});
import pulumi
import pulumi_aws as aws
example = aws.s3.BucketWebsiteConfigurationV2("example",
bucket=example_aws_s3_bucket["id"],
index_document={
"suffix": "index.html",
},
error_document={
"key": "error.html",
},
routing_rule_details="""[{
"Condition": {
"KeyPrefixEquals": "docs/"
},
"Redirect": {
"ReplaceKeyPrefixWith": ""
}
}]
""")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.S3.BucketWebsiteConfigurationV2("example", new()
{
Bucket = exampleAwsS3Bucket.Id,
IndexDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationV2IndexDocumentArgs
{
Suffix = "index.html",
},
ErrorDocument = new Aws.S3.Inputs.BucketWebsiteConfigurationV2ErrorDocumentArgs
{
Key = "error.html",
},
RoutingRuleDetails = @"[{
""Condition"": {
""KeyPrefixEquals"": ""docs/""
},
""Redirect"": {
""ReplaceKeyPrefixWith"": """"
}
}]
",
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := s3.NewBucketWebsiteConfigurationV2(ctx, "example", &s3.BucketWebsiteConfigurationV2Args{
Bucket: pulumi.Any(exampleAwsS3Bucket.Id),
IndexDocument: &s3.BucketWebsiteConfigurationV2IndexDocumentArgs{
Suffix: pulumi.String("index.html"),
},
ErrorDocument: &s3.BucketWebsiteConfigurationV2ErrorDocumentArgs{
Key: pulumi.String("error.html"),
},
RoutingRuleDetails: pulumi.String(`[{
"Condition": {
"KeyPrefixEquals": "docs/"
},
"Redirect": {
"ReplaceKeyPrefixWith": ""
}
}]
`),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.s3.BucketWebsiteConfigurationV2;
import com.pulumi.aws.s3.BucketWebsiteConfigurationV2Args;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2IndexDocumentArgs;
import com.pulumi.aws.s3.inputs.BucketWebsiteConfigurationV2ErrorDocumentArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new BucketWebsiteConfigurationV2("example", BucketWebsiteConfigurationV2Args.builder()
.bucket(exampleAwsS3Bucket.id())
.indexDocument(BucketWebsiteConfigurationV2IndexDocumentArgs.builder()
.suffix("index.html")
.build())
.errorDocument(BucketWebsiteConfigurationV2ErrorDocumentArgs.builder()
.key("error.html")
.build())
.routingRuleDetails("""
[{
"Condition": {
"KeyPrefixEquals": "docs/"
},
"Redirect": {
"ReplaceKeyPrefixWith": ""
}
}]
""")
.build());
}
}
resources:
example:
type: aws:s3:BucketWebsiteConfigurationV2
properties:
bucket: ${exampleAwsS3Bucket.id}
indexDocument:
suffix: index.html
errorDocument:
key: error.html
routingRuleDetails: |
[{
"Condition": {
"KeyPrefixEquals": "docs/"
},
"Redirect": {
"ReplaceKeyPrefixWith": ""
}
}]
Import
If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the bucket
and expected_bucket_owner
separated by a comma (,
): Using pulumi import
to import S3 bucket website configuration using the bucket
or using the bucket
and expected_bucket_owner
separated by a comma (,
). For example: If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the bucket
:
$ pulumi import aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2 example bucket-name
If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the bucket
and expected_bucket_owner
separated by a comma (,
):
$ pulumi import aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2 example bucket-name,123456789012
Constructors
Properties
Name of the error document for the website. See below.
Account ID of the expected bucket owner.
Name of the index document for the website. See below.
Redirect behavior for every request to this bucket's website endpoint. See below. Conflicts with error_document
, index_document
, and routing_rule
.
JSON array containing routing rules describing redirect behavior and when redirects are applied. Use this parameter when your routing rules contain empty String values (""
) as seen in the example above.
List of rules that define when a redirect is applied and the redirect behavior. See below.