我尝试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/*
我创建了一个用户并向用户授予了以下权限。
AWSCloudFormationFullAccess
)我该怎么办?我必须授予哪些其他权限?
答案 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)
创建以下策略:
现在,将此策略与用户帐户关联。 这应该可以解决问题,并且您应该能够创建堆栈。
答案 7 :(得分:0)
如果您有多个AWS配置文件,请尝试显式
export AWS_ACCESS_KEY_ID=<value>
export AWS_SECRET_ACCESS_KEY=<value>
尝试之前
serverless deploy
答案 8 :(得分:0)
我通过在AWS控制台中向用户添加权限来解决此问题:
答案 9 :(得分:0)
仅供其他人参考,以防他/他正在搜索问题并到达此处:
确保您删除了该 IAM 用户的权限边界。
如果您发现您已向 IAM 用户授予 cloudformation 完全访问权限,但仍然收到相同的错误声明 User is not authorized to perform: cloudformation:CreateStack
,则表明权限边界拒绝了该操作。
答案 10 :(得分:0)
我启用了 MFA,并且必须使用 MFA 代码获取临时凭证才能让 AWS SAM 正常工作,如 this comment
答案 11 :(得分:-1)
(至少现在)有in the docs部分。
With a gist显示他们推荐的策略JSON。
答案 12 :(得分:-5)
授予“管理员”访问您创建的用户的权限