Windows AWS CLI "Unable to locate credentials"作为系统帐户运行时



我无法从cmd.exe中以系统帐户运行任何AWS CLI命令。

根据调试输出,看起来问题可能是在尝试获取EC2机器的IAM-Role时获得404:

C:>aws --debug s3 ls
2016-09-02 15:47:31,101 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: iam-role
2016-09-02 15:47:35,608 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTP connection (1): au-aws-igw.analytics.pvt
2016-09-02 15:47:35,674 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "GET http://169.254.169.254/latest/meta-data/iam/security-credentials/ HTTP/1.1" 404 345

复制问题:

  1. 下载PsExec到C:Temp of EC2 (https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx)
  2. 打开cmd并运行C:TempPSToolsPsExec.exe -i -s cmd.exe(这将打开cmd作为本地系统)
  3. 运行任何'aws'命令(例如aws s3 ls)

如果只是远程到EC2并运行cmd(不是作为系统帐户),那么'aws s3 ls'按预期工作…即列出EC2 IAM Role可以访问的所有s3桶。

问题是为系统帐户配置了代理,因此无法访问本地EC2元数据URL。

这是相当难找到,因为它隐藏在注册表在windows盒子。我必须打开regedit作为系统帐户,然后进入IE,在那里找到它。把钥匙拿掉就行了。

阅读以下内容:http://windowsitpro.com/systems-management/psexec

也许可以尝试使用-u在机器上指定一个用户来运行您的命令?

我猜这是一个问题,没有设置环境变量,路径到你的AWS配置或其他东西。

无论您可以远程进入哪个用户并运行cmd,在psexec.exe命令的-u参数中传递该用户名,我希望它能工作。

相关内容

最新更新