我的 AWS CLI 无法使用 sudo

Cha*_*HAM 6 shell aws-cli

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

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

其实,我并配置了两个sudo aws configureaws configure

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

小智 9

您可能必须使用 -E 运行 sudo 以保留由 aws cli 设置的环境变量。
sudo -E ./test.sh


Gus*_*uss 3

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