我的AWS CLI无法使用sudo

时间:2016-10-19 09:42:38

标签: shell aws-cli

我有使用aws cli的shell脚本,我的脚本将使用sudo执行(例如:sudo ./test.sh

但我收到了消息:Unable to locate credentials. You can configure credentials by running "aws configure".

实际上,我为sudo aws configureaws configure

配置了配置文件

我做错了什么? 请帮忙。 谢谢!

2 个答案:

答案 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>

你应该:

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