it-swarm.dev

ECS tidak dapat mengambil peran

Dari konsol, saya menggunakan lambda yang mengirimkan pekerjaan batch. Pekerjaan batch gagal, menunjukkan bahwa ECS tidak dapat mengambil peran yang disediakan untuk menjalankan definisi pekerjaan.

Untuk perannya, saya telah menambahkan layanan lambda dan ECS.

Pesan kesalahan:

"ECS tidak dapat mengambil peran 'Arn: aws: iam :: 749340585813: role/golfnow-invoke-write-progress' bahwa .__ disediakan untuk tugas ini. Harap verifikasi bahwa peran dilewatkan memiliki hubungan kepercayaan yang tepat dan izin dan bahwa pengguna IAM .__ Anda memiliki izin untuk melewati peran ini. "

"TrainingJobRole": {
  "Type": "AWS::IAM::Role",
  "Properties": {
    "RoleName": "golfnow-invoke-write-progress",
    "AssumeRolePolicyDocument": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "lambda.amazonaws.com",
              "ecs.amazonaws.com"
            ]
          },
          "Action": [
            "sts:AssumeRole"
          ]
        }
      ]
    },
    "Path": "/"
  }
}

Pekerjaan batch:

    "TrainingJob": {
  "Type": "AWS::Batch::JobDefinition",
  "Properties": {
    "Type": "container",
    "JobDefinitionName": {
      "Fn::Sub": "c12e-golfnow-${Environment}-job"
    },
    "ContainerProperties": {
      "Image": {
        "Fn::Join": [
          "",
          [
            "{{ image omitted }}",
            {
              "Ref": "AWS::Region"
            },
            ".amazonaws.com/amazonlinux:latest"
          ]
        ]
      },
      "Vcpus": 2,
      "Memory": 2000,
      "Command": [
        "while", "True", ";", "do", "echo", "'hello';", "done"
      ],
      "JobRoleArn": {
        "Fn::GetAtt": [
          "TrainingJobRole",
          "Arn"
        ]
      }
    },
    "RetryStrategy": {
      "Attempts": 1
    }
  }
},
"JobQueue": {
  "Type": "AWS::Batch::JobQueue",
  "Properties": {
    "Priority": 1,
    "ComputeEnvironmentOrder": [
      {
        "Order": 1,
        "ComputeEnvironment": {
          "Ref": "ComputeEnvironment"
        }
      }
    ]
  }
}

Apakah masalah dengan cara itu dipanggil? Pengguna saya memiliki hak admin, jadi saya rasa ini bukan masalah karena pengguna saya memiliki izin yang tidak mencukupi.

9
Nate Reed

Anda harus menambahkan prinsip "ecs-tasks.amazonaws.com" ke kebijakan trust untuk peran yang mengirimkan pekerjaan Batch (bukan "ecs.amazonaws.com").

Peran yang direvisi:

"TrainingJobRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "RoleName": "golfnow-invoke-write-progress",
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "lambda.amazonaws.com",
                  "ecs-tasks.amazonaws.com"
                ]
              },
              "Action": [
                "sts:AssumeRole"
              ]
            }
          ]
        },
        "Path": "/"
      }
    },
14
Nate Reed

Anda perlu menambahkan kebijakan kepercayaan ke ECS untuk memanggil layanan Batch.

   "Principal": {
      "Service":  [
            "batch.amazonaws.com"
      ]
    },