Amazon ECS(Dockerの再パッケージ化)で遊んでいますが、ECSが提供していないように見えるDocker機能が1つあります。つまり、インスタンスで複数のコンテナを実行し、IPアドレス1に着信するリクエストをコンテナ1にマッピングし、IPアドレス2に着信するリクエストをコンテナ2にマッピングしたい、などです。
Dockerでは、コンテナを特定のIPアドレスにバインドするには次の方法を使用します。
docker run -p myHostIPAddr:80:8080 imageName command
ただし、Amazon ECSでは、これを行う方法はないようです。
複数のElastic IPアドレスでEC2インスタンスをセットアップしました。コンテナをタスク定義の一部として構成する場合、ホストポートをコンテナポートにマッピングできます。ただし、Dockerとは異なり、ECSはホストIPアドレスをマッピングの一部として指定する方法を提供しません。
さらに、コンテナNからのアウトバウンドリクエストにコンテナNの外部IPアドレスを持たせたいということもあります。
上記のすべてを行う方法はありますか?
AWS CLIドキュメントとAWS SDK for Javaに目を通しました。CLIは、次のような要素を含むnetworkBindings配列を返すことができることがわかります。
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
Java SDKには、同じ情報を表すNetworkBindingという名前のクラスがあります。ただし、この情報は、リクエストへの応答として、出力専用のようです。このバインディング情報をECSに提供する方法が見つかりません。
これを行う理由は、同じEC2インスタンスで異なるコンテナを使用して、異なる構成に対して完全に異なるVMをセットアップすることです。各VMには、独自のWebサーバー(個別のSSL証明書を含む)と、独自のFTPおよびSSHサービスがあります。
ありがとう。
aws ecs describe-container-instances
役に立たないようです。彼らは本当にあなたにELBの使用を勧めたいと思っているようです。