Я пытался зарегистрировать свои AWS S3 места в сервисе формирования озера AWS, используя Terraform. Я создал встроенную политику для корзины, которая разрешает доступ на чтение и запись. Затем я пытаюсь прикрепить встроенную политику с ролью службы следующим образом.
# main.tf
resource "aws_iam_service_linked_role" "lakeformation_service_role" {
aws_service_name = "lakeformation.amazonaws.com"
}
data "template_file" "bucket_policy" {
template = "${file("${path.module}/bucket_policy_template.json")}"
vars = {
bucket_name = var.s3_bucket_name
}
}
resource "aws_iam_role_policy" "s3_bucket-inline-policy" {
name = "LakeFormationDataAccessPolicyForS3"
role = aws_iam_service_linked_role.lakeformation_service_role.name
policy = data.template_file.bucket_policy.rendered
}
Я получаю следующее сообщение об ошибке.
Error putting IAM role policy LakeFormationDataAccessPolicyForS3: UnmodifiableEntity: Cannot perform the operation on the protected role 'AWSServiceRoleForLakeFormationDataAccess' - this role is only modifiable by AWS
Я не уверен, что это правильный путь регистрации путей s3.