[英]My AWS CLI didn't work with sudo
我有使用aws cli
的 shell 脚本,我的脚本将使用 sudo 执行(例如: sudo./test.sh
)
但我收到消息: Unable to locate credentials. You can configure credentials by running "aws configure".
Unable to locate credentials. You can configure credentials by running "aws configure".
实际上,我为sudo aws configure
和aws configure
都做了配置
我做错什么了? 请帮忙。 谢谢!
您可能必须使用-E运行sudo以保留由aws cli设置的环境变量。
sudo -E ./test.sh
AWS CLI在$HOME/.aws/credentials
配置了$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
,它将获得相同的凭据(这不是我们演示的情况)。
你应该:
sudo -i
为root用户配置AWS凭据,然后使用完全初始化的root
会话aws configure
,然后确保所有脚本都使用完全根会话(使用#!/bin/bash -l
作为shebang )。 您可以执行以下操作:
sudo cp -r /home/<username>/.aws /home/root
现在您可以对 root 使用相同的用户凭据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.