【问题标题】:How do I get my IP address from inside an ECS container running with the awsvpc network mode?如何从以 awsvpc 网络模式运行的 ECS 容器中获取我的 IP 地址?
【发布时间】:2019-09-07 03:45:01
【问题描述】:

从以桥接模式运行的常规 ECS 容器,或从标准 EC2 实例,我通常运行

curl http://169.254.169.254/latest/meta-data/local-ipv4

检索我的 IP。

在以 awsvpc 网络模式运行的 ECS 容器中,我得到了底层 EC2 实例的 IP,这不是我想要的。我想要将 ENI 的地址附加到我的容器。我该怎么做?

【问题讨论】:

    标签: docker amazon-ecs aws-vpc


    【解决方案1】:

    AWS 容器代理将一个新的便利环境变量注入到 AWS ECS 中的每个容器中:${ECS_CONTAINER_METADATA_URI}

    这包含元数据端点的 URL,所以现在你可以这样做

    curl ${ECS_CONTAINER_METADATA_URI}
    

    输出看起来像

    {  
       "DockerId":"redact",
       "Name":"redact",
       "DockerName":"ecs-redact",
       "Image":"redact",
       "ImageID":"redact",
       "Labels":{  },
       "DesiredStatus":"RUNNING",
       "KnownStatus":"RUNNING",
       "Limits":{  },
       "CreatedAt":"2019-04-16T22:39:57.040286277Z",
       "StartedAt":"2019-04-16T22:39:57.29386087Z",
       "Type":"NORMAL",
       "Networks":[  
          {  
             "NetworkMode":"awsvpc",
             "IPv4Addresses":[  
                "172.30.1.115"
             ]
          }
       ]
    }
    

    Networks 键下,您会找到IPv4Address

    然后您的应用程序代码可以看起来像这样 (python)

    METADATA_URI = os.environ['ECS_CONTAINER_METADATA_URI']
    container_metadata = requests.get(METADATA_URI).json()
    ALLOWED_HOSTS.append(container_metadata['Networks'][0]['IPv4Addresses'][0])
    

    【讨论】:

      【解决方案2】:
      import * as publicIp from 'public-ip';
      
      const publicIpAddress = await publicIp.v4(); // your container's public IP
      

      【讨论】:

        【解决方案3】:

        来自 Amazon ECS 控制台:

        1. 点击
        2. 点击
        3. 单击“任务”选项卡
        4. 点击
        5. 在那里查看网络详细信息

        来自 CLI:

        • 如果是EC2,登录实例并运行docker exec -it hostname -f
        • 或者直接询问 ecs - ecs-cli ps --cluster < your cluster >

        作为 VPC 连接的资源,在 EC2 模式下,它也列在:

        • EC2 集群实例 IP(即检查 EC2 实例详细信息)
        • EC2 中的“网络接口”部分(搜索“arn:aws:ecs”的描述)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          • 2020-09-01
          • 2015-11-13
          • 2019-09-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多