【问题标题】:User permissions to authorize AWS CLI via metadata inside EC2用户通过 EC2 内的元数据授权 AWS CLI 的权限
【发布时间】:2026-02-04 15:45:01
【问题描述】:

我正在尝试通过 CLI 从我的 EC2 实例访问 S3 存储桶,但我无法对我的用户执行此操作。

实例是用 ansible 构建的,有 2 个用户,一个是 ec2-user,另一个是 test-user。当通过 SSH 和用户 ec2-user 连接到实例时,我可以轻松地从 s3 存储桶下载文件,但是当使用第二个用户登录时,我得到了 An error occurred (403) when calling the HeadObject operation: Forbidden

我应该授予测试用户什么权限才能从存储桶中获取数据?

【问题讨论】:

  • 最好的方法是对 s3 使用实例角色。你考虑过吗?
  • 我已经将角色附加到具有 S3 权限的实例。问题在于实例上有两个用户。 root 之一 - ec2-user 可以从 S3 下载数据,但另一个 - test-user 不能。这是 ec2-user 有权授权 test-user 缺乏的 CLI 的问题。
  • 确实应该可以。您确定第二个用户没有其他凭据,例如通过环境变量或~/.aws中的一些配置文件?
  • 就是这样。谢谢
  • 很高兴它成功了。如果您不介意,我将提供答案以供将来参考。我们将不胜感激。

标签: linux amazon-web-services amazon-s3 amazon-ec2 ansible


【解决方案1】:

基于 cmets。

使用instance role 的实例,因此两个用户对s3 具有相同的访问权限。但是,test-user 的访问失败,因为用户使用的是不同的 IAM 凭证然后是来自实例角色的那些。

凭据来自环境变量或.aws/,它们具有优先级然后是实例角色,导致访问被拒绝。

【讨论】: