เรียกใช้งานอินสแตนซ์ผ่าน Elastic Beanstalk โดยไม่กำหนดค่า IP ยืดหยุ่น


10

ฉันกำลังสร้างเครื่องมือเพื่อปรับใช้อิมเมจนักเทียบท่ากับ EC2 ผ่านทาง ElasticBeanstalk ดังนั้นทีมงาน dev สามารถสาธิตการทำงานของพวกเขาได้อย่างรวดเร็วโดยไม่ต้องรวมเข้าด้วยกัน ฉันไม่ต้องการให้เปิดใช้งาน IP แบบยืดหยุ่นได้สำหรับแอปเหล่านี้เนื่องจากอายุสั้น

เหตุผลที่ฉันถามนี่คือเพราะหากเครื่องมือของฉันสร้างมากกว่า 5 แอพ (และมันค่อนข้างเร็ว) แอพใหม่ใด ๆ จะล้มเหลวเพราะไม่สามารถกำหนด IP แบบยืดหยุ่นให้กับแอพใหม่ได้ นี่เป็นเพราะโดยทั่วไปบัญชี AWS มีIP แบบยืดหยุ่นได้สูงสุด 5รายการ ฉันสามารถไปที่เว็บคอนโซลของ aws และเลือก 'Disassociate Elastic IP Address' (ดูด้านล่าง) บนอินสแตนซ์หลังจากนั้นอินสแตนซ์ ec2 จะได้รับ ip ใหม่ (หลังจากนั้นไม่กี่นาที) นี่คือสิ่งที่ฉันต้องการ แต่ฉันต้องการที่จะทำแบบเป็นโปรแกรมและต้องการที่จะบูตแอพโดยไม่ต้องมันแทนที่จะทำมันเมื่อมีการสร้างอินสแตนซ์

ตัวเลือกเมนูยกเลิกการเชื่อมโยง

มีตัวเลือกการกำหนดค่าที่ฉันสามารถใช้เพื่อปิดใช้งาน Elastic IP สำหรับอินสแตนซ์ใหม่หรือไม่

ฉันใช้โหนดaws-sdkแต่เคล็ดลับในภาษาใด ๆ ที่จะทำ

ฉันกำลังสร้างm1.smallอินสแตนซ์เดียว

หากสิ่งนี้เป็นไปไม่ได้เมื่อเริ่มต้นฉันจะต้องยกเลิกการเชื่อมโยง IP ยืดหยุ่นจากอินสแตนซ์โดยใช้ฟังก์ชันEC2.disassociateAddress


หากคุณกำลังเปิดตัวในเครือข่ายย่อยส่วนตัว: stackoverflow.com/questions/39086022/ …
lonewarrior556

คำตอบ:


10

เมื่อใช้ประเภทสภาพแวดล้อม "อินสแตนซ์เดี่ยว" คุณจะได้รับ EIP เสมอ

จากคู่มือผู้พัฒนา Beanstalk, ประเภทสภาพแวดล้อม :

สภาพแวดล้อมแบบ Single-instance ประกอบด้วย Amazon EC2 หนึ่งอินสแตนซ์ที่มีที่อยู่ IP แบบยืดหยุ่น

การปิดใช้งานตัวเลือก "เชื่อมโยงที่อยู่ IP สาธารณะ" ไม่มีผลใด ๆ

สลับไปที่สภาพแวดล้อม "โหลดบาลานซ์ปรับสมดุลอัตโนมัติ" เพื่อรับโดยไม่มี EIP


ซึ่งแตกต่างจากคำตอบอื่น ๆ ที่นี่การแก้ปัญหาของฉันจริง ๆ แล้วขอบคุณ :) สำหรับนักเดินทางในอนาคตในกล่องโต้ตอบการสร้างสภาพแวดล้อมใหม่คุณเลือกตัวเลือก "Load Balancing" ภายใต้ปุ่ม "กำหนดค่าตัวเลือกเพิ่มเติม" ในตอนท้ายของการสร้างสภาพแวดล้อม แบบฟอร์ม.
Jacob Davis-Hansson

1

ฉันไม่ต้องการให้เปิดใช้งาน IP แบบยืดหยุ่นได้สำหรับแอปเหล่านี้เนื่องจากอายุสั้น

หากคุณอยู่ในเครือข่ายสาธารณะของ VPC (ซึ่งมีโอกาสมาก) จะต้องมีเครือข่ายย่อยหนึ่งอินสแตนซ์นั้นเพื่อให้สามารถสื่อสารกับอินเทอร์เน็ต ต่อhttp://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html :

ต้องการเปิดใช้งานเช่นในเครือข่ายย่อยสาธารณะของคุณในการสื่อสารกับอินเทอร์เน็ตก็ต้องมีที่อยู่ IP สาธารณะหรือที่อยู่ IP ยืดหยุ่นที่เชื่อมโยงกับที่อยู่ IP ส่วนตัวบนอินสแตนซ์ อินสแตนซ์ของคุณจะรับรู้เฉพาะพื้นที่ที่อยู่ IP ส่วนตัว (ภายใน) ที่กำหนดภายใน VPC และซับเน็ต เกตเวย์อินเทอร์เน็ตให้ NAT แบบตัวต่อตัวในนามของอินสแตนซ์ของคุณดังนั้นเมื่อทราฟฟิกออกจากเครือข่ายย่อย VPC ของคุณและไปที่อินเทอร์เน็ตฟิลด์ที่อยู่ตอบกลับจะถูกตั้งค่าเป็นที่อยู่ IP สาธารณะหรือที่อยู่ IP ยืดหยุ่นของอินสแตนซ์ของคุณ และไม่ใช่ที่อยู่ IP ส่วนตัว ในทางกลับกันการรับส่งข้อมูลที่กำหนดไว้สำหรับที่อยู่ IP สาธารณะหรือที่อยู่ IP แบบยืดหยุ่นของอินสแตนซ์ของคุณจะมีการแปลที่อยู่ปลายทางเป็นที่อยู่ IP ส่วนตัวของอินสแตนซ์ก่อนที่การส่งข้อมูลจะถูกส่งไปยัง VPC

EIP ที่กำหนดโดยอัตโนมัติซึ่งมาพร้อมกับอินสแตนซ์ใหม่จะไม่เสียค่าใช้จ่ายใด ๆ และจะหายไปโดยอัตโนมัติเมื่ออินสแตนซ์ถูกยกเลิกการใช้งาน


ขอบคุณสำหรับคำตอบของคุณฉันได้เพิ่มข้อมูลเพิ่มเติมลงในคำถามเพื่ออธิบายปัญหาที่ฉันเห็นและวิธีที่ฉันสามารถแก้ไขได้ผ่านทางเว็บคอนโซล ฉันอาจเข้าใจผิดว่า AWS ทำงานอย่างไร แต่คุณสามารถให้คำแนะนำเพิ่มเติมได้ฉันรู้สึกขอบคุณมาก
เอ็ด

@ed ฉันไม่คุ้นเคยอย่างมากกับ EB แต่ดูเหมือนว่าจากเอกสารที่คุณต้องการกำหนดaws:ec2:vpc:AssociatePublicIpAddressในการกำหนดค่าEB ของคุณ (และนี่เป็นเรื่องแปลกประหลาดกับ EBs อินสแตนซ์เดียว) อีกทางหนึ่งคือขอให้ AWS เพิ่มขีด จำกัด EIP ของคุณ - จากประสบการณ์ของฉันพวกเขายินดีมอบให้ในสถานการณ์แบบนี้อย่างมีความสุข
ceejayoz

ไชโยฉันจะลองดู
เอ็ด

ฉันพยายามตั้งค่าสถานะด้านบนเพื่อไม่เป็นประโยชน์ ฉันคิดว่าฉันแค่จะโทรหายกเลิกการเชื่อมโยงที่อยู่ผ่าน sdk
เอ็ด

1
สำหรับบันทึก: aws:ec2:vpc:AssociatePublicIpAddressใช้สำหรับอินสแตนซ์ของ ec2 เท่านั้นหากคุณตั้งค่าเป็นเท็จจากนั้นdisassociateAddressอินสแตนซ์จะไม่มี IP สาธารณะ
เอ็ด

0

มีตัวเลือกสภาพแวดล้อมยืดหยุ่นฝักถั่วที่อาจเป็นสิ่งที่คุณเป็นหลังจาก

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-elbloadbalancer

Namespace: aws: ec2: vpc AssociatePublicIpAddress: false

หากคุณตั้งค่าไว้โหนดทั้งหมดที่สร้างโดยสภาพแวดล้อมนี้จะไม่มี IP สาธารณะ ทราฟฟิกขาเข้าจะต้องใช้ตัวโหลดบาลานซ์ VPC และเครือข่ายย่อยจะต้องเชื่อมโยงกับเกตเวย์ NAT หรือเกตเวย์อินเทอร์เน็ตเพื่อรับสัญญาณอินเทอร์เน็ตขาออก หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ตขาออกการสร้าง Elastic Beanstalk จะล้มเหลว (ไม่สามารถเข้าถึงบริการ AWS)


ฉันได้เพิ่มสิ่งนี้ในการกำหนดค่า EBS: { "OptionName": "AssociatePublicIpAddress", "ResourceName": "AWSEBAutoScalingLaunchConfiguration", "Namespace": "aws:ec2:vpc", "Value": "false" },ถึงกระนั้น Elastic IP ก็เชื่อมโยงกับอินสแตนซ์นั้น เบาะแสใด ๆ
Kostanos

1
สิ่งนี้ไม่เป็นความจริง แต่จะไม่มีผลกับ eip
A-Developer-Has-No-Name

0

หลังจากที่คุณยกเลิกการเชื่อมโยงที่อยู่ IP แบบยืดหยุ่นคุณมีเวลาประมาณ 10 วินาทีในการ 'ปล่อย' มัน หากคุณปล่อยมันจะไม่กลับมา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.