ฉันกำลังเล่นกับ Amazon ECS (repackaging ของ Docker) และฉันพบว่ามีความสามารถ Docker หนึ่งที่ ECS ไม่ได้ให้ กล่าวคือฉันต้องการให้มีหลายคอนเทนเนอร์ที่ทำงานในอินสแตนซ์และมีคำขอเข้ามาในที่อยู่ IP 1 แผนที่ไปยังคอนเทนเนอร์ 1 และคำขอที่มาถึงที่อยู่ IP 2 แผนที่ไปยังคอนเทนเนอร์ 2 ฯลฯ
ใน Docker การผูกคอนเทนเนอร์กับที่อยู่ IP เฉพาะจะกระทำผ่าน:
docker run -p myHostIPAddr:80:8080 imageName command
อย่างไรก็ตามใน Amazon ECS ดูเหมือนจะไม่มีทางทำสิ่งนี้
ฉันได้ตั้งค่าอินสแตนซ์ EC2 ที่มีที่อยู่ IP หลายยืดหยุ่น เมื่อกำหนดค่าคอนเทนเนอร์เป็นส่วนหนึ่งของการกำหนดภารกิจคุณสามารถแมปพอร์ตโฮสต์กับพอร์ตคอนเทนเนอร์ได้ อย่างไรก็ตามแตกต่างจาก Docker, ECS ไม่ได้ให้วิธีการระบุที่อยู่ IP ของโฮสต์เป็นส่วนหนึ่งของการทำแผนที่
การบิดเพิ่มเติมคือฉันต้องการคำขอขาออกจากคอนเทนเนอร์ N ให้มีที่อยู่ IP ภายนอกของคอนเทนเนอร์ N
มีวิธีทำทั้งหมดข้างต้นหรือไม่
ฉันดูเอกสาร AWS CLI รวมถึง AWS SDK สำหรับ Java ฉันเห็นว่า CLI สามารถส่งคืนอาร์เรย์ networkBindings ที่มีองค์ประกอบดังนี้:
{
"bindIP": "0.0.0.0",
"containerPort": 8021,
"hostPort": 8021
},
และ Java SDK มีคลาสชื่อ NetworkBinding ที่แสดงถึงข้อมูลเดียวกัน อย่างไรก็ตามข้อมูลนี้ดูเหมือนจะเป็นเอาต์พุตเท่านั้นเพื่อตอบสนองต่อคำขอ ฉันไม่สามารถหาวิธีให้ข้อมูลที่มีผลผูกพันนี้กับ ECS ได้
เหตุผลที่ฉันต้องการทำเช่นนี้คือฉันต้องการตั้งค่า VM ที่แตกต่างกันอย่างสิ้นเชิงสำหรับเขตเลือกตั้งที่แตกต่างกันโดยใช้คอนเทนเนอร์ต่าง ๆ ที่อาจเกิดขึ้นบนอินสแตนซ์ EC2 เดียวกัน แต่ละ VM จะมีเว็บเซิร์ฟเวอร์ของตัวเอง (รวมถึงใบรับรอง SSL ที่แตกต่างกัน) รวมถึงบริการ FTP และ SSH ของตนเอง
ขอบคุณ
aws ecs describe-container-instances
ดูเหมือนจะไม่ช่วย ดูเหมือนว่าพวกเขาต้องการผลักดันให้คุณใช้ ELB ซึ่งในกรณีของเรานั้นโง่มาก