AWS CDK:如何使用 Route53 别名记录定位 Elastic Beanstalk 环境

Arj*_*jan 5 amazon-web-services amazon-elastic-beanstalk aws-cdk

要创建 Elastic Beanstalk 应用程序和环境,我有以下代码:

// this: the class instance extending Construct

const application = new CfnApplication(this, 'Application', {
  applicationName: 'some-name'
});
const environment = new CfnEnvironment(this, 'Environment', {
  environmentName: 'production',
  applicationName: application.applicationName,
  platformArn: 'arn::of::plaform',
  solutionStackName: 'a-valid-stack-name'
});
Run Code Online (Sandbox Code Playgroud)

在 Route53 中创建别名记录需要一个目标实现IAliasRecordTarget

const record = new AliasRecord(this, 'ARecord', {
 recordName: 'a-record',
 target: ?
 zone: zone
});
Run Code Online (Sandbox Code Playgroud)

如何使用环境作为目标?在 aws-cdk 存储库中寻找实现 IAliasRecordTarget 的类,除了 Cloudfront 分发和基本负载均衡器之外,不会产生很多候选对象

jog*_*old 2

该prop 需要一个带有返回,和target的函数的对象(请参阅AWS::Route53::RecordSet AliasTarget的实现)。bind()dnsNameevaluateTargetHealthhostedZoneIdAliasRecord

您可以执行以下操作:

const record = new AliasRecord(this, 'ARecord', {
  recordName: 'a-record',
  target: {
    bind: (): AliasRecordTargetProps => ({
      dnsName: environment.attrEndpointUrl,
      hostedZoneId: 'Z14LCN19Q5QHIC' // for us-east-2
    })
  },
  zone: zone
});
Run Code Online (Sandbox Code Playgroud)

如果使用其他区域,请参阅AWS Elastic Beanstalk 终端节点和配额以获取托管区域 ID 的列表,或者在环境负载均衡时使用Elastic Load Balancing 终端节点和配额。

更新 2018-05-28asAliasRecordTarget现在版本bindaws-cdk0.32.0