CloudFormation使用ToJsonString创建CloudWatch仪表盘遇权限不足错误
解决CloudFormation部署时的InsufficientCapabilitiesException错误
问题原因
你的模板中使用了AWS::LanguageExtensions Transform,该Transform属于CloudFormation宏扩展功能,部署时必须显式声明CAPABILITY_AUTO_EXPAND权限,否则会触发400错误。
解决方案
根据你使用的部署方式,添加对应的权限声明:
1. AWS CLI部署
在创建或更新栈的命令中加入--capabilities CAPABILITY_AUTO_EXPAND参数:
aws cloudformation create-stack \ --stack-name your-stack-name \ --template-body file://your-template.json \ --parameters ParameterKey=Environment,ParameterValue=test \ --capabilities CAPABILITY_AUTO_EXPAND
2. AWS控制台部署
提交栈创建/更新请求时,在"Capabilities"步骤中,找到并勾选对应CAPABILITY_AUTO_EXPAND的确认选项(控制台会针对宏扩展场景弹出明确的权限确认提示)。
3. Boto3 SDK部署
调用create_stack或update_stack方法时,指定Capabilities=['CAPABILITY_AUTO_EXPAND']参数:
import boto3 cfn_client = boto3.client('cloudformation') response = cfn_client.create_stack( StackName='your-stack-name', TemplateBody=open('your-template.json').read(), Parameters=[ { 'ParameterKey': 'Environment', 'ParameterValue': 'test' } ], Capabilities=['CAPABILITY_AUTO_EXPAND'] )
模板可行性确认
你的模板逻辑是可行的:通过Fn::ToJsonString生成CloudWatch仪表盘的JSON配置,结合Ref和Sub实现环境参数化,解决权限问题后即可正常部署。
内容的提问来源于stack exchange,提问作者chim
相关产品推荐
相关产品推荐

