【问题标题】:How to Access Host IP Address From AWS Fargate Docker Container如何从 AWS Fargate Docker 容器访问主机 IP 地址
【发布时间】:2025-11-27 19:55:02
【问题描述】:

我通过 Fargate Docker 在 AWS 上托管我的节点应用程序。如何将 Fargate 的容器公共 IP 地址传递给我的 node.js 应用程序?

Fargate 仅在我的应用部署后提供公共 IP 地址,因此我无法在我的任务运行之前将该地址作为 ENV 变量传递给应用。

我的节点应用程序必须将用户重定向到它的应用程序 URL,但我需要公共地址,我相信...

我在哪里可以阅读更多关于这方面的信息?

我是 AWS 和容器的新手,所以提前感谢大家的帮助!

【问题讨论】:

  • "我的应用程序部署后的公共 IP 地址" - 是的,它就是这样工作的。不知道你还想要什么?
  • 我希望我的 node.js 应用程序知道公共 IP 地址是什么。我的节点应用程序如何从容器中访问它?例如。如果节点要将用户重定向到/home,它如何重定向到IP_ADDRESS/home?

标签: amazon-web-services docker amazon-ec2 containers aws-fargate


【解决方案1】:

您可以启用container metadata 并查找HostPublicIPv4Address

fargate 实例中的元数据文件示例:

{
    "Cluster": "default",
    "ContainerInstanceARN": "arn:aws:ecs:us-west-2:012345678910:container-instance/default/1f73d099-b914-411c-a9ff-81633b7741dd",
    "TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/default/2b88376d-aba3-4950-9ddf-bcb0f388a40c",
    "TaskDefinitionFamily": "console-sample-app-static",
    "TaskDefinitionRevision": "1",
    "ContainerID": "aec2557997f4eed9b280c2efd7afccdcedfda4ac399f7480cae870cfc7e163fd",
    "ContainerName": "simple-app",
    "DockerContainerName": "/ecs-console-sample-app-static-1-simple-app-e4e8e495e8baa5de1a00",
    "ImageID": "sha256:2ae34abc2ed0a22e280d17e13f9c01aaf725688b09b7a1525d1a2750e2c0d1de",
    "ImageName": "httpd:2.4",
    "PortMappings": [
        {
            "ContainerPort": 80,
            "HostPort": 80,
            "BindIp": "0.0.0.0",
            "Protocol": "tcp"
        }
    ],
    "Networks": [
        {
            "NetworkMode": "bridge",
            "IPv4Addresses": [
                "192.0.2.0"
            ]
        }
    ],
    "MetadataFileStatus": "READY",
    "AvailabilityZone": "us-east-1b",
    "HostPrivateIPv4Address": "192.0.2.0",
    "HostPublicIPv4Address": "203.0.113.0"
}

【讨论】:

    【解决方案2】:

    您可以使用describe-tasks获取eniId,使用eniID获取公网IP,如aws ec2 describe-network-interfaces --network-interface-ids eni-xxxxxxxx
    如果您希望从 AWS 控制台获取公共 IP,您可以按照以下步骤操作:

    • 要从 AWS 控制台获取公共 IP,请转到 ECS 服务。
    • 在左侧导航栏,选择Instances & Images > Instances
    • 在顶部导航栏中,选择region
    • 查找正在考虑的 ECS 实例
    • 那里应该有一个查看公共 IP 的选项

    【讨论】:

    • 我可以通过 AWS 接口网站执行此操作吗?我真的是菜鸟,所以我还没有从 AWS 命令​​行托管任何东西......
    • 我强烈建议您学习如何设置 AWS CLI。已更新如何从控制台查看公共 IP,我自己尚未验证这些步骤,因为我需要一个集群并为此运行
    • 对不起,如果我没有清楚地表达我的问题。但我的问题是我的 node.js 应用程序不知道它的容器 IP 地址是什么。因此,当我的应用程序将用户重定向到 IP_ADDRESS/home 时,节点不知道“IP_ADDRESS”的值。
    • 会重定向到“127.0.0.1/home”自动将用户重定向到“PUBLIC_IP_ADDRESS/home”吗?
    • 所以从你的Node App中,你可以通过编程方式获取公网IP
    最近更新 更多