我有一個VPC。現在我有一個腳本創建ec2-instances並配置它們。在安裝過程中,配置取決於公共IP。問題是重新啓動後,配置對我的實例是錯誤的。由於公共IP改變了,但配置包含舊的公共IP。有沒有一種方法可以爲特定VPC中的實例定義Elastic IP的自動分配? (分配在創建之後的彈性IP immediatley)亞馬遜:在VPC中自動分配彈性ip
回答
我通常設置彈性IP,而不是從任何創建以userdata開頭的實例,但我不明白爲什麼不能從外部腳本執行相同的操作。
這是我啓動應用程序時傳遞給用戶數據的腳本。
注意,此腳本依賴於其他(父)腳本創建變量 如:
REGION =字符串抱着你推出的實例爲
RESOURCE_ID區=串拿着新推出的ID實例
IP =一個字符串保存原始的公共IP地址
您應該能夠從初始啓動的響應中獲得這些變量。
您將需要創建額外的功能,並假設您已經啓動了該實例,但這應該會讓您大部分時間在那裏。
請注意,不需要重新啓動實例,以啓動和分配彈性IP地址。事實上,正如你所提到的那樣,這樣做可能會「丟失」公共IP地址(儘管我相信從控制檯進行簡單的重新啓動會保留公有IP)。
#!/bin/bash
EIPID=`aws ec2 allocate-address --domain vpc --region ${REGION} | grep -m 1 'AllocationId' | awk -F : '{print $2}' | sed 's|^ "||' | sed 's|"||'`
IP=`ec2metadata --public-ipv4`
EIP=${IP}
if [ -n "$EIPID" ]
then
conf=`aws ec2 associate-address --instance-id ${RESOURCE_ID} --allocation-id ${EIPID} --region ${REGION} | grep -m 1 'AssociationId' | awk -F : '{print $2}' | sed 's|^ "||' | sed 's|"||'`
if [ -n "$conf" ]
then
while [ "$IP" == "$EIP" ]
do
EIP=`ec2metadata --public-ipv4`
sleep 2
done
echo "Elastic IP ${EIPID} successfully mapped";
echo "ELASTIC_IP=\"${EIP}\"" | sudo tee -a /etc/environment
else
echo "Failed to map Elastic IP Address: ${EIPID}";
fi
else
echo "Failed to acquire Elastic IP address: ${EIPID}";
fi
有兩種方法
1)使用在所述aws ec2 associate-address
露出的API方法,見http://docs.aws.amazon.com/cli/latest/reference/ec2/associate-address.html
2),而不是使用一個腳本cloudformation請參閱http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2.html#scenario-ec2-eip
VPC中沒有使EIP自動附加到EC2實例的功能。
您需要使用您熟悉的AWS API語言編寫自己的腳本來完成自己的自動化。
1)準備: 分配彈性IP,寫下EIP-ID
2)大專EIP-ID EC2的IP分配工作: 使用AWS API腳本來創建並啓動EC2實例,捕獲EC2實例ID(或實例接口ID)。 然後在同一個腳本中,使用API ec2關聯地址(命名與您使用的AWS API語言有所不同,取決於您所使用的AWS API語言)將EIP-id附加到EC2 isntance ID(或實例接口ID)
如果您正在使用API,您實際上可能會使用「ec2 describe_addresse」動態查找與任何實例無關的空閒EIP-id。
而你需要提前考慮自動化的,如果你想停止從時間EC2時間和重新啓動它們:從EC2實例中EC2 Instances will not keep elastic IP
如回答mootmoot我會說裏面有沒有VPC功能進行自動的EIP附加到特定EC2實例。另外,停止實例也會將EIP與其分離。所以EC2實例不會保持彈性IP。
有一個選項,does not require an Elastic IP。可以通過使用名爲DynamicURL的服務來分配,該服務將您域中的A上的IP地址更改爲分配給您的實例的公共IP。所以無論何時IP更改,您的域名都會與您的實例保持關聯。
- 1. 亞馬遜VPC可用性
- 2. 亞馬遜EC2彈性IP問題
- 3. 亞馬遜VPC測試
- 4. Heroku和亞馬遜VPC
- 5. 將彈性IP分配給VPC中的自動縮放EC2 - AWS
- 6. 亞馬遜彈性魔豆:
- 7. 亞馬遜AWS VPC實例通信
- 8. 亞馬遜AWS Ec2 + Elastic IP
- 9. 連接亞馬遜網絡服務與彈性IP
- 10. 將彈性ip用於亞馬遜的ElasticBeanstalk實例
- 11. 亞馬遜EC2的考慮 - 冗餘和彈性IP
- 12. 亞馬遜EC2彈性IP命令(私鑰,CERT)
- 13. 亞馬遜彈性負載平衡 - 自動縮放?
- 14. 亞馬遜EC2和彈性豆
- 15. netbeans亞馬遜彈性bean連接
- 16. 亞馬遜彈性MapReduce:輸出目錄
- 17. 亞馬遜彈性轉碼與神龕
- 18. PHP亞馬遜彈性轉碼器
- 19. 亞馬遜的AWS彈性 - c#示例
- 20. 亞馬遜彈性計算雲
- 21. 無法ping或ssh到VPC中啓動的亞馬遜實例
- 22. Rails 4,回形針,亞馬遜S3配置亞馬遜路徑
- 23. 要亞馬遜或不亞馬遜
- 24. 亞馬遜WAF +亞馬遜API網關
- 25. Carrierwave - 配置亞馬遜S3
- 26. 當我有多臺服務器時,我應該在亞馬遜EC2中使用亞馬遜VPC
- 27. 亞馬遜彈性MapReduce上的Apache哈馬
- 28. 充分利用亞馬遜
- 29. 在亞馬遜Lex中分支會話
- 30. 亞馬遜自定義AMI
實例在**重新啓動**期間不會丟失其公共IP地址。但是,如果實例停止並啓動,公共IP地址可能會有所不同。爲防止出現這種情況,請指定**彈性IP地址** - 在啓動/停止操作之間不會更改。 –
如果您的問題在這裏有可接受的答案,請考慮選擇一個答案。 – Brooks