繁体   English   中英

我的 AWS CLI 不适用于 sudo

[英]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 configureaws 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 ,它将获得相同的凭据(这不是我们演示的情况)。

你应该:

  1. 通过运行sudo -i为root用户配置AWS凭据,然后使用完全初始化的root会话aws configure ,然后确保所有脚本都使用完全根会话(使用#!/bin/bash -l作为shebang )。
  2. 如果您的问题是第二个,并且您不想执行(1)中建议的复杂解决方案,则应为每个用户配置AWS凭据。

您可以执行以下操作:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM