Windows AWS CLI "Unable to locate credentials" 当 运行 作为系统账户时
Windows AWS CLI "Unable to locate credentials" when running as System Account
我无法 运行 来自 cmd.exe 运行 的任何 AWS CLI 命令作为系统帐户。
根据调试输出,当尝试获取 EC2 机器的 IAM 角色时,问题可能出在获取 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
要复制问题:
- 将 PsExec 下载到 EC2 的 C:\Temp (https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx)
- 打开 cmd 和 运行 C:\Temp\PSTools\PsExec.exe -i -s cmd.exe(这将作为本地系统打开 cmd)
- 运行 任何 'aws' 命令(例如 aws s3 ls)
如果只是远程进入 EC2 和 运行 cmd(不是作为系统帐户),那么 'aws s3 ls' 会按预期工作...即列出 EC2 IAM 角色有权查看的所有 s3 存储桶。
读这个:
http://windowsitpro.com/systems-management/psexec
也许可以尝试使用 -u 在框中指定一个用户来执行 运行 您的命令?
我猜这是一个问题,因为没有设置环境变量、AWS 配置路径或其他东西。
无论您可以远程进入哪个用户并运行 cmd,请在psexec.exe命令的-u参数中传递该用户名,我希望它会起作用。
问题是为系统帐户配置了代理,因此无法访问本地 EC2 元数据 URL。
很难找到,因为隐藏在 windows 框的注册表中。我必须以系统帐户身份打开 regedit,然后转到 IE 并在那里找到它。刚刚删除了那个键并且工作正常。
我无法 运行 来自 cmd.exe 运行 的任何 AWS CLI 命令作为系统帐户。
根据调试输出,当尝试获取 EC2 机器的 IAM 角色时,问题可能出在获取 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
要复制问题:
- 将 PsExec 下载到 EC2 的 C:\Temp (https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx)
- 打开 cmd 和 运行 C:\Temp\PSTools\PsExec.exe -i -s cmd.exe(这将作为本地系统打开 cmd)
- 运行 任何 'aws' 命令(例如 aws s3 ls)
如果只是远程进入 EC2 和 运行 cmd(不是作为系统帐户),那么 'aws s3 ls' 会按预期工作...即列出 EC2 IAM 角色有权查看的所有 s3 存储桶。
读这个: http://windowsitpro.com/systems-management/psexec
也许可以尝试使用 -u 在框中指定一个用户来执行 运行 您的命令?
我猜这是一个问题,因为没有设置环境变量、AWS 配置路径或其他东西。
无论您可以远程进入哪个用户并运行 cmd,请在psexec.exe命令的-u参数中传递该用户名,我希望它会起作用。
问题是为系统帐户配置了代理,因此无法访问本地 EC2 元数据 URL。
很难找到,因为隐藏在 windows 框的注册表中。我必须以系统帐户身份打开 regedit,然后转到 IE 并在那里找到它。刚刚删除了那个键并且工作正常。