AWS CloudFormation调用ssm:GetParameters权限报错求助
问题排查与解决方案
核心逻辑:模板验证阶段的权限规则
执行create-stack时,CloudFormation会先在调用者本地会话中解析模板内的SSM参数引用(如{{resolve:ssm:/path/to/param}}语法),此阶段使用的是当前执行命令的用户/身份权限,而非指定的CloudFormation服务角色权限。你遇到的错误正是发生在这个模板验证环节。
可能的遗漏配置及修复步骤
1. 核对模板中SSM参数引用的完整性
确认CloudFormation模板里所有引用的SSM参数,你都具备ssm:GetParameters权限:
- 若模板同时引用多个参数(比如除了
/dev/ec2/instanceType还引用了/dev/ec2/amiId),但你仅测试了其中一个,未测试的参数可能存在权限缺口。 - 执行命令验证所有模板用到的参数:
aws ssm get-parameters --name /dev/ec2/instanceType /dev/ec2/amiId
2. 检查SSM参数的KMS加密权限
如果你的SSM参数由AWS KMS密钥加密,除ssm:GetParameters权限外,你还需要对应KMS密钥的kms:Decrypt权限:
- 查看参数加密状态:
aws ssm describe-parameters --parameter-names /dev/ec2/instanceType - 若返回
KeyId字段,说明参数已加密,需给当前用户添加KMS解密权限,示例策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:eu-central-1:xxxxxxxxxxxx:key/your-key-id" } ] }
3. 验证用户权限的实际有效性
- 检查用户的IAM策略是否存在条件限制(如IP范围、时间窗口、资源标签等),导致执行CloudFormation时权限不生效。
- 用模拟命令验证用户对目标参数的实际权限:
查看返回的aws iam simulate-principal-policy --policy-source-arn arn:aws:iam::xxxxxxxxxxxx:user/sam --action-names ssm:GetParameters --resource-arns arn:aws:ssm:eu-central-1:xxxxxxxxxxxx:parameter/dev/ec2/instanceTypeEvaluationResults,确认权限是否被允许。
4. 确认CloudFormation服务角色的信任关系
虽然模板验证阶段不使用该角色,但后续资源创建需确保角色信任CloudFormation服务:
- 角色的信任策略必须包含CloudFormation服务主体:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
内容的提问来源于stack exchange,提问作者smarquis
相关产品推荐
相关产品推荐

