Introspección de contenedor de Amazon ECS - Amazon Elastic Container Service

Introspección de contenedor de Amazon ECS

El agente de contenedor de Amazon ECS proporciona una operación de la API para recopilar detalles acerca de la instancia de contenedor en la que se ejecuta el agente y las tareas asociadas que se ejecutan en esa instancia. Puede utilizar el comando curl desde la instancia de contenedor para consultar al agente de contenedor de Amazon ECS (puerto 51678) y mostrar los metadatos de la instancia de contenedor o la información de las tareas.

importante

La instancia de contenedor debe disponer de un rol de IAM que permita obtener acceso a Amazon ECS para poder recuperar los metadatos. Para obtener más información, consulte Rol de IAM de instancia de contenedor de Amazon ECS.

Para ver los metadatos de la instancia de contenedor, inicie sesión en su instancia de contenedor mediante SSH y ejecute el comando siguiente. Los metadatos incluyen el ID de la instancia de contenedor, el clúster de Amazon ECS en el que está registrada la instancia de contenedor e información de la versión del agente de contenedor de Amazon ECS.

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

Salida:

{
    "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 ver información acerca de todas las tareas que se están ejecutando en una instancia de contenedor, inicie sesión en su instancia de contenedor mediante SSH y ejecute el comando siguiente:

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

Salida:

{
    "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"
        }
    ]
}
    ]
}

Puede ver información para una tarea particular que se está ejecutando en una instancia de contenedor. Para especificar una tarea o contenedor específico, adjunte uno de los siguientes elementos a la solicitud:

  • El ARN de tarea (?taskarn=task_arn)

  • El ID de Docker para un contenedor (?dockerid=docker_id)

Para obtener información de tarea con el ID de Docker de un contenedor, inicie sesión en su instancia de contenedor mediante SSH y ejecute el comando siguiente.

nota

Las versiones de los agentes de contenedor de Amazon ECS anteriores a la versión 1.14.2 requieren ID de contenedor de Docker completos para la API de introspección, no la versión corta que se muestra con docker ps. Puede obtener el ID de Docker completo de un contenedor ejecutando el comando docker ps --no-trunc en la instancia de contenedor.

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

Salida:

{
    "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"
}