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": "*"
    }
]

}