用户无权执行:cloudformation:CreateStack

时间:2015-12-12 06:55:50

标签: amazon-web-services amazon-iam amazon-cloudformation

我尝试Serverless创建AWS Lambdas,并在使用命令serverless project create创建项目时收到以下错误。

AccessDenied: User: arn:aws:iam::XXXXXXXXX:user/XXXXXXXXX is not authorized to perform: cloudformation:CreateStack on resource: arn:aws:cloudformation:us-east-1:XXXXXXXXX:stack/XXXXXXXXX-development-r/*

我创建了一个用户并向用户授予了以下权限。

  1. AWSLambdaFullAccess
  2. AmazonS3FullAccess
  3. CloudFrontFullAccess
  4. AWSCloudFormationReadOnlyAccess(没有授予AWSCloudFormationFullAccess
  5. 我该怎么办?我必须授予哪些其他权限?

13 个答案:

答案 0 :(得分:74)

您提到的最接近的一个是AWSCloudFormationReadOnlyAccess,但显然这是只读的,您需要cloudformation:CreateStack。将以下内容添加为用户政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

完全有可能您需要更多权限 - 例如,启动EC2实例,(重新)配置安全组等。

答案 1 :(得分:28)

@ tedder42说了什么,但在我从visual studio内部部署到lambda之前,我还必须将以下内容添加到我的组策略中。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:CreateChangeSet",
                "cloudformation:ListStacks",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

答案 2 :(得分:5)

根据我最近的经验,要求的政策是

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:CreateChangeSet",
                "cloudformation:ListStacks",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResource",
                "cloudformation:DescribeStackEvents",
                "cloudformation:ValidateTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

答案 3 :(得分:2)

我无法获得上面显示的较短版本;对我来说固定的是稍微扩展@mancvso的答案:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1449904348000",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:CreateChangeSet",
                "cloudformation:ListStacks",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResource",
                "cloudformation:DescribeStackEvents",
                "cloudformation:ValidateTemplate",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplateSummary"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

答案 4 :(得分:1)

这2个帮助我越界了...

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "apigateway:*",
            "Resource": "*"
        }
    ]
}

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListStacks",
                "cloudformation:DescribeStackEvents",
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DescribeStackResource",
                "cloudformation:CreateChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        }
    ]
}

答案 5 :(得分:0)

通过AWS中的最新更新,以下内联策略也可以使用。

<a onclick="shareOnReddit()">
    <img src="https://www.redditstatic.com/spreddit7.gif" alt="submit to reddit" border="0" />
</a>

<script>
    function shareOnReddit() {
        var url = encodeURIComponent(window.location);
        window.location = '//www.reddit.com/submit?url=' + url;
        return false;
    }
</script>  

答案 6 :(得分:0)

创建以下策略:

  1. 单击策略->创建策略
  2. 在“选择服务”下-输入EKS并选择“ EKS”
  3. 操作下:选择“所有EKS操作”
  4. 在资源下:选择“所有资源”或添加ARN
  5. 点击查看政策
  6. 输入策略名称并创建策略。

现在,将此策略与用户帐户关联。 这应该可以解决问题,并且您应该能够创建堆栈。

答案 7 :(得分:0)

如果您有多个AWS配置文件,请尝试显式

export AWS_ACCESS_KEY_ID=<value>
export AWS_SECRET_ACCESS_KEY=<value>

尝试之前

serverless deploy

答案 8 :(得分:0)

我通过在AWS控制台中向用户添加权限来解决此问题:

  1. 转到AWS控制台
  2. 使用IAM>访问管理>用户查找其凭据的用户
  3. 权限>“添加权限”>“直接附加现有策略”
  4. 搜索并选择“ AWSCloudFormationFullAccess”

答案 9 :(得分:0)

仅供其他人参考,以防他/他正在搜索问题并到达此处:

确保您删除了该 IAM 用户的权限边界。

如果您发现您已向 IAM 用户授予 cloudformation 完全访问权限,但仍然收到相同的错误声明 User is not authorized to perform: cloudformation:CreateStack,则表明权限边界拒绝了该操作。

enter image description here

答案 10 :(得分:0)

我启用了 MFA,并且必须使用 MFA 代码获取临时凭证才能让 AWS SAM 正常工作,如 this comment

答案 11 :(得分:-1)

(至少现在)有in the docs部分。

With a gist显示他们推荐的策略JSON。

答案 12 :(得分:-5)

授予“管理员”访问您创建的用户的权限