部署带自定义域名的AWS SAM时出现NoSuchHostedZone错误
问题分析:Route53托管区域ID解析错误导致部署失败
问题场景
用户提供的SAM HttpApi资源模板如下:
MyAuthApi: Type: AWS::Serverless::HttpApi Properties: Name: MyAuthApi Domain: DomainName: "auth.mysite.com" CertificateArn: !Sub "{{resolve:ssm:MY_ACM_ARN:1}}" EndpointConfiguration: REGIONAL Route53: HostedZoneId: !Sub "{{resolve:ssm:MY_HOSTED_ZONE:1}}}"
部署时触发如下错误:
No hosted zone found with ID: Z~~actual HOSTED ZONE ID~~} (Service: AmazonRoute53; Status Code: 404; Error Code: NoSuchHostedZone;
用户已确认Parameter Store中存储的托管区域ID正确,且该ID对应的Route53托管区域确实存在;直接在模板中硬编码ID时,部署可成功完成。
问题原因与解决方案
- 问题根源:模板中
HostedZoneId的取值末尾多了一个多余的右大括号}。原写法!Sub "{{resolve:ssm:MY_HOSTED_ZONE:1}}}"会导致解析后的托管区域ID字符串末尾带上这个无效字符,Route53无法识别该ID。 - 修正后的模板片段:
Route53: HostedZoneId: !Sub "{{resolve:ssm:MY_HOSTED_ZONE:1}}"
- 额外优化:实际上不需要用
!Sub包裹resolve语法,直接写以下代码即可实现参数解析,逻辑更简洁:
Route53: HostedZoneId: "{{resolve:ssm:MY_HOSTED_ZONE:1}}"
内容的提问来源于stack exchange,提问作者JH Lee
相关产品推荐
相关产品推荐

