我无法从EC2在S3上创建存储桶,也无法从EC2访问/上传文件到S3存储桶

时间:2017-11-22 06:38:52

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

当我尝试从EC2访问S3服务时,为创建存储桶,列表存储桶,列表对象等不同操作获取访问被拒绝错误。我没有更改unix用户密码。即使使用root用户,我也无法访问S3服务。

1]命令 - aws s3 ls

  

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

2]命令 - aws s3 ls htcdsb-dev

  

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

正常的unix用户会遇到以上错误。对于root用户,下面会生成错误。

1]命令 - aws s3 ls

  

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

(我故意把星号(*)放在这里隐藏我的访问密钥)。除了S3,我能够访问其他服务,如IAM和AWS Glue。

我无法理解问题发生的原因。此外,我无法理解Unix用户和AWS S3操作之间的链接。

我已经创建了IAM角色,也运行了AWS configure和Reboot EC2实例,但也遇到了同样的问题。

IAM角色:

select g.name as name 
FROM Gym  g 
LEFT JOIN g.listOfEquipment listOfEquipment 
WHERE (((:listOfEquipment) is null) 
    OR g.id in (
    select g.id as name 
    FROM Gym  g 
    LEFT JOIN g.listOfEquipment listOfEquipment
    WHERE listOfEquipment.id in (:listOfEquipment)) 
    GROUP BY g.id
    HAVING count(g.id) = #{#listOfEquipment.size}   
)) 
AND (((:listOfAmenity) is null) 
    OR g.id in (
    select g.id as name 
    FROM Gym  g 
    LEFT JOIN g.listOfAmenity listOfAmenity
    WHERE listOfAmenity.id in (:listOfAmenity)) 
    GROUP BY g.id
    HAVING count(g.id) = #{#listOfAmenity.size}   
))

AWS配置文件的内容:

 HT_EC2_User

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

以下是您可以添加到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"
        }
    ]
}