AWS Glue Crawler не создает таблицу
У меня есть искатель, который я создал в AWS Clue, который не создает таблицу в Каталоге данных после ее успешного завершения.
Искатель занимает примерно 20 секунд для запуска, и журналы показывают, что он успешно завершен. Журнал CloudWatch показывает:
- Бенчмарк: запуск сканирования для сканера
- Бенчмарк: классификация завершена, запись результатов в DB
- Тест: Готовое письмо в каталог
- Benchmark: Crawler закончил работу и находится в состоянии готовности
Я не понимаю, почему таблицы в каталоге данных не создаются. Документы AWS не очень помогают отладке.
Ответы
Ответ 1
проверьте роль IAM, связанную с искателем. Скорее всего, у вас нет правильного разрешения.
При создании искателя, если вы решите создать роль IAM (параметр по умолчанию), тогда он создаст политику только для указанного объекта S3. если позже вы отредактируете искатель и измените только путь S3. Роль, связанная с искателем, не будет иметь права на новый путь S3.
Ответ 2
Если у вас есть таблицы в целевой базе данных, сканер может связать ваши новые файлы с существующей таблицей, а не создавать новую.
Это происходит, когда есть сходства в данных или структуре папок, которые клей может интерпретировать как разделение.
Также иногда мне приходилось обновлять список таблиц базы данных, чтобы отображать новые.
Ответ 3
Вы можете попробовать исключить некоторые файлы из корзины s3, и эти исключенные файлы должны появиться в журнале. Я нахожу это полезным в отладке того, что происходит с гусеничным механизмом.
Ответ 4
Вот мой пример роли 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": "*"
}
]
}