使用 aws 角色执行无服务器部署

Ste*_*n M 3 amazon-web-services amazon-iam serverless-framework serverless aws-serverless

我正在尝试使用无服务器框架部署一个简单的 lambda 函数。我的 IAM 用户没有运行 cloudformation 的必要权限:

User: arn:aws:iam::xxx:user/xxx is not authorized to perform: cloudformation:DescribeStacks on resource: arn:aws:cloudformation:us-east-1:xxx:stack/xx
Run Code Online (Sandbox Code Playgroud)

这或多或少是有意为之,因为我们的设置使用 IAM 角色来执行某些任务。我已经在 ~/.aws/config 文件中配置了这些角色,对于 aws cli 操作,我可以调用

aws s3 ls --profile myrole
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我将角色“myrole”中的所有策略附加到我的 IAM 用户以执行 aws-cli 命令。

有没有什么方法可以为无服务器做类似的事情,即将角色(不是不同的用户)附加到

serverless depoly 
Run Code Online (Sandbox Code Playgroud)

陈述?

如果我通过导出更改角色

AWS_PROFILE=myrole

或打电话

serverless deploy --aws-profile myrole

我得到Error: Profile myrole does not exist即使的角色定义 /.aws/credentials~/.aws/config

Ste*_*n M 7

好的,我找到了一个解决方案来解决这个问题。显然,您需要将 AWS_SDK_LOAD_CONFIG 设置为一个真值,以便从共享配置 (~/.aws/config) 和共享凭证 (~/.aws/credentials) 文件中的配置值创建会话。

export AWS_SDK_LOAD_CONFIG=1
Run Code Online (Sandbox Code Playgroud)

然后执行

serverless deploy --aws-profile myrole
Run Code Online (Sandbox Code Playgroud)