[英]SSM connection from local to AWS ECS with Port Forwarding
我的 java 應用程序在 AWS ECS 容器中運行,8000 作為公開端口
我的ECS在私有Su.net下運行
我想像這樣通過 session 管理器連接到我的 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 這個 url 時:
curl -X GET "http://localhost:8000/api/user/9"
它生成以下 output:
curl:(52)來自服務器的空回復
對於來這里尋找一種方法將端口轉發到在 Fargate 中運行的任務(而不是 EC2 節點)的其他人,方法如下:
aws ssm start-session
的--target
參數的文檔說您需要 EC2 實例 ID,但它也可以采用ecs:<cluster-name>_<task-id>_<container-runtime_id>
格式的值ecs:<cluster-name>_<task-id>_<container-runtime_id>
請注意,ECS 任務角色需要以下權限才能正常工作
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
正如您的評論中提到的,您指定了ContainerPort: 8000
而沒有 HostPort。 因此,EC2 盒子中的實際端口號會有所不同。 可以在此處找到更多詳細信息
請使用 SSM session manager 將 ssh 連接到 EC2 主機,然后運行sudo docker ps
以找出正確的端口號。 然后,在您的aws ssm start-session
命令中使用此值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.