当前位置: 首页 > 知识库问答 >
问题:

AWS CDK:如何从Route53定位API网关API

隗高旻
2023-03-14

我有一个现有的域名注册在AWS路由53和我已经建立了一个自定义的域名在API网关。在控制台中,我可以配置一些东西,使xxxxx.zenxxxxxxfoundry.com从外部到达API GatewayAPI,然后通过Lambda函数。

现在我想用AWS CDK实现这一点。

我尝试了以下方法:

    const zone = route53.HostedZone.fromHostedZoneId(this, 'ZenithWebFoundryZone', 'ZXXXXXX04V8134');
    new route53.AliasRecord(this, 'BlogAPIRecord', {
      zone: zone,
      recordName: 'xxxxxx.zenxxxxxxfoundry.com',
      target: {
        bind: (): route53.AliasRecordTargetProps => ({
          dnsName: 'd-xxxxxxy00g.execute-api.ap-southeast-2.amazonaws.com',
          hostedZoneId: 'ZXXXXXX04V8134'
        })
      }
    });

它生成okNPM run Build,但当我运行CDK Synth时,我得到一个相当钝的错误:

$ cdk synth
HostedZone.fromHostedZoneId doesn't support "zoneName"
Subprocess exited with error 1

打开--trace并没有太大帮助:附加信息:

Error: Subprocess exited with error 1
    at ChildProcess.proc.on.code (/Users/mikecoxon/.npm-packages/lib/node_modules/aws-cdk/lib/api/cxapp/exec.ts:108:23)
    at ChildProcess.emit (events.js:189:13)
    at ChildProcess.EventEmitter.emit (domain.js:441:20)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)

我查看了整个堆栈脚本,任何地方都没有对zonename的引用。有人知道这个错误从何而来吗?

共有1个答案

浦出野
2023-03-14

使用AWS-CDKv1应该能够执行以下操作:

const zone = route53.HostedZone.fromHostedZoneAttributes(this, 'ZenithWebFoundryZone', {
  hostedZoneId: 'ZXXXXXX04V8134',
  zoneName: 'zenxxxxxxfoundry.com' // your zone name here
});

new route53.ARecord(this, 'BlogAPIRecord', {
  zone,
  recordName: 'xxxxxx.zenxxxxxxfoundry.com',
  target: route53.RecordTarget.fromAlias({
    bind() {
      return {
        dnsName: 'd-xxxxxxy00g.execute-api.ap-southeast-2.amazonaws.com', // Specify the applicable domain name for your API.,
        hostedZoneId: 'XXXX', // Specify the hosted zone ID for your API.
      };
    },
  }),
});

如果API位于相同的堆栈/代码库中,则可以从中获取dnsnamehostedzoneid(这是一个CF属性)。

否则,请参阅AWS::Route53::Recordset AliasTarget文档中的DnsNameHostedZoneID

注意:别名记录的hostedzoneid与您自己区域的托管区域id不同。

 类似资料:
  • 在AWS文档之后,我尝试使用以下http请求从api网关导出api定义。知道它为什么不起作用吗?

  • 我想我需要将CNAME记录添加到cloudFlare中,结果在一个重定向循环中结束,观察到:

  • 主要内容:先来看看业务系统技术栈,网关路由请求转发功能,网关统一授权和鉴权功能,API 网关层流控功能,API 网关层灰度发布功能今天给大家分享一个 API 网关的知识,很多兄弟可能平时经常搞的都是一些 CRUD 的业务系统开发,从来没接触过 API 网关。 那今天来讲讲,API 网关是啥,到底能对我们起到什么作用呢?这个一般面试的时候也很可能会问到这个知识点的。 先来看看业务系统技术栈 平时咱们可能写系统的时候,往往就是基于 SpringBoot+Spring MVC+Spring+Mybat

  • 我试图弄清楚如何从运行在VPC中的lambda访问Api网关服务Api(也称为“管理Amazon Api网关”)。不,我不是试图在私有API中调用资源方法(我知道如何创建VPC接口endpoint),只是调用AWS服务方法(,FWIW,使用Python boto3客户机)。希望这是有意义的,很难清楚地表达这与如此多的“API”重载在这里。当前的尝试以超时失败,所以我认为这是与VPC相关的,但我不确

  • 我需要从endpoint获取一些数据,然后根据响应将这些数据存储到数据库中。