首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管有策略,但CloudFormation无法访问模板中的SSM参数

尽管有策略,但CloudFormation无法访问模板中的SSM参数
EN

Stack Overflow用户
提问于 2019-11-16 01:53:36
回答 1查看 4.7K关注 0票数 0

我正在尝试部署一个CloudFormation模板,该模板使用blog-post:https://aws.amazon.com/blogs/mt/integrating-aws-cloudformation-with-aws-systems-manager-parameter-store/中描述的方法从SSM中提取一些参数。

CF模板参数部分的相关摘录如下:

代码语言:javascript
复制
"ZoneName" : {
   "Type" : "AWS::SSM::Parameter::Value<String>",
   "Description" : "DNS Hostname Zone",
   "Default" : "/Deimos/ZoneName"
},
"ZoneId" : {
   "Type" : "AWS::SSM::Parameter::Value<String>",
   "Description" : "DNS Hostname Zone",
   "Default" : "/Deimos/ZoneId"
},

但是,当我尝试部署它(通过CodePipeline)时,我会得到以下错误:

代码语言:javascript
复制
Action execution failed
AccessDenied. User doesn't have permission to call ssm:GetParameters (Service: AmazonCloudFormation; Status Code: 400; Error Code: ValidationError; Request ID: d6756fbe-fd41-4ac5-93bd-56e5b397445e)

我已经为CloudFormation设置了一个角色和策略,其中包括以下部分,用于授予对SSM中某些参数命名空间的访问权:

代码语言:javascript
复制
    {
        "Sid": "XonoticCFFetchParameters",
        "Effect": "Allow",
        "Action": [
            "ssm:GetParameters",
            "ssm:GetParameter"
        ],
        "Resource": [
            "arn:aws:ssm:*:<aws account #>:parameter/Deimos/*",
            "arn:aws:ssm:*:<aws account #>:parameter/Installers/*",
            "arn:aws:ssm:*:<aws account #>:parameter/Xonotic/*"
        ]
    },

这些似乎应用得很好,基于

代码语言:javascript
复制
aws iam simulate-principal-policy --policy-source-arn "arn:aws:iam::<aws account #>:role/Xonotic-CloudFormationDeploy" --action-names "ssm:getParameters" --resource-arns "arn:aws:ssm:*:<aws account #>:parameter/Deimos/ZoneName"
{
    "EvaluationResults": [
        {
            "EvalActionName": "ssm:getParameters",
            "EvalResourceName": "arn:aws:ssm:*:<aws account #>:parameter/Deimos/ZoneName",
            "EvalDecision": "allowed",
            "MatchedStatements": [
                {
                    "SourcePolicyId": "Xonotic-Deployment",
                    "StartPosition": {
                        "Line": 3,
                        "Column": 19
                    },
                    "EndPosition": {
                        "Line": 16,
                        "Column": 10
                    }
                }
            ],
            "MissingContextValues": []
        }
    ]
}

因此,我所使用的角色应该具有获取参数所需的访问权限,但是它不起作用,我没有什么可检查的了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-16 10:30:38

好的-在这个例子中,有一个JSON参数文件,它是构建管道的一部分,它用一个无效的值覆盖了我的一个参数(它将实际的区域名称放在ZoneName中)。

修正了这个问题,并且参数现在被传递到我的构建过程中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58886846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档