Introspecção de contêiner do Amazon ECS - Amazon Elastic Container Service

Introspecção de contêiner do Amazon ECS

O agente de contêiner do Amazon ECS fornece uma operação de API para reunir detalhes sobre a instância de contêiner na qual o agente está sendo executado e as tarefas associadas executadas nesta instância. É possível usar o comando curl na instância de contêiner para consultar o agente de contêiner do Amazon ECS (porta 51678) e retornar metadados da instância de contêiner ou informações sobre tarefas.

Importante

A instância de contêiner deve ter uma função do IAM que conceda acesso ao Amazon ECS para recuperar os metadados. Para ter mais informações, consulte Função do IAM de instância de contêiner do Amazon ECS.

Para exibir os metadados da instância de contêiner, faça login na instância de contêiner via SSH e execute o comando a seguir. Os metadados incluem o ID da instância de contêiner, o cluster do Amazon ECS no qual a instância de contêiner está registrada e as informações sobre versão do agente de contêiner do Amazon ECS.

curl -s http://localhost:51678/v1/metadata | python3 -mjson.tool

Saída:

{
    "Cluster": "cluster_name",
    "ContainerInstanceArn": "arn:aws:ecs:region:aws_account_id:container-instance/cluster_name/container_instance_id",
    "Version": "Amazon ECS Agent - v1.30.0 (02ff320c)"
}

Para exibir informações sobre todas as tarefas que estão sendo executadas em uma instância de contêiner, efetue login na instância de contêiner via SSH e execute o comando a seguir:

curl http://localhost:51678/v1/tasks

Saída:

{
    "Tasks": [
        {
            "Arn": "arn:aws:ecs:us-west-2:012345678910:task/default/example5-58ff-46c9-ae05-543f8example",
            "DesiredStatus": "RUNNING",
            "KnownStatus": "RUNNING",
            "Family": "hello_world",
            "Version": "8",
            "Containers": [
                {
          "DockerId": "9581a69a761a557fbfce1d0f6745e4af5b9dbfb86b6b2c5c4df156f1a5932ff1",
          "DockerName": "ecs-hello_world-8-mysql-fcae8ac8f9f1d89d8301",
          "Name": "mysql",
          "CreatedAt": "2023-10-08T20:09:11.44527186Z",
          "StartedAt": "2023-10-08T20:09:11.44527186Z",
          "ImageID": "sha256:2ae34abc2ed0a22e280d17e13f9c01aaf725688b09b7a1525d1a2750e2c0d1de"
        },
        {
          "DockerId": "bf25c5c5b2d4dba68846c7236e75b6915e1e778d31611e3c6a06831e39814a15",
          "DockerName": "ecs-hello_world-8-wordpress-e8bfddf9b488dff36c00",
          "Name": "wordpress"
        }
    ]
}
    ]
}

É possível exibir informações sobre uma tarefa específica que esteja em execução em uma instância de contêiner. Para especificar uma tarefa ou um contêiner, acrescente um dos seguintes itens à solicitação:

  • O Nome de região da Amazon (ARN) da tarefa (?taskarn=task_arn)

  • O ID do Docker de um contêiner (?dockerid=docker_id)

Para obter informações sobre tarefas com um ID de Docker de um contêiner, faça login na instância de contêiner via SSH e execute o comando a seguir.

nota

Os agentes de contêiner do Amazon ECS antes da versão 1.14.2 requerem IDs de contêiner do Docker completos para a API de introspecção, e não a versão curta mostrada com docker ps. É possível obter o ID de docker completo de um contêiner executando o comando docker ps --no-trunc na instância de contêiner.

curl http://localhost:51678/v1/tasks?dockerid=79c796ed2a7f

Saída:

{
    "Arn": "arn:aws:ecs:us-west-2:012345678910:task/default/e01d58a8-151b-40e8-bc01-22647b9ecfec",
    "Containers": [
        {
            "DockerId": "79c796ed2a7f864f485c76f83f3165488097279d296a7c05bd5201a1c69b2920",
            "DockerName": "ecs-nginx-efs-2-nginx-9ac0808dd0afa495f001",
            "Name": "nginx",
            "CreatedAt": "2023-10-08T20:09:11.44527186Z",
            "StartedAt": "2023-10-08T20:09:11.44527186Z",
            "ImageID": "sha256:2ae34abc2ed0a22e280d17e13f9c01aaf725688b09b7a1525d1a2750e2c0d1de"
        }
    ],
    "DesiredStatus": "RUNNING",
    "Family": "nginx-efs",
    "KnownStatus": "RUNNING",
    "Version": "2"
}