Невозможно поместить данные / объект в корзину S3 с помощью Glue Job, когда включено шифрование KMS
У меня есть задание Glue, которое извлекает данные из одной корзины s3 и передает / помещает их в другую. Моя работа работает правильно, если я отключаю шифрование KMS, но не работаю с включенным шифрованием KMS.
Ошибка: произошла ошибка при вызове o79.pyWriteDynamicFrame. Доступ запрещен (Сервис: Amazon S3; Код состояния: 403; Код ошибки: AccessDenied)
Я также добавил эту политику
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:region:account-name:key/kms-encryptionkey"
]
}
Предложите, как я могу передавать данные между корзинами s3, используя Glue с включенным шифрованием KMS.
2 ответа
Сначала необходимо проверить, разрешает ли политика ключей KMS доступ к роли IAM, используемой Glue, поскольку недостаточно только разрешения IAM. Вы также можете включить роль IAM в ключевую политику, и это будет одним из подходов.
Если вы хотите дать разрешение KMS через политику IAM, добавьте следующие действия API:
1> Чтобы положить объект и зашифровать его, добавьте "kms:GenerateDataKey"
с идентификатором ключа в качестве ресурса.
2> Для GetObject (и расшифровать его), "kms:Decrypt"
(что у вас есть)
Включение шифрования в задании Glue означает, что вы хотите писать объекты с использованием ключа KMS, поэтому вам необходимо разрешить действие "kms:Encrypt".
Действие "kms:Decrypt" необходимо, если только ваши входные данные зашифрованы SSE с помощью KMS:
Если вы планируете получить доступ к источникам и целям Amazon S3, которые зашифрованы с помощью SSE-KMS, то прикрепите политику, которая позволяет сканерам AWS Glue, заданиям и конечным точкам разработки расшифровывать данные.