【发布时间】:2020-05-28 06:00:38
【问题描述】:
我的 java 应用程序在 AWS ECS 容器中运行,并且 8000 作为公开端口
我的 ECS 在私有子网下运行
我想通过会话管理器连接到我的 ECS,如下所示:
aws ssm start-session --target My-ECS-Instance-ID --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["8000"], "localPortNumber":["8000"]}' --region My-Region
而且连接似乎没有任何问题:
Starting session with SessionId: botocore-session-1******-09cf*********8
Port 8000 opened for sessionId botocore-session-1******-09cf*********8.
但不幸的是,当我卷曲这个网址时:
curl -X GET "http://localhost:8000/api/user/9"
它生成以下输出:
curl: (52) 来自服务器的空回复
【问题讨论】:
-
您是否验证了端口 8000 是否正确暴露在 EC2 主机中?
-
是的,它在我的容器定义中得到了很好的展示:
PortMappings: - ContainerPort: 8000 -
哦,你没有指定主机端口,所以它将映射到EC2主机中的不同端口。您可能需要 ssh 到该框(通过 SSM 会话管理器)并运行 docker ps 以获取实际的主机端口。然后用这个值更新你上面的命令。
标签: amazon-web-services docker amazon-ec2 devops amazon-ecs