【问题标题】:AWS CLI in Windows EC2 cannot use role to access S3Windows EC2 中的 AWS CLI 无法使用角色访问 S3
【发布时间】:2017-06-04 13:40:12
【问题描述】:

我对 AWS 很陌生。我创建了一个对 S3 具有完全访问权限的 IAM 角色。我将此角色分配给 Windows Server EC2 实例。然后我在该实例上安装了 CLI。然后我使用 RDP 远程进入该实例,并启动一个 CMD 窗口,然后输入

aws s3 ls

它抱怨说

Unable to locate credentials. You can configure credentials by running "aws configure".

既然这个 EC2 已经被分配了对 S3 具有完全访问权限的角色,为什么我不能直接访问 S3?

【问题讨论】:

  • 你所做的一切都是正确的,所以结果很奇怪。如果您在该 EC2 实例上使用 Web 浏览器转到 http://169.254.169.254/latest/meta-data/iam/security-credentials/,是否会显示角色名称?如果是这样,请将角色名称附加到该 URL 并确认是否显示了安全凭证(例如访问密钥和秘密密钥)。
  • 请求每次都超时
  • 元数据 URL 超时?如果您在 EC2 实例上的浏览器中打开 http://169.254.169.254/latest/meta-data/,您会得到什么吗?听起来好像 IAM 角色没有附加到实例。
  • 不,我没有从 EC2 实例中的浏览器获得任何信息 - 它已超时。
  • 我再次检查了附加到 EC2 的 IAM 角色:它具有 AmazonS3FullAccess 和 AdministratorAccess。

标签: amazon-web-services amazon-ec2 command-line-interface amazon-iam role


【解决方案1】:

要将 AWS CLI 与 IAM 角色结合使用,您需要创建一个 named profile。您无需使用凭据配置此配置文件,而是指定角色的 ARN 和有权访问它的配置文件的名称。

【讨论】:

  • 谢谢阿山。我会看一看。然而,在 Linux EC2 中,我所做的将起作用。为什么它在 Windows Server EC2 中不起作用?
【解决方案2】:

感谢约翰·罗滕斯坦的帮助。你给我指出了正确的方向。我从头开始创建了一个新实例,一切正常。上一个实例我在上面安装了 IIS 和 ASP.NET。会不会是这个原因?

【讨论】:

  • 当然欢迎您安装 IIS 和 ASP.NET——它们不应“破坏”实例。很难知道是什么导致了问题——但从一个新实例开始并再次加载软件通常更容易。事实上,这是最佳实践方法,因为这意味着您知道将来如何重建实例。
  • 我目前面临同样的问题。请告诉我你做了什么来解决这个问题。
【解决方案3】:

我偶然发现了这篇文章。您收到此消息的原因是因为@John Rotenstein 所说,服务器无法访问元数据。

运行aws config list 将显示您没有任何凭据,如消息所述。这意味着服务器不能执行以下操作:

# 169.254.169.254 is for metadata service
# 169.254.169.250 is for KmsInstanceVpc1
# 169.254.169.251 is for KmsInstanceVpc2

解决这个问题。最好只删除路由并重新添加它们。

"169.254.169.254/32", "169.254.169.253/32", "169.254.169.251/32", "169.254.169.250/32", "169.254.169.249/32", "169.254.169.123/32"

运行aws config list 将显示已添加凭据。

我发现 btuanexpress.net script 在 Windows 中解决此问题会有所帮助

【讨论】:

猜你喜欢
  • 2017-05-27
  • 1970-01-01
  • 2019-10-26
  • 2019-08-15
  • 2016-04-07
  • 1970-01-01
  • 2019-07-08
  • 2017-08-27
  • 2019-06-10
相关资源
最近更新 更多