微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为自定义 GatewayAPI 域的 Route53 别名记录创建 SAM 模板块

如何解决如何为自定义 GatewayAPI 域的 Route53 别名记录创建 SAM 模板块

创建 SAM 模板以创建 API + Lambda。简单!

Resources:
  HelloWorldApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: prod
      DeFinitionBody:
        Fn::Transform:
          Name: AWS::Include
          Parameters:
          Location: ./api.yaml
      

将网关的自定义域放入其中并将其映射到 API 的阶段。

Resources:
  HelloWorldApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: prod
      DeFinitionBody:
        Fn::Transform:
          Name: AWS::Include
          Parameters:
      Domain:
        DomainName:
          Fn::Sub: api-${HelloWorldApi.Stage}.custom-domain.com
        CertificateArn: arn:aws:certificate...

如果我要通过控制台执行此操作,在创建自定义域并映射阶段后,我必须在 Route53 中为 API 和映射配置 DNS 别名记录

enter image description here

我的问题是如何为自定义 GatewayAPI 域的 Route53 别名记录创建 SAM 模板块

解决方法

感谢@lamanus 激励我阅读文档,见树不见林。

原始 OP 的关键是对由 AWS::Serverless::Api 创建的映射自定义域的引用,获取该引用并不明显。也就是说,如果您像这样在 AWS::Serverless::Api 块中创建 Route53,则不需要。

HelloWorldApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: prod
      Domain:
        DomainName:
          Fn::Sub: api-${HelloWorldApi.Stage}.custom-domain.com
        CertificateArn: arn:cert...
        Route53:
          HostedZoneName: custom-domain.com.
          EvaluateTargetHealth: true
      DefinitionBody:
        Fn::Transform:
          Name: AWS::Include
          Parameters:
            Location: ./api.yaml

此 SAM 资源将创建自定义域、映射和 Route53 目标别名。

,

您可以使用 CloudFormation 模板创建 Route 53 记录。

要获取端点,您可以使用 Ref 函数。

当将此资源的逻辑 ID 提供给 Ref 内部函数时,它会返回底层 API Gateway API 的 ID。

因此,可以使用区域值重建 api 网关端点。将 api 网关的 Ref 函数与字符串、区域如:

!Join
- ''
- - !Ref HelloWorldApi
  - .execute-api.
  - !Ref AWS::Region (or specific value)
  - .amazonaws.com

然后为 Route 53 托管区域创建 CNAME 记录。请参阅AWS docs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。