Не удается создать политику доступа Amazon S3 с помощью terraform

#amazon-web-services #amazon-s3 #terraform #aws-policies #aws-roles

Вопрос:

Я пытаюсь создать следующую политику, чтобы предоставить полный доступ к Amazon S3 одному из моих определений задач (ECS). Это код терраформирования, который я использую:

 data "aws_iam_policy_document" "inline_policy_s3" {
  version = "2012-10-17"
  statement {
    sid       = ""
    actions   = ["sts:AssumeRole", "s3:*"]
    effect    = "Allow"
    resources = ["*"]

    principals {
      type        = "Service"
      identifiers = ["ecs-tasks.amazonaws.com"]
    }
  }
}

resource "aws_iam_role" "task_role" {
  name               = "ecs_service_task_role"
  assume_role_policy = data.aws_iam_policy_document.inline_policy_s3.json
}

 

Проблема в том, что я получаю эту ошибку при запуске terraform apply :

 ╷
│ Error: Error creating IAM Role ecs_service_task_role: MalformedPolicyDocument: Has prohibited field Resource
│       status code: 400, request id: 25afe8f8-cc66-4533-8f66-9a1f2aeb656b
│ 
│   with module.service.aws_iam_role.task_role,
│   on service/task_role_policy.tf line 16, in resource "aws_iam_role" "task_role":
│   16: resource "aws_iam_role" "task_role" {
│ 
╵
 

Я попытался изменить некоторые атрибуты политики, но не могу найти проблему. Есть идеи, что происходит?

Ответ №1:

Политики Thrust не имеют resources и не могут иметь никаких других разрешений, кроме sts:AssumeRole . Так и должно быть:

 data "aws_iam_policy_document" "inline_policy_s3" {
  version = "2012-10-17"
  statement {
    sid       = ""
    actions   = ["sts:AssumeRole"]
    effect    = "Allow"

    principals {
      type        = "Service"
      identifiers = ["ecs-tasks.amazonaws.com"]
    }
  }
}
 

Для ваших разрешений s3 вам необходимо создать их, например, с помощью inline_policy.

Комментарии:

1. Привет, я попытался добавить свои разрешения S3 с помощью встроенной политики, но, похоже, это не работает, моя задача ECS не может получить доступ к ведру (получение 403). Это и есть код gist.github.com/antoniogamiz/4cc6f81d488ee811e305e91c0fe8d126 . Ты знаешь, что происходит? Должен ли я открыть для этого еще один вопрос?