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.