34

我有一个在 AWS Glue 中创建的爬虫,它在成功完成后不会在数据目录中创建表。

爬虫运行大约需要 20 秒,日志显示它已成功完成。CloudWatch 日志显示:

  • 基准测试:为 Crawler 运行 Start Crawl
  • 基准测试:分类完成,将结果写入数据库
  • 基准:完成写入目录
  • Benchmark:爬虫已完成运行,处于就绪状态

我不知道为什么没有创建数据目录中的表。AWS Docs 对调试没有多大帮助。

4

6 回答 6

43

检查与爬虫关联的 IAM 角色。很可能您没有正确的权限。

当您创建爬虫时,如果您选择创建一个 IAM 角色(默认设置),那么它将仅为您指定的 S3 对象创建一个策略。如果稍后您编辑爬虫并仅更改 S3 路径。与爬虫关联的角色将无权访问新的 S3 路径。

于 2018-01-10T22:21:56.223 回答
3

我遇到了同样的问题,正如其他人建议的那样,我尝试修改现有的 IAM 角色,将新的 S3 存储桶作为资源包含在内,但由于某种原因它不起作用。然后我从头开始创建了一个全新的角色……这次成功了。此外,我对 AWS 的一个大问题是“为什么由于附加的错误 IAM 策略而导致的访问被拒绝错误不会显示在 Cloud watch log 中??” 这使得调试变得困难。

于 2020-04-01T14:35:19.217 回答
2

如果您在目标数据库中有现有表,则爬网程序可能会将您的新文件与现有表相关联,而不是创建新表。

当 Glue 可能将其解释为分区的数据或文件夹结构中存在相似性时,就会发生这种情况。

此外,有时我需要刷新数据库的表列表以显示新的数据库。

于 2018-05-03T00:11:45.977 回答
1

您可以尝试排除 s3 存储桶中的一些文件,这些排除的文件应该会出现在日志中。我发现它有助于调试爬虫发生的事情。

于 2018-07-30T18:45:40.433 回答
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": "*"
    }
]

}

于 2019-04-15T12:30:49.840 回答
0

我遇到了 Ray 提到的类似 IAM 问题。但是在我的情况下,我没有在存储桶名称后添加星号(*),这意味着爬虫没有进入子文件夹,也没有创建表。

错误的:

{
   "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"
}
于 2021-03-26T08:07:23.510 回答