Создание сервисного клиента в Fargate Task - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь создать клиент службы в задаче Fargate, используя роль IAM уровня задачи.

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

Урезанный код задачи

import (
"fmt"
"github.com/aws/aws-sdk-go-v2/aws/external"
"github.com/aws/aws-sdk-go-v2/service/sns"
)

func main() {
    cfg, err := external.LoadDefaultAWSConfig()
    if err != nil {
        fmt.Println("failed to load config, " + err.Error())
    }
    fmt.Printf("%+v\n", cfg )

    client := sns.New(cfg)
    fmt.Printf("%+v\n", client)
}

Роль Terraformи определения политики ...

TaskExecutions и TaskRole - это, по сути, один и тот же код, хотя и 2 блока: (правильно ??)

resource "aws_iam_role" "++++++++++++" {
  name = "++++++++++++++"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
      "Service": [
        "ecs.amazonaws.com",
        "ecs-tasks.amazonaws.com"
      ]
     },
    "Effect": "Allow",
    "Sid": ""
    }
  ]
}
EOF
}

Политика выполнения задачи

resource "aws_iam_policy" "ExecutionPolicy" {
  name = "execution-policy"
  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
      {
        "Effect": "Allow",
        "Action": [
            "ecr:GetAuthorizationToken",
            "ecr:BatchCheckLayerAvailability",
            "ecr:GetDownloadUrlForLayer",
            "ecr:BatchGetImage",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
          ],
        "Resource": "*"
      }
  ]
}
EOF
}

Политика ролей задач

resource "aws_iam_policy" "TaskPolicy" {
  name = "task-policy"
  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
      {
        "Effect": "Allow",
        "Action": [
            "logs:PutLogEvents",
            "sns:Publish"
          ],
        "Resource": "*"
      }
  ]
}
EOF
}

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

Я ожидаю, что задача загрузит конфигурацию / учетные данныеиз роли задачи IAM из поиска цепочки поставщиков учетных данных по умолчанию и создания клиента.

Тем не менее, ТОЛЬКО результат журнала:

standard_init_linux.go: 190: exec userпроцесс вызвал "нет такого файла или каталога"

Когда я запускаю другой код без вызовов других служб aws, задача выполняется правильно.

WЧто мне не хватает?

...