查找 executionRoleArn、taskRoleArn 的值

Finding the values for executionRoleArn, taskRoleArn

我正在处理 AWS Python tutorial, module 2

我在 C 部分,我必须通过在 json 文件中填写一些 REPLACE_ME 值来创建 task definition

{
  "family": "mythicalmysfitsservice",
  "cpu": "256",
  "memory": "512",
  "networkMode": "awsvpc",
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "executionRoleArn": "REPLACE_ME_ECS_SERVICE_ROLE_ARN",
  "taskRoleArn": "REPLACE_ME_ECS_TASK_ROLE_ARN",
  "containerDefinitions": [
    {
      "name": "MythicalMysfits-Service",
      "image": "REPLACE_ME_IMAGE_TAG_USED_IN_ECR_PUSH",
      "portMappings": [
        {
          "containerPort": 8080,
          "protocol": "http"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "mythicalmysfits-logs",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "awslogs-mythicalmysfits-service"
        }
      },
      "essential": true
    }
  ]
}

我不确定从哪里获取值的三个变量:

"REPLACE_ME_ECS_SERVICE_ROLE_ARN", 
"REPLACE_ME_ECS_TASK_ROLE_ARN", 
"REPLACE_ME_IMAGE_TAG_USED_IN_ECR_PUSH"

在此步骤之前,在步骤 A 和 B 中,我 create-cluster,但它的输出对我来说并没有显示明显的值:

$ aws ecs create-cluster --cluster-name MythicalMysfits-Cluster
{
    "cluster": {
        "clusterArn": "arn:aws:ecs:us-east-1:002847010850:cluster/MythicalMysfits-Cluster",
        "clusterName": "MythicalMysfits-Cluster",
        "status": "ACTIVE",
        "registeredContainerInstancesCount": 0,
        "runningTasksCount": 0,
        "pendingTasksCount": 0,
        "activeServicesCount": 0,
        "statistics": [],
        "tags": [],
        "settings": [
            {
                "name": "containerInsights",
                "value": "disabled"
            }
        ],
        "capacityProviders": [],
        "defaultCapacityProviderStrategy": []
    }
}

我怀疑我可能知道的唯一值是,当我将 docker 图像推送到 Elastic Compute Repository

时,我可以从 docker push 002847010850.dkr.ecr.us-east-1.amazonaws.com/mythicalmysfits/service 中获取它

所以我做了一个猜测,并为两个 REPLACE_ME 都使用了 "clusterArn" 值,第三个使用了原始图像标签,但是

$ aws ecs register-task-definition --cli-input-json file://~/environment/aws-modern-application-workshop/module-2/aws-cli/task-definition.json

An error occurred (ClientException) when calling the RegisterTaskDefinition operation: Role is not valid

这是json我喂的:

{
  "family": "mythicalmysfitsservice",
  "cpu": "256",
  "memory": "512",
  "networkMode": "awsvpc",
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "executionRoleArn": "arn:aws:ecs:us-east-1:002847010850:cluster/MythicalMysfits-Cluster",
  "taskRoleArn": "arn:aws:ecs:us-east-1:002847010850:cluster/MythicalMysfits-Cluster",
  "containerDefinitions": [
    {
      "name": "MythicalMysfits-Service",
      "image": "002847010850.dkr.ecr.us-east-1.amazonaws.com/mythicalmysfits/service",
      "portMappings": [
        {
          "containerPort": 8080,
          "protocol": "http"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "mythicalmysfits-logs",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "awslogs-mythicalmysfits-service"
        }
      },
      "essential": true
    }
  ]
}

谁能告诉我哪里出错了?本教程非常糟糕 - 只是一堆咒语,非常脆弱,没有明显的论坛讨论可以解决它。

Marcin 的答案建议让我重新思考并查看教程前面的 JSON 输出。

aws cloudformation describe-stacks --stack-name MythicalMysfitsCoreStack 给出了一堆 key/value 对,REPLACE_ME_ECS_SERVICE_ROLE_ARN REPLACE_ME_ECS_TASK_ROLE_ARN OutputValues 都在里面。

然后程序就可以工作了。