AWS Glue Crawler не создает таблицу

У меня есть сканер, созданный в AWS Glue, который не создает таблицу в каталоге данных после успешного завершения.

Сканеру требуется примерно 20 секунд для запуска, и журналы показывают, что он успешно завершен. Журнал CloudWatch показывает:

  • Тест: запуск сканирования для сканера
  • Тест: классификация завершена, результаты записываются в БД
  • Контрольный показатель: завершена запись в каталог.
  • Тест: поисковый робот завершил работу и находится в состоянии готовности

Я не понимаю, почему не создаются таблицы в каталоге данных. Документы AWS не очень помогают при отладке.


person Vince    schedule 01.11.2017    source источник
comment
Вы нашли на это ответ?   -  person Stephen Paulger    schedule 15.03.2018


Ответы (7)


проверьте роль IAM, связанную с поисковым роботом. Скорее всего, у вас нет правильного разрешения.

Если при создании искателя вы выбрали создание роли IAM (параметр по умолчанию), он создаст политику только для указанного вами объекта S3. если позже вы отредактируете краулер и измените только путь S3. Роль, связанная с поисковым роботом, не будет иметь разрешения на новый путь S3.

person Ray    schedule 10.01.2018
comment
Роль службы клея по умолчанию включает только префиксы S3, такие как glue-public, мне нужно было изменить его, чтобы включить сегмент, который я хотел сканировать. - person bphi; 11.07.2018
comment
Есть идеи, почему это неправильное разрешение не отображается в журналах как исключение? - person Simon Lepkin; 14.12.2018
comment
У меня это сработало, я удалил старую роль, отредактировал краулер и создал новую, затем в каталоге были созданы таблицы, ценим совет! - person Abrham Smith; 15.07.2020
comment
Спасибо за это. Я потратил 30 минут на проверку журналов и не смог понять, что происходит. Это было по делу ... ‹3 - person Xonshiz; 31.08.2020
comment
Вот это да. Причина номер 953, почему AWS - это полная противоположность простоте использования. Насколько сложно это исправить? - person Ryanman; 06.10.2020

У меня была та же проблема, как и советовали другие. Я пытался пересмотреть существующую роль IAM, чтобы включить новую корзину S3 в качестве ресурса, но по какой-то причине это не сработало. Затем я создал совершенно новую роль с нуля ... на этот раз она сработала. Кроме того, у меня есть один большой вопрос для AWS: «Почему эта ошибка отказа в доступе из-за неверно подключенной политики IAM не отображается в журнале наблюдения за облаком?» Это затрудняет отладку.

person Mohammad Sadoughi    schedule 01.04.2020

Если у вас есть существующие таблицы в целевой базе данных, искатель может связать ваши новые файлы с существующей таблицей, а не создавать новую.

Это происходит, когда есть сходства в данных или структуре папок, которые Glue может интерпретировать как разбиение на разделы.

Также иногда мне приходилось обновлять список таблиц базы данных, чтобы появились новые.

person Kris Bravo    schedule 03.05.2018

Вы можете попробовать исключить некоторые файлы из корзины s3, и эти исключенные файлы должны появиться в журнале. Я считаю его полезным при отладке того, что происходит со сканером.

person cozyss    schedule 30.07.2018

Вот моя примерная роль JSON, которая позволяет Glue получить доступ к 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": "*"
    }
]

}

person Dheeraj    schedule 15.04.2019

У меня была такая же проблема, решение было указать схему моей таблицы.

Сведения о подключении

person Everton Miranda De Oliveira    schedule 22.10.2019

У меня была аналогичная проблема с 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"
}
person user2210411    schedule 26.03.2021