AWS Glueで作成したクローラーがありますが、正常に完了した後、データカタログにテーブルを作成しません。
クローラーの実行には約20秒かかり、ログには正常に完了したことが示されます。 CloudWatchログには以下が表示されます。
データカタログ内のテーブルが作成されない理由がわかりません。 AWS Docsはデバッグにあまり役立ちません。
クローラーに関連付けられているIAMロールを確認してください。ほとんどの場合、正しい許可がありません。
クローラーを作成するときに、IAMロール(デフォルト設定)を作成することを選択した場合、指定したS3オブジェクトのみのポリシーが作成されます。後でクローラーを編集して、S3パスのみを変更する場合。クローラーに関連付けられたロールには、新しいS3パスへのアクセス許可がありません。
ターゲットデータベースに既存のテーブルがある場合、クローラーは、新しいファイルを作成するのではなく、既存のテーブルに新しいファイルを関連付けることがあります。
これは、Glueがパーティション化と解釈するデータまたはフォルダー構造に類似性がある場合に発生します。
また、時々、データベースのテーブルリストを更新して、新しいデータベースを表示する必要がありました。
S3バケットの一部のファイルを除外してみてください。除外されたファイルはログに表示されます。クローラーで何が起こっているかをデバッグするのに役立ちます。
接着剤がs3にアクセスし、テーブルを作成できるようにする私のサンプルロールJSONです。
{
"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": "*"
}
]
}