AWS CDK,为 Route53 中的现有 S3 存储桶创建别名记录

Win*_*jam 5 amazon-s3 amazon-route53 typescript aws-cdk

我想知道如何获取现有的 S3 存储桶并使用 AWS CDK 创建指向它的别名记录点?

到目前为止,一切都很好 :

const myExistingBucket = Bucket.fromBucketName(this, 'myExistingBucket', 'myExistingBucketName')

new route53.ARecord(this, 'myAliasRecord', {
  zone: myHostedZone,
  target: route53.AddressRecordTarget.fromAlias(new route53_targets.BucketWebsiteTarget(myExistingBucket))
});
Run Code Online (Sandbox Code Playgroud)

我得到:'IBucket' 类型的参数不可分配给 'Bucket' 类型的参数

fromBucketArn()fromBucketAttributes()函数fromBucketName()都返回IBucket类型,但BucketWebsiteTarget()函数需要Bucket类型。

那么,我该如何Bucket使用 AWS CDK 从现有类型中获取类型呢?

Win*_*jam 2

最后,我最终使用 CloudFront 基于AWS CDK 静态站点示例提供基于 S3 Bucket 的 HTTPS(这是更好的实践)。s3BucketSource直接接受一个IBucket类型。

const myExistingBucket = Bucket.fromBucketName(this, 'myExistingBucket', 'myExistingBucketName')

// CloudFront distribution that provides HTTPS
const devDistribution = new cloudfront.CloudFrontWebDistribution(this, 'mySiteDistribution', {
  aliasConfiguration: {
    acmCertRef: certArn, // Must be in us-east-1 region.
    names: ['app.example.com'],
    sslMethod: cloudfront.SSLMethod.SNI,
    securityPolicy: cloudfront.SecurityPolicyProtocol.TLS_V1_1_2016,
  },
  originConfigs: [
    {
      s3OriginSource: {
        s3BucketSource: myExistingBucket
      },
      behaviors: [{ isDefaultBehavior: true }],
    }
  ]
});

new route53.ARecord(this, 'myAliasRecord', {
  zone: zone,
  target: route53.AddressRecordTarget.fromAlias(new route53_targets.CloudFrontTarget(devDistribution)),
});
Run Code Online (Sandbox Code Playgroud)