shell 我的AWS CLI不支持sudo

t9aqgxwy  于 2023-08-07  发布在  Shell
关注(0)|答案(4)|浏览(118)

我有一个使用aws cli的shell脚本,我的脚本将使用sudo执行(例如:sudo ./test.sh)的数据
但我得到了信息:Unable to locate credentials. You can configure credentials by running "aws configure".
实际上,我同时配置了sudo aws configureaws configure
我做错了什么?请帮帮我谢谢你,谢谢

siv3szwd

siv3szwd1#

您可能必须使用-E运行sudo以保留aws cli设置的环境变量。
第一个月

eni9jsuy

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凭据。

mzmfm0qo

mzmfm0qo3#

您可以执行以下操作:

sudo cp -r /home/<username>/.aws /home/root

字符串
现在您可以对root用户使用相同的用户凭据。

2jcobegt

2jcobegt4#

试试看:

sudo -H <your command>

字符串
这将使用目标用户的家庭环境设置

相关问题