我有一个我在AWS Glue中创建的爬虫,它在成功完成后不会在数据目录中创建表。
爬虫需要大约20秒才能运行,日志显示它已成功完成。 CloudWatch日志显示:
我不知道为什么没有创建数据目录中的表。 AWS Docs对调试没有多大帮助。
答案 0 :(得分:12)
检查与抓取工具关联的IAM角色。很可能你没有正确的许可。
创建爬网程序时,如果选择创建IAM角色(默认设置),则它将为您指定的S3对象创建策略。如果以后编辑爬网程序并仅更改S3路径。与爬网程序关联的角色将无权访问新的S3路径。
答案 1 :(得分:0)
如果目标数据库中有现有表,则爬网程序可能会将新文件与现有表关联,而不是创建新表。
当数据或文件夹结构中存在相似性时,Glue可能会将其解释为分区。
有时我还需要刷新数据库的表格列表以显示新的数据库。
答案 2 :(得分:0)
您可以尝试排除s3存储桶中的某些文件,这些被排除的文件应出现在日志中。我发现它有助于调试搜寻器发生的情况。
答案 3 :(得分:0)
这是我的示例角色JSON,它允许胶水访问s3并创建表。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DeleteTags",
"ec2:CreateTags"
],
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:security-group/*",
"arn:aws:ec2:*:*:network-interface/*"
],
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys": "aws-glue-service-resource"
}
}
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"cloudwatch:PutMetricData",
"ec2:DeleteNetworkInterface",
"s3:ListBucket",
"s3:GetBucketAcl",
"logs:PutLogEvents",
"ec2:DescribeVpcAttribute",
"glue:*",
"ec2:DescribeSecurityGroups",
"ec2:CreateNetworkInterface",
"s3:GetObject",
"s3:PutObject",
"logs:CreateLogStream",
"s3:ListAllMyBuckets",
"ec2:DescribeNetworkInterfaces",
"logs:AssociateKmsKey",
"ec2:DescribeVpcEndpoints",
"iam:ListRolePolicies",
"s3:DeleteObject",
"ec2:DescribeSubnets",
"iam:GetRolePolicy",
"s3:GetBucketLocation",
"ec2:DescribeRouteTables"
],
"Resource": "*"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "s3:CreateBucket",
"Resource": "arn:aws:s3:::aws-glue-*"
},
{
"Sid": "VisualEditor3",
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "*"
}
]
}
答案 4 :(得分:0)
答案 5 :(得分:0)
我遇到了同样的问题,正如其他人所建议的那样,我试图修改现有的IAM角色,以将新的S3存储桶作为资源包括在内,但是由于某些原因它没有用。然后,我从头开始创建了一个全新的角色……这次起作用了。另外,我对AWS的一个大问题是“为什么由于错误的附加IAM策略导致此访问被拒绝错误未显示在Cloud Watch日志中?”这使得调试变得困难。
答案 6 :(得分:0)
我遇到了 Ray 提到的类似 IAM 问题。但就我而言,我没有在bucket名称后添加星号(*),这意味着爬虫没有进入子文件夹,也没有创建表。
错误:
{
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-name"
]
}
],
"Version": "2012-10-17"
}
正确:
{
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-name*"
]
}
],
"Version": "2012-10-17"
}