我有一个使用aws cli的shell脚本,我的脚本将使用sudo执行(例如:sudo ./test.sh)的数据但我得到了信息:Unable to locate credentials. You can configure credentials by running "aws configure".个实际上,我同时配置了sudo aws configure和aws configure我做错了什么?请帮帮我谢谢你,谢谢
aws cli
sudo ./test.sh
Unable to locate credentials. You can configure credentials by running "aws configure".
sudo aws configure
aws configure
siv3szwd1#
您可能必须使用-E运行sudo以保留aws cli设置的环境变量。第一个月
eni9jsuy2#
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,所以它将获得相同的凭据(这不是我们演示的情况)。您应该:1.通过在完全初始化的root会话中运行sudo -i,然后运行aws configure,为root用户配置AWS凭据,然后确保所有脚本都使用完整的root会话(使用#!/bin/bash -l作为shebang)。1.如果您的问题是第二个问题,并且您不想执行(1)中建议的复杂解决方案,则应该为每个用户配置AWS凭据。
$HOME/.aws/credentials
sudo
$HOME
sudo aws <facility> <some-command>
bash -l
root
sudo -i
#!/bin/bash -l
mzmfm0qo3#
您可以执行以下操作:
sudo cp -r /home/<username>/.aws /home/root
字符串现在您可以对root用户使用相同的用户凭据。
2jcobegt4#
试试看:
sudo -H <your command>
字符串这将使用目标用户的家庭环境设置
4条答案
按热度按时间siv3szwd1#
您可能必须使用-E运行sudo以保留aws cli设置的环境变量。
第一个月
eni9jsuy2#
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
,所以它将获得相同的凭据(这不是我们演示的情况)。您应该:
1.通过在完全初始化的
root
会话中运行sudo -i
,然后运行aws configure
,为root用户配置AWS凭据,然后确保所有脚本都使用完整的root会话(使用#!/bin/bash -l
作为shebang)。1.如果您的问题是第二个问题,并且您不想执行(1)中建议的复杂解决方案,则应该为每个用户配置AWS凭据。
mzmfm0qo3#
您可以执行以下操作:
字符串
现在您可以对root用户使用相同的用户凭据。
2jcobegt4#
试试看:
字符串
这将使用目标用户的家庭环境设置