Есть ли способ для задачи ECS получить метаданные ec2 о том, где она (задача) развернута? - PullRequest
3 голосов
/ 29 апреля 2019

Есть ли способ, чтобы Задача ECS могла получать метаданные EC2 о том, где она развернута?

Из документации AWS о метаданных экземпляра ec2 , я могу получить EC2Когда я нахожусь внутри самого экземпляра ec2.Меня больше интересует выборка instance-id , и этого можно достичь с помощью команды

curl http://169.254.169.254/latest/meta-data/instance-id

Это достигается только тогда, когда я перейду непосредственно к экземпляру ec2 и выполню запрос /команда, но как это будет возможно, если я хочу получить метаданные ec2, когда я из задачи ECS, запущенной на экземпляре EC2?Основываясь на документации AWS метаданных задачи , мне удалось получить информацию только о самой задаче ECS, но мне не удалось получить метаданные ec2, где эта задача выполняется.

Возможно ли это?

Настройка:

  • Экземпляр ec2 находится в кластере ecs
  • Задача ecsразвертывается случайным образом на любом экземпляре ec2 внутри кластера

1 Ответ

1 голос
/ 30 апреля 2019

Конечная точка метаданных с IP 169.254.169.254 предназначена только для извлечения подробностей EC2.

Где как 169.254.170.2 предназначено для получения метаданных задачи ECS.

Вы по-прежнему должны иметь возможность вызывать конечную точку метаданных EC2 в рамках задачи и получать сведения о EC2.

В приведенном ниже примере установки у меня была одна часть экземпляра EC2 кластера ECS с одной запущенной задачей nginx.

Я ssh'ed (docker exec -it ab8 /bin/sh) в свою задачу nginx и все еще могу правильно достичь конечной точки метаданных EC2 и получить EC2 instanceId (i-0086xxxxxxxxxxx).

Теперь, в зависимости от времени выполнения вашей задачи (java, nodejs, python и т. Д.), Вы сможете выполнять вызов метаданных EC2 внутри задачи.

[root@ip-172-31-91-251 ec2-user]# docker ps
CONTAINER ID        IMAGE                             COMMAND             CREATED             STATUS              PORTS                NAMES
ab825479c673        ewoutp/docker-nginx-curl:latest   "nginx"             11 minutes ago      Up 11 minutes       0.0.0.0:80->80/tcp   ecs-nginx-17-nginx-c6d8ba82f0afc3f96b00
c99dede7f091        amazon/amazon-ecs-agent:latest    "/agent"            11 days ago         Up 11 days                               ecs-agent

[root@ip-172-31-91-251 ec2-user]# docker exec -it ab8 /bin/sh

# curl http://169.254.169.254/latest/meta-data/instance-id -v
* Hostname was NOT found in DNS cache
*   Trying 169.254.169.254...
* Connected to 169.254.169.254 (169.254.169.254) port 80 (#0)
> GET /latest/meta-data/instance-id HTTP/1.1
> User-Agent: curl/7.37.1
> Host: 169.254.169.254
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/plain
< Accept-Ranges: bytes
< ETag: "916097910"
< Last-Modified: Tue, 30 Apr 2019 01:59:51 GMT
< Content-Length: 19
< Connection: close
< Date: Tue, 30 Apr 2019 02:07:38 GMT
< Server: EC2ws
< 
* Closing connection 0
i-0086xxxxxxxxxxx 
...