首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS :如何用Route53别名记录锁定弹性豆茎环境

AWS :如何用Route53别名记录锁定弹性豆茎环境
EN

Stack Overflow用户
提问于 2019-05-16 08:30:16
回答 4查看 1.9K关注 0票数 4

要创建弹性豆茎应用程序和环境,我有以下代码:

代码语言:javascript
复制
// 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'
});

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

代码语言:javascript
复制
const record = new AliasRecord(this, 'ARecord', {
 recordName: 'a-record',
 target: ?
 zone: zone
});

我如何利用环境作为目标?寻找在aws中实现IAliasRecordTarget的类,除了cloudfront分布和基本负载均衡器之外,不会产生更多的候选对象。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-05-16 12:15:57

target支柱需要一个bind()函数返回dnsNameevaluateTargetHealthhostedZoneId的对象(参见AWS::Route53 53::RecordSet AliasTargetAliasRecord)。

您可以执行以下操作:

代码语言:javascript
复制
const record = new AliasRecord(this, 'ARecord', {
  recordName: 'a-record',
  target: {
    bind: (): AliasRecordTargetProps => ({
      dnsName: environment.attrEndpointUrl,
      hostedZoneId: 'Z14LCN19Q5QHIC' // for us-east-2
    })
  },
  zone: zone
});

如果在环境负载平衡时使用其他区域或弹性负载平衡端点和配额,请参见弹性负载平衡端点和配额获得托管区域is的列表。

更新2018-05-28asAliasRecordTarget现在是bindaws-cdk版本0.32.0

票数 2
EN

Stack Overflow用户

发布于 2019-12-20 09:38:48

对于那些在单个实例环境中寻找解决方案的人:

  1. 将EBS环境中的cnamePrefix设置为您喜欢的值(例如。“我的应用程序”)。这将产生一个url,您可以稍后作为dnsName的一部分使用它来创建一个A-记录;
  2. 创建一个AliasRecordTarget
代码语言:javascript
复制
const record: IAliasRecordTarget = {
                bind: (): AliasRecordTargetConfig => ({
                  dnsName: `${cnamePrefix}.${this.region}.elasticbeanstalk.com`,
                  hostedZoneId: 'Z2NYPWQ7DFZAZH' // Lookup ID or create a mapper: https://www.rubydoc.info/gems/roadworker/Aws/Route53 
                })
              };
  1. 创建A-record
代码语言:javascript
复制
// Route53 alias record for the EBS app
new ARecord(this, 'ebs-alias-record', {
              recordName: `my-app.mydomain.com.`,
              target: RecordTarget.fromAlias(record),
              zone: hostedZone
            })

编辑**

要获取hostedZone变量的值,可以使用以下方法查找区域:

HostedZone.fromLookup(this, 'zone-lookup', {domainName: 'my-app.mydomain.com'});

票数 3
EN

Stack Overflow用户

发布于 2019-05-16 14:46:44

除了@慢跑发布的解决方案和注释外,使用HostedZoneProvider收回您自己的托管区域,并使用ElasticBean秸秆托管区域的区域id作为目标。

代码语言:javascript
复制
const zone = new HostedZoneProvider(this, {
            domainName: props.domainName
}).findAndImport(this, 'a-hosted-zone');

const ebsRegionHostedZoneId = 'Z117KPS5GTRQ2G' // us-east-1

const record = new AliasRecord(this, 'ARecord', {
  recordName: 'a-record',
  target: {
    asAliasRecordTarget: (): AliasRecordTargetProps => ({
      dnsName: environment.environmentEndpointUrl,
      // the id of the hosted zone in your region
      hostedZoneId: ebsRegionHostedZoneId
    })
  },
  // your hosted zone
  zone: zone
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56164141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档