如何利用bash curl命令检查远程aws ec2实例状态,以便我可以评估响应以确定服务器是否可以在cloud-init进程中使用?但是,远程EC2实例的IP地址是预定义的。
当EC2实例可以使用时,AWS控制台将显示“已通过2/2检查”,但我想在不使用AWS CLI的情况下以编程方式确定这一点。
答案 0 :(得分:0)
如果您使用bash,AWS CLI肯定是最好的方式:describe-instance-status — AWS CLI
如果您以编程方式执行此操作,则可以这样做。 (你没有提到你的首选语言,所以这里是Python语言。)
import boto3
client = boto3.client('ec2', region_name='ap-southeast-2')
response = client.describe_instance_status(InstanceIds=['i-0c9c9b95b3523afdc'])
print ([(i['InstanceId'], i['SystemStatus']['Status']) for i in response['InstanceStatuses']])
答案 1 :(得分:0)
如约翰所述; CLI是实现它的最简洁,最简单的方法。其他任何东西都是黑客。
使用curl,您可以轻松检索EC2实例的完整元数据。但是这不会给ec2的运行时状态。请参考https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html ..
可能的hack可能是:在EC2上运行apache / nginx ..并在该apache / nginx的测试页面上卷曲。一旦Ec2上升;你的apache / nginx也会启动,你会得到HTTP响应200。