当我尝试从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
答案 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"
}
]
}