amazon-web-services - 如何从 AWS Fargate Docker 容器访问主机 IP 地址
问题描述
我通过 Fargate Docker 在 AWS 上托管我的节点应用程序。如何将 Fargate 的容器公共 IP 地址传递给我的 node.js 应用程序?
Fargate 仅在部署我的应用程序后提供公共 IP 地址,因此在我的任务运行之前我无法将该地址作为 ENV 变量传递给应用程序。
我的节点应用程序必须将用户重定向到它的应用程序 URL,但我需要公共地址,我相信......
我在哪里可以阅读更多关于此的信息?
我是 AWS 和容器的新手,所以提前感谢大家的帮助!
解决方案
您可以启用容器元数据并查找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"
}
推荐阅读
- python - 使用 mysql.connector 时出现 MySQL 错误 1064 (42000)
- terraform - Terraform for_each?
- c# - 寻求帮助尝试从两个不同的类打印类属性到控制台,但在输入时保持它们配对
- .net - 当需要 Long 类型的参数时,为什么我可以传递 Integer?
- elasticsearch - "tags":["_dateparsefailure"]," 与 logstash
- regex - powershell 正则表达式匹配特定字符串,没有开始特殊字符
- c# - C# Windows 服务 - 我的计时器不工作,获得多个线程
- node.js - Express 路由器 app.all('*', (req, res, next)) 不会在 ec2 实例上执行 HTTP 请求。获取请求超时错误
- c - C 函数 - scanf()
- html - 更改标题的背景颜色不起作用