Amazon web services Windows EC2中的AWS CLI无法使用角色访问S3

Amazon web services Windows EC2中的AWS CLI无法使用角色访问S3,amazon-web-services,amazon-ec2,command-line-interface,amazon-iam,role,Amazon Web Services,Amazon Ec2,Command Line Interface,Amazon Iam,Role,我对AWS很陌生。我创建了一个IAM角色,该角色可以完全访问S3。我将此角色分配给了一个Windows ServerEC2实例。然后,我在该实例上安装了CLI。然后,我使用RDP远程访问该实例,并启动CMD windows,然后键入 aws s3 ls 它抱怨说 Unable to locate credentials. You can configure credentials by running "aws configure". 既然此EC2已被分配了对S3具有完全访问权限的角色,为什

我对AWS很陌生。我创建了一个IAM角色,该角色可以完全访问S3。我将此角色分配给了一个Windows ServerEC2实例。然后,我在该实例上安装了CLI。然后,我使用RDP远程访问该实例,并启动CMD windows,然后键入

aws s3 ls
它抱怨说

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

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

要将AWS CLI与IAM角色一起使用,请创建一个。您可以指定角色的ARN以及有权访问该角色的配置文件的名称,而不是使用凭据配置此配置文件。

感谢John Rotenstein的帮助。你给我指明了正确的方向。我从头开始创建了一个新实例,一切正常。我在上一个实例上安装了IIS和ASP.NET。这可能是原因吗?

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

运行
aws配置列表
将显示您没有任何凭据,因为消息中显示。这意味着服务器无法执行以下操作:

# 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配置列表将显示已添加凭据


我发现在Windows中解决此问题有助于

您已正确完成所有操作,因此结果很奇怪。如果在EC2实例上使用web浏览器转到
http://169.254.169.254/latest/meta-data/iam/security-credentials/
?如果是,请将角色名称附加到该URL,并确认是否显示了安全凭据(例如访问密钥和密钥)。每次元数据URL超时时,请求都会超时吗?如果打开
http://169.254.169.254/latest/meta-data/
在EC2实例上的浏览器中?听起来好像IAM角色没有连接到实例。不,我从EC2实例的浏览器中没有得到任何信息-它超时。我再次检查了连接到EC2的IAM角色:它具有AmazonS3完全访问和管理员访问。谢谢Ashan。我去看看。然而,在LinuxEC2中,我所做的将起作用。为什么它不能在Windows Server EC2中工作?当然欢迎您安装IIS和ASP.NET——这不应该“破坏”实例。很难知道是什么原因导致了这个问题——但是从一个新实例开始并再次加载软件通常更容易。事实上,这是最佳实践方法,因为这意味着您知道如何在将来重建实例。我目前面临着同样的问题。请告诉我您是如何解决此问题的。这是在Windows Server 2019上运行时唯一解决我的问题的方法。终于能够解决