AWS CloudFormation ALB模板报错Failed to retrieve external values修复咨询
排查思路
- 首先确认参数类型合法性:CloudFormation的预置参数类型不存在
AWS::CertificateManager::Certificate::Arn,错误的参数类型会导致CloudFormation无法拉取对应资源的校验值,直接触发「Failed to retrieve external values」报错。 - 其次检查内置函数的变量解析冲突:HTTP重定向配置中使用的路径变量是ALB侧的原生变量,若写法触发CloudFormation的内置变量替换逻辑,会导致平台尝试拉取不存在的变量值触发报错。
- 最后校验传入参数的区域一致性:ALB调用的ACM证书必须和ALB部署在同一AWS区域,且证书状态为「已签发」,否则也会触发资源拉取失败报错。
具体修复方案
你只需修改模板中两处错误配置即可解决问题:
- 修正Certificate参数的合法类型
原错误配置:
Certificate: Description: Arn of the ssl certificate for HTTPS listener Type: AWS::CertificateManager::Certificate::Arn
替换为:
Certificate: Description: Arn of the ssl certificate for HTTPS listener Type: AWS::ACM::Certificate
- 修正HTTP监听器的重定向变量写法,加转义符避免CloudFormation误解析
原错误配置:
RedirectConfig: Protocol: "HTTPS" Port: "443" Host: "#{host}" Path: "/#{path}" Query: "#{query}" StatusCode: "HTTP_301"
替换为:
RedirectConfig: Protocol: "HTTPS" Port: "443" Host: "${!host}" Path: "/${!path}" Query: "${!query}" StatusCode: "HTTP_301"
其中!是CloudFormation的变量转义符,告诉!Sub函数不要解析该占位符,直接传递给ALB作为原生变量处理。
内容的提问来源于stack exchange,提问作者Anusha Ravindra
相关产品推荐
相关产品推荐

