使用已创建的角色部署AWS SAM功能

问题描述 投票:1回答:1

当尝试使用aws sam cli部署到aws时,我的lambda函数使用以下脚本:

aws cloudformation deploy --template-file /Users/ndelvalle/Projects/foo/functions/packaged-template.yaml --stack-name foo --region sa-east-1 --capabilities CAPABILITY_IAM --no-fail-on-empty-changeset

我在堆栈事件中遇到以下错误:

API: iam:CreateRole User: arn:aws:iam::user/nico is not authorized to perform: iam:CreateRole on resource

这是因为我的帐户没有角色创建权限。这就是为什么我想知道是否有办法为我的lambda定义预先创建的角色,因此脚本不需要创建角色。

amazon-web-services aws-sam-cli aws-sam
1个回答
2
投票

您需要更多信息来回答这个问题。使用SAM进行部署时,许多不同的权限都会发挥作用。我为公司实施了SAM模板来管理我们的lambda堆栈。我们需要为我们的Java开发人员提供与SAM模板隐式和显式创建的相同权限,而不仅仅是创建角色。为此,我们在IAM中创建了几个特殊组,我们也附加了无服务器开发人员。可以将特定的预定义角色分配给Lambdas,https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction。如果在模板中定义角色,则不会自动创建角色。但是,如果要声明其他资源(如Api Gateway和DynamoDB),您仍会遇到问题。

长话短说,如果你正在使用SAM,那么你的Sys管理员会更好地授予你创建角色的权限,你也需要其他权限,或者像詹金斯这样的Job运营商完成SAM模板的部署(有权限)。它对你的团队/公司来说过于宽松,也许SAM不是一个好的解决方案......最好切换到类似纯CloudFormation的东西,放弃面向开发人员的工作流程。想想的事情,希望它有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.