amazon-web-services - AWS EC2 IAM 角色访问在 S3 上被拒绝

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

我已经启动了一个具有 IAM 角色“webapp”的 EC2 实例。角色已附加,我可以使用

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/webapp
{
  "Code" : "Success",
  "LastUpdated" : "2016-01-04T06:44:50Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "xxx",
  "SecretAccessKey" : "xxx",
  "Token" : "xxx",
  "Expiration" : "2016-01-04T12:46:27Z"
}

webapp 角色具有 S3 的附加策略
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

但我无法访问 S3 上的对象。我正在使用 aws-php-sdk
require_once 'vendor/autoload.php';
use Aws\S3\S3Client;

$client = S3Client::factory(array('region'  => 'us-west-2','version'=>'2006-03-01'));
  $result = $client->getObject(array(
    'Bucket' => 'test-bkt88767',
    'Key'    => "file.txt",
  ));
echo $result['Body'] . "\n";

我收到 403 禁止
PHP Fatal error:  Uncaught exception 'Aws\S3\Exception\S3Exception' with message 'Error executing "GetObject" on "https://s3-us-west-2.amazonaws.com/test-bkt88767/file.txt"; AWS HTTP error: Client error: `GET https://s3-us-west-2.amazonaws.com/test-bkt88767/file.txt` resulted in a `403 Forbidden` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>995F9A (truncated...)
 AccessDenied (client): Access Denied - <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>995F9AC51CC2164F</RequestId><HostId>JPKyfP1LBLW5ky2wH9t2CEjHrKT0tI9zgyXHU/qcJWvBoOwhK7O0dzl1wCjjzV58UhKZVHXvFFg=</HostId></Error>'

我还需要更改存储桶权限吗?或者我在 conf 上做错了什么。 EC2的?

最佳答案

检查您在 IAM 中的 webapp 角色,它应该是这样的:

{
    "Action": [
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::your_bucket",
    "Effect": "Allow"
},
{
    "Action": [
        "s3:GetObject"
    ],
    "Resource": "arn:aws:s3:::your_bucket/*",
    "Effect": "Allow"
}

IAM Role

关于amazon-web-services - AWS EC2 IAM 角色访问在 S3 上被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34586332/

相关文章:

python - 在 Serverless Lambda 函数中访问/tmp 或其他临时文件结构

c# - 使用 AWS Cognito 登录用户/验证用户

ruby-on-rails - Rails + Carrierwave + Ckeditor + Fog + S3 - 文件没有指向亚马逊

java - 在 Amazon S3 上解压 ZIP 文件

amazon-ec2 - 亚马逊负载均衡器稳定运行的标准是什么?

linux - AWS AutoScaling 无法扩展

amazon-web-services - 允许ECS任务访问RDS

amazon-s3 - 使用存储桶级别权限调用 PutObject 操作时出现访问被拒绝的情况

使用 docker-machine 部署时 docker COPY 不起作用

angular - 如何在端口 80 上运行 ng serve