我有使用aws cli
的shell脚本,我的脚本将使用sudo执行(例如:sudo ./test.sh
)
但我收到了消息:Unable to locate credentials. You can configure credentials by running "aws configure".
实际上,我为sudo aws configure
和aws configure
我做错了什么? 请帮忙。 谢谢!
答案 0 :(得分:2)
您可能必须使用-E运行sudo以保留由aws cli设置的环境变量
sudo -E ./test.sh
答案 1 :(得分:1)
AWS CLI在$HOME/.aws/credentials
中配置了您的凭据。通常,当您使用sudo
时,它不会更改$HOME
环境变量的值,因此AWS凭据文件将在同一位置生成。您可以通过以普通用户身份运行aws configure
,输入密钥,然后运行sudo aws configure
来检查这一点,您将能够看到默认值是您刚刚输入的密钥。< / p>
所以此时,您应该能够运行sudo aws <facility> <some-command>
并且它可以正常工作 - AWS CLI将使用您当前用户的AWS凭据。我只是测试它以确保。
我怀疑问题是您以强制会话初始化的方式调用脚本,例如bash -l
- 在这种情况下,AWS CLI将尝试使用root
的凭据用户;或者您从设置AWS凭据的用户以外的用户运行您的脚本,并且您希望这样,因为您都使用sudo
它将获得相同的凭据(这不是我们演示的情况)。 / p>
你应该:
sudo -i
然后aws configure
从完全初始化的root
会话运行来为root用户配置AWS凭据,然后确保所有脚本都使用完全根会话(使用#!/bin/bash -l
作为shebang)。