Skip to content
v2.275.0

BucketWebsiteTarget Class ​

Use a S3 as an alias record target.

Example ​

ts
import * as s3 from 'aws-cdk-lib/aws-s3';

const recordName = 'www';
const domainName = 'example.com';

const bucketWebsite = new s3.Bucket(this, 'BucketWebsite', {
  bucketName: [recordName, domainName].join('.'), // www.example.com
  publicReadAccess: true,
  websiteIndexDocument: 'index.html',
});

const zone = route53.HostedZone.fromLookup(this, 'Zone', { domainName }); // example.com

new route53.ARecord(this, 'AliasRecord', {
  zone,
  recordName, // www
  target: route53.RecordTarget.fromAlias(
    new targets.BucketWebsiteTarget(bucketWebsite, {
      evaluateTargetHealth: true,
    }),
  ),
});
python
import aws_cdk.aws_s3 as s3


record_name = "www"
domain_name = "example.com"

bucket_website = s3.Bucket(self, "BucketWebsite",
    bucket_name=[record_name, domain_name].join("."),  # www.example.com
    public_read_access=True,
    website_index_document="index.html"
)

zone = route53.HostedZone.from_lookup(self, "Zone", domain_name=domain_name) # example.com

route53.ARecord(self, "AliasRecord",
    zone=zone,
    record_name=record_name,  # www
    target=route53.RecordTarget.from_alias(
        targets.BucketWebsiteTarget(bucket_website, {
            "evaluate_target_health": True
        }))
)
java
import software.amazon.awscdk.services.s3.*;


String recordName = "www";
String domainName = "example.com";

Bucket bucketWebsite = Bucket.Builder.create(this, "BucketWebsite")
        .bucketName(List.of(recordName, domainName).join(".")) // www.example.com
        .publicReadAccess(true)
        .websiteIndexDocument("index.html")
        .build();

IHostedZone zone = HostedZone.fromLookup(this, "Zone", HostedZoneProviderProps.builder().domainName(domainName).build()); // example.com

 // example.com
ARecord.Builder.create(this, "AliasRecord")
        .zone(zone)
        .recordName(recordName) // www
        .target(RecordTarget.fromAlias(
        new BucketWebsiteTarget(bucketWebsite, Map.of(
                "evaluateTargetHealth", true))))
        .build();
csharp
// Install: dotnet add package Amazon.CDK.Lib
using Amazon.CDK.AWS.S3;


var recordName = "www";
var domainName = "example.com";

var bucketWebsite = new Bucket(this, "BucketWebsite", new BucketProps {
    BucketName = new [] { recordName, domainName }.Join("."),  // www.example.com
    PublicReadAccess = true,
    WebsiteIndexDocument = "index.html"
});

var zone = HostedZone.FromLookup(this, "Zone", new HostedZoneProviderProps { DomainName = domainName }); // example.com

 // example.com
new ARecord(this, "AliasRecord", new ARecordProps {
    Zone = zone,
    RecordName = recordName,  // www
    Target = RecordTarget.FromAlias(
    new BucketWebsiteTarget(bucketWebsite, new Dictionary<string, boolean?> {
        { "evaluateTargetHealth", true }
    }))
});
go
// Install: go get github.com/aws/aws-cdk-go/awscdk/v2
import s3 "github.com/aws/aws-cdk-go/awscdk"


recordName := "www"
domainName := "example.com"

bucketWebsite := s3.NewBucket(this, jsii.String("BucketWebsite"), &BucketProps{
	BucketName: []*string{
		recordName,
		domainName,
	}.join(jsii.String(".")),
	 // www.example.com
	PublicReadAccess: jsii.Boolean(true),
	WebsiteIndexDocument: jsii.String("index.html"),
})

zone := route53.HostedZone_FromLookup(this, jsii.String("Zone"), &HostedZoneProviderProps{
	DomainName: jsii.String(DomainName),
}) // example.com

 // example.com
route53.NewARecord(this, jsii.String("AliasRecord"), &ARecordProps{
	Zone: Zone,
	RecordName: jsii.String(RecordName),
	 // www
	Target: route53.RecordTarget_FromAlias(
	targets.NewBucketWebsiteTarget(bucketWebsite, map[string]*bool{
		"evaluateTargetHealth": jsii.Boolean(true),
	})),
})

Initializer ​

ts
new BucketWebsiteTarget(bucket: IBucket, props?: IAliasRecordTargetProps)
python
BucketWebsiteTarget(bucket: IBucket, props: typing.Optional[IAliasRecordTargetProps] = None)
java
new BucketWebsiteTarget(IBucket bucket, IAliasRecordTargetProps props)
csharp
new BucketWebsiteTarget(IBucket bucket, IAliasRecordTargetProps? props = null)
go
NewBucketWebsiteTarget(Bucket IBucket, Props IAliasRecordTargetProps)

Methods ​

bind(record: IRecordSet, _zone?: IHostedZone): AliasRecordTargetConfigdef bind(self, record: IRecordSet, _zone: typing.Optional[IHostedZone] = None) -> AliasRecordTargetConfigpublic AliasRecordTargetConfig bind(IRecordSet record, IHostedZone _zone)public AliasRecordTargetConfig Bind(IRecordSet record, IHostedZone? _zone = null)func Bind(Record IRecordSet, _zone IHostedZone) AliasRecordTargetConfig#
Return hosted zone ID and DNS name, usable for Route53 alias targets.