Saya bermain dengan Amazon ECS (pengemasan ulang Docker) dan saya menemukan ada satu kemampuan Docker yang tampaknya tidak disediakan ECS. Yaitu, saya ingin memiliki beberapa kontainer berjalan secara instan, dan memiliki permintaan masuk ke alamat IP 1 peta ke wadah 1, dan permintaan datang ke alamat IP 2 peta ke wadah 2, dll.
Di Docker, mengikat wadah ke alamat IP tertentu dilakukan melalui:
docker run -p myHostIPAddr:80:8080 imageName command
Namun, di Amazon ECS, sepertinya tidak ada cara untuk melakukan ini.
Saya telah membuat instance EC2 dengan beberapa alamat IP elastis. Saat mengonfigurasi wadah sebagai bagian dari definisi tugas, dimungkinkan untuk memetakan port host ke port kontainer. Namun, tidak seperti Docker, ECS tidak menyediakan cara untuk menentukan alamat IP host sebagai bagian dari pemetaan.
Sentuhan tambahan adalah bahwa saya ingin permintaan keluar dari wadah N untuk memiliki alamat IP eksternal wadah N.
Apakah ada cara untuk melakukan semua hal di atas?
Saya telah melihat melalui dokumentasi AWS CLI, serta AWS SDK untuk Java. Saya dapat melihat bahwa CLI dapat mengembalikan array networkBindings yang mengandung elemen-elemen seperti ini:
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
dan Java SDK memiliki kelas bernama NetworkBinding yang mewakili informasi yang sama. Namun, info ini tampaknya hanya keluaran, sebagai tanggapan atas permintaan. Saya tidak dapat menemukan cara untuk memberikan informasi yang mengikat ini ke ECS.
Alasan saya ingin melakukan ini adalah karena saya ingin mengatur VM yang sama sekali berbeda untuk konstituensi yang berbeda, menggunakan wadah yang berbeda yang berpotensi pada instance EC2 yang sama. Setiap VM akan memiliki server web sendiri (termasuk sertifikat SSL yang berbeda), serta layanan FTP dan SSH sendiri.
Terima kasih.
aws ecs describe-container-instances
sepertinya tidak membantu. Mereka tampaknya benar-benar ingin mendorong Anda untuk menggunakan ELB, yang untuk kasus kami agak bodoh.