AWS配置文件似乎未配置!Serverless框架错误?

24

背景:我在网关账户中有一个没有权限的账户,我们创建用户并使用具备管理员权限的角色来访问 AWS 资源。

配置文件

[profile gateway]
region = ap-southeast-1
output = json

[profile DA]

region = ap-south-1
output = json
role_arn = arn:aws:iam::xxxxxxxxxxxxx:role/jatin
mfa_serial = arn:aws:iam::xxxxxxxxxx:mfa/atin
source_profile = gateway

凭证文件

[gateway]
aws_access_key_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
aws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

现在我正在尝试使用serverless deploy --aws-profile "DA"部署我的lambda函数,它显示AWS配置文件"DA"似乎未配置

但是,如果我运行aws s3 ls --profile "DA",它可以正常工作,因此我猜配置文件和凭据没有问题。


我有点困惑,当我查看你的配置文件和凭证文件时,我看到一个名为gateway的配置文件,但是你提到了DADA配置在哪里?在配置文件中,以region = ap-south-1为标题的块没有以[profile ...]为标题,这是有意为之吗? - yvesonline
抱歉,我在我的程序块中犯了一个错误,我已经进行了编辑,请再检查一次。 - Jatin Mehrotra
2个回答

25
这是Serverless已知的问题,它只在~/.aws/credentials中检查配置文件而不是~/.aws/config
关于此问题,多个Serverless论坛帖子进行了讨论,例如这篇文章
请将您的~/.aws/credentials文件更改为以下内容,然后它应该可以工作:
[gateway]
aws_access_key_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
aws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

[DA]
aws_access_key_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
aws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
role_arn = arn:aws:iam::xxxxxxxxxxxxx:role/jatin
mfa_serial = arn:aws:iam::xxxxxxxxxx:mfa/atin
source_profile = gateway

非常感谢您的帮助,但我无法为DA角色生成编程密钥,因为请求应该发送到网关帐户,然后使用角色工作来完成安全实践的想法。 - Jatin Mehrotra
7
昨天我尝试了export AWS_SDK_LOAD_CONFIG=1,然后执行了serverless deploy --aws-profile myrole,不知何故它奏效了,但是我对为什么有效的解释并不满意。能否请@yvesonline看一下这个问题? - Jatin Mehrotra
这个想法是你从gateway复制并粘贴密钥到DA角色。至于AWS_SDK_LOAD_CONFIG方法,它有点说得通,它基本上绕过了credentials直接进入了config,这也是Serverless一开始遇到的问题。这里解释得更好些。 - yvesonline
我尝试了你的答案,但错误还是一样的。 - Jatin Mehrotra
1
那么我会选择使用AWS_SDK_LOAD_CONFIG方法,我链接的论坛帖子报告了许多困难和问题,所以如果您找到了适合您的方法,那就很好。很乐意更新答案。 - yvesonline
感谢您的努力,非常感激。 - Jatin Mehrotra

24
更好的解决方案是指定 AWS_SDK_LOAD_CONFIG=1 而不会影响您的凭据: AWS_SDK_LOAD_CONFIG=1 sls deploy 请确保您已安装 serverless-better-credentials serverless 插件,因为这是必需的才能正常工作。按照 https://www.serverless.com/plugins/serverless-better-credentials 的安装说明进行安装。

3
完全不起作用,同样的错误。 - user64204
2
完美,可用。 - sonjz
请确保您已安装 serverless-better-credentials 无服务器插件,因为它是必需的才能使其正常工作。请按照 https://www.serverless.com/plugins/serverless-better-credential 的安装说明进行操作。 - Sandoval
@DanielSandoval 正确的链接是 https://www.serverless.com/plugins/serverless-better-credentials - cnorthfield

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接