我正在尝试在包含两个csv文件的帐户中的s3数据存储区上运行搜寻器。但是,当我尝试运行搜寻器时,未加载任何表,并且在cloudwatch中针对每个文件看到以下错误:
这特别奇怪,因为IAM角色附加了AdministratorAccess策略,因此不应存在任何拒绝访问的问题。
任何帮助将不胜感激。
答案 0 :(得分:4)
检查要爬网的文件是否已加密。如果是这样,则您的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"
]
}
}
答案 1 :(得分:1)
确保与您的IAM角色关联的策略具有以下这些条件:
答案 2 :(得分:0)
我确保我不会错过其他建议中提供的内容,但我没有。事实证明,在读取由我的组织强加的存储桶时,存在另一层次的限制,尽管我不确定这是什么。
答案 3 :(得分:0)
我们在使用S3搜寻器时遇到了类似的问题。根据AWS的说法,与JDBC搜寻器不同,S3搜寻器不会在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"
}
}
您可能还需要添加一个状态,该状态允许使用aws主体的s3:putObject*
和s3:getObject*
担任假定角色。假定的角色将类似于:
arn:aws:sts::123456789012:assumed-role/Test-Role/AWS-Crawler
希望这会有所帮助。
答案 4 :(得分:0)
在我的情况下,问题是:搜寻器的配置区域与它要进行搜寻的S3存储桶的区域不同。在与我的S3存储桶相同的区域中配置了新的搜寻器后,问题得以解决。
答案 5 :(得分:0)
这是S3存储桶策略问题。我把我的桌子公开了(我知道这是错误的政策),并且奏效了。