【问题标题】:Deploy AWS SAM functions using already created roles使用已创建的角色部署 AWS SAM 功能
【发布时间】:2019-02-12 03:52:48
【问题描述】:

当尝试使用 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】:

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

    长话短说,如果您使用 SAM,最好让您的系统管理员授予您创建角色的权限,并且您还需要其他权限,或者由 Job runner 完成 SAM 模板的部署像詹金斯(有权限)。它对您的团队/公司来说太宽松了,也许 SAM 不是一个好的解决方案……最好切换到纯 CloudFormation 之类的东西并放弃面向开发人员的工作流程。有一些想法,希望对你有帮助。

    【讨论】:

    • TBH SAM 文档本身鼓励您在管理员帐户下运行,这非常可怕。
    猜你喜欢
    • 2021-12-29
    • 2020-12-20
    • 2022-07-21
    • 2022-09-24
    • 2021-12-20
    • 1970-01-01
    • 2021-11-03
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多