【问题标题】:I am unable to create bucket on S3 from EC2,also unable to access/upload files into S3 bucket from EC2我无法从 EC2 在 S3 上创建存储桶,也无法从 EC2 访问/上传文件到 S3 存储桶
【发布时间】:2018-05-05 19:31:57
【问题描述】:

当我尝试从 EC2 访问 S3 服务时,对于不同的操作(如创建存储桶、列出存储桶、列出对象等)出现 Access Denied 错误。我没有更改 unix 用户密码。即使使用 root 用户,我也无法访问 S3 服务。

1] 命令 - aws s3 ls

错误:调用 ListBuckets 操作时发生错误(AccessDenied):访问被拒绝

2] 命令 - aws s3 ls htcdsb-dev

错误:调用 ListObjects 操作时发生错误 (AccessDenied):访问被拒绝

普通 unix 用户会出现上述错误。对于 root 用户,会生成以下错误。

1] 命令 - aws s3 ls

Error : 调用ListBuckets操作时发生错误(AuthorizationHeaderMalformed):授权头格式错误;授权组件“Credential=AWSAccessKeyId=A******************Q/20171122/us-east-1/s3/aws4_request”格式错误

(我故意在此处放置星号(*)以隐藏我的访问密钥)。除了 S3,我还可以访问 IAM 和 AWS Glue 等其他服务。

我无法理解为什么会出现此问题。我也无法理解 Unix 用户和 AWS S3 操作之间的联系。

我创建了 IAM 角色,也运行 AWS 配置和重启 EC2 实例,但也有同样的问题。

IAM 角色:

 HT_EC2_User

AWS 配置文件内容:

 cat .aws/config
 [default]
 region = us-east-1
 output = None

【问题讨论】:

  • 您(您的 IAM 用户)是否有权访问 S3,这将是我的第一个问题?
  • 要访问 AWS 服务,您需要 AWS 用户的凭证。要指定 AWS 凭证,请运行 aws configure(每个 unix 用户单独保存这些凭证)。 (此外,一位 AWS 用户可能无权访问特定存储桶)
  • 您是否检查了正确的 IAM 策略附加到 AWS 用户? S3 存储桶是否有任何自定义策略?
  • 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
  • 您能否验证您正在运行的 AWS CLI 版本(最新的是 aws-cli/1.12.0)以及如果需要升级 CLI 版本?

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


【解决方案1】:

很可能,您的用户和 root 用户配置了不同的凭据。您可以在以用户(不是超级用户/root)身份登录时运行 aws configure 并使用访问密钥配置 CLI 吗? 出现格式错误的请求可能有多种原因,您能否验证 .aws/config 文件的内容?

【讨论】:

    【解决方案2】:

    从 EC2 到 S3 的访问由您分配给 EC2 的 IAM 角色控制。确保对应的 IAM 角色具有访问 S3 存储桶的适当权限

    以下是一个示例权限 sn-p,您可以将其添加到您的 EC2 IAM 角色

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "s3:PutObject",
                    "s3:DeleteObject",
                    "s3:List*",
                    "s3:Get*"
                ],
                "Resource": [
                    "arn:aws:s3:::MyS3BucketName/*",
                    "arn:aws:s3:::MyS3BucketName"
                ],
                "Effect": "Allow"
            }
        ]
    }
    

    【讨论】:

    • 并非如此...当 IAM 角色附加到实例并且实例配置文件在查找凭证时按顺序排在最后时,可以使用永久访问密钥。
    • 同意。但是,当您从 EC2 实例执行时,出于安全原因,您会避免使用访问密钥。您可以在本地机器上运行时使用它们
    • 是的,我知道并且完全低估了 :) 在这种情况下,OP 没有提到 EC2 实例正在使用 IAM 角色。因此,我们可以建议对实例使用 IAM 角色作为最佳实践,但不能断定这是由于实例配置文件的权限问题造成的。
    猜你喜欢
    • 2018-09-27
    • 2020-05-20
    • 2016-03-07
    • 2021-07-03
    • 2016-01-22
    • 2018-03-25
    • 2019-01-14
    • 1970-01-01
    • 2019-09-29
    相关资源
    最近更新 更多