小编ero*_*ond的帖子

org.apache.hadoop.security.AccessControlException:尝试使用EC2上的Hadoop Java API通过s3n URI访问S3存储桶时权限被拒绝

脚本

我创建一个名为"my-role"的AWS IAM角色,将EC2指定为可信实体,即使用信任关系策略文档:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

该角色具有以下策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:GetBucketAcl",
        "s3:GetBucketCORS",
        "s3:GetBucketLocation",
        "s3:GetBucketLogging",
        "s3:GetBucketNotification",
        "s3:GetBucketPolicy",
        "s3:GetBucketRequestPayment",
        "s3:GetBucketTagging",
        "s3:GetBucketVersioning",
        "s3:GetBucketWebsite",
        "s3:GetLifecycleConfiguration",
        "s3:GetObject",
        "s3:GetObjectAcl",
        "s3:GetObjectTorrent",
        "s3:GetObjectVersion",
        "s3:GetObjectVersionAcl",
        "s3:GetObjectVersionTorrent",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions",
        "s3:ListMultipartUploadParts",
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl",
        "s3:RestoreObject"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我使用AWS CLI从命令行启动EC2实例(Amazon Linux 2014.09.1),将"my-role"指定为实例配置文件,一切正常.我通过运行以下命令验证实例是否有效地假定为"my-role":

  • curl http://169.254.169.254/latest/meta-data/iam/security-credentials/查询实例元数据,从中我得到响应my-role;
  • curl …

java hadoop amazon-s3 amazon-web-services tomcat7

2
推荐指数
1
解决办法
4564
查看次数

标签 统计

amazon-s3 ×1

amazon-web-services ×1

hadoop ×1

java ×1

tomcat7 ×1