附加了管理员策略的爬虫的 AWS Glue 访问被拒绝

AWS Glue Access denied for crawler with administrator policy attached

我正在尝试 运行 爬虫跨过我帐户中包含两个 csv 文件的 s3 数据存储。但是,当我尝试 运行 爬虫时,没有加载任何表,并且我在 cloudwatch 中看到每个文件的以下错误:

这特别奇怪,因为 IAM 角色附加了 AdministratorAccess 策略,所以不应该有任何访问被拒绝的问题。

如有任何帮助,我们将不胜感激。

确保附加到您的 IAM 角色的策略具有这些:

  1. AmazonS3FullAccess
  2. AwsGlueConsoleFullAccess
  3. AwsGlueServicerole。

检查您正在抓取的文件是否已加密。如果是,那么您的 Glue 角色可能没有允许其解密的策略。

如果是这样,它可能需要这样的东西:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"
    ]
  }
}

我确定我没有遗漏其他建议中提供的内容,但我没有遗漏。事实证明,我的组织对读取存储桶还有另一个级别的限制,但我不确定它是什么。

我们在 S3 爬虫中遇到了类似的问题。根据 AWS,S3 爬虫与 JDBC 爬虫不同,不会在您的 VPC 中创建 ENI。这意味着您的存储桶策略必须允许从 VPC 外部进行访问。

检查您的存储桶策略在 S3:* 上的某处没有明确拒绝。如果有,请务必在语句中添加条件,并在语句中添加条件中的角色 id 作为 aws:userId。请记住角色 ID 和角色 arn 不是一回事。

获取角色id:

aws iam get-role --role-name Test-Role

输出:

{
  "Role": {
      "AssumeRolePolicyDocument": "<URL-encoded-JSON>",
      "RoleId": "AIDIODR4TAW7CSEXAMPLE",
      "CreateDate": "2013-04-18T05:01:58Z",
      "RoleName": "Test-Role",
      "Path": "/",
      "Arn": "arn:aws:iam::123456789012:role/Test-Role"
  }
}  

您可能还需要添加一个状态,允许 s3:putObject*s3:getObject* 与 aws 委托人担任角色。假定的角色类似于:

arn:aws:sts::123456789012:assumed-role/Test-Role/AWS-Crawler

希望对您有所帮助。

在我的例子中,问题是:爬虫配置在与它要爬网的 S3 存储桶不同的区域。在与我的 S3 存储桶相同的区域配置新的爬虫后,问题就解决了。

这是一个 S3 存储桶策略问题。我制作了我的表格 public(我知道这是个糟糕的政策)并且它奏效了。