工作,我有一个使用aws cli
shell脚本,我的脚本将使用sudo执行(例如:sudo ./test.sh
)我的AWS CLI没有使用sudo
但我得到的消息:Unable to locate credentials. You can configure credentials by running "aws configure".
其实,我配置为sudo aws configure
和aws configure
我做错了什么? 请帮忙。 谢谢!
工作,我有一个使用aws cli
shell脚本,我的脚本将使用sudo执行(例如:sudo ./test.sh
)我的AWS CLI没有使用sudo
但我得到的消息:Unable to locate credentials. You can configure credentials by running "aws configure".
其实,我配置为sudo aws configure
和aws configure
我做错了什么? 请帮忙。 谢谢!
AWS CLI在$HOME/.aws/credentials
中配置了您的凭证。通常,当您使用sudo
时,它不会更改$HOME
环境变量的值,因此AWS凭证文件将在同一位置生成。您可以通过运行aws configure
作为一个普通用户,键入一个键,然后运行sudo aws configure
所以在这一点检查这一点,你就可以看到,默认值是,你只是把钥匙。
,您应该能够运行sudo aws <facility> <some-command>
并且它可以正常工作 - AWS CLI将使用您当前用户的AWS凭证。我只是测试它来确保。
我怀疑问题在于您要么以强制会话初始化的方式调用您的脚本,例如bash -l
--在这种情况下,AWS CLI将尝试使用root
用户的凭据;或者您从您设置AWS凭据的用户以外的用户运行脚本,并且您期望因为您使用的是sudo
,它将获得相同的凭据(这与我们演示的情况不同)。
您应该:
root
会话中运行sudo -i
然后aws configure
,然后确保所有的脚本使用全根会话(使用作为shebang的#!/bin/bash -l
)。您可能必须使用-E运行sudo以保留由aws cli设置的环境变量。
sudo -E ./test.sh
它工作得很好,如果我跑'/ test.sh'和'须藤。/ test.sh',但如果如果我从詹金斯触发执行脚本没有工作。 –
用户Jenkins服务器是否在您为AWS配置的相同用户下运行? – Guss
顺便说一句 - 詹金斯有几个插件来支持AWS操作,所以检查它们可能是一个好主意。 – Guss