【发布时间】:2017-04-04 03:28:41
【问题描述】:
我想每天停止并重新启动我的 AWS EC2 实例。我可以通过 API 命令行界面停止它,但要重新连接,我需要获取新的 DNS 信息,以便我可以通过远程桌面进行连接。有没有不涉及通过 EC2 管理控制台的重新连接方法?
【问题讨论】:
标签: amazon-web-services amazon-ec2
我想每天停止并重新启动我的 AWS EC2 实例。我可以通过 API 命令行界面停止它,但要重新连接,我需要获取新的 DNS 信息,以便我可以通过远程桌面进行连接。有没有不涉及通过 EC2 管理控制台的重新连接方法?
【问题讨论】:
标签: amazon-web-services amazon-ec2
为实例分配一个Elastic IP 地址,并始终通过该IP 进行连接。
然后,您还可以使用指向该弹性 IP 地址的友好名称(例如 myinstance.mydomain.com)设置 DNS 记录。
请注意,当您的实例停止时,为其分配保留的弹性 IP 地址将按小时收取少量费用 - 请参阅 https://aws.amazon.com/ec2/pricing/on-demand/#Elastic_IP_Addresses 了解更多信息。
如果您使用 route53 进行 DNS 管理(或其他一些具有您可以使用的 API 的 DNS 托管服务),您可以编写一个在实例启动时运行的脚本,该脚本检测其当前 IP 地址,并使用 route53 api使用实例的新 IP 地址更新 DNS 记录。如果这样做,您需要考虑 DNS 传播时间,所以如果可能的话,我肯定会推荐弹性 IP 方法。
使用 AWS CLI 和以下命令获取实例的公共 IP 地址。请务必更改 instance-id 参数以匹配您自己的实例。
aws ec2 describe-instances --instance-id i-0a3bd317964ca45543 --query 'Reservations[0].Instances[0].PublicIpAddress'
例如,将其与 SSH 命令结合起来可能如下所示:
ssh ec2-user@`aws ec2 describe-instances --instance-id i-0a3bd317964ca45543 --query 'Reservations[0].Instances[0].PublicIpAddress' --output text` -i ~/my-key.pem
【讨论】: