如何解决如何为自定义 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 别名记录
我的问题是如何为自定义 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 举报,一经查实,本站将立刻删除。