特定の EC2 インスタンスがいつ作成されたかを (boto 経由で) 判断することはできますか?
http://boto.readthedocs.org/en/latest/ref/ec2.htmlは、この場合、何も役に立たないようです。特定の EC2 インスタンスのセットの作成日を調べる必要があります。
ありがとう!
特定の EC2 インスタンスがいつ作成されたかを (boto 経由で) 判断することはできますか?
http://boto.readthedocs.org/en/latest/ref/ec2.htmlは、この場合、何も役に立たないようです。特定の EC2 インスタンスのセットの作成日を調べる必要があります。
ありがとう!
create_time
EC2 インスタンスに対して呼び出される属性はなく、使用可能なもののみlaunch_time
です。
ただし、次の Python コードを使用して、ボリュームがいつ作成されたかを知ることができます。これにより、インスタンスの作成時間が得られます (インスタンスの作成中に接続されたボリュームについて話していることに注意してください)。
import boto3
ec2 = boto3.resource('ec2', region_name='instance_region_name')
volume = ec2.Volume('vol-id')
print volume.create_time.strftime("%Y-%m-%d %H:%M:%S")
別の方法は、カスタム コードを使用することです。. create_instances()
_ launch_time
_
EBS-backed インスタンスを使用していて、派手なドライブ ジャグリングを行っていないと仮定すると、インスタンスの作成日を把握する最善の方法は、ドライブのルート ボリュームの作成時刻を調べることです。インスタンスの起動時間はインスタンスを停止して開始するたびに変化しますが、EBS ボリュームの作成時間は静的です。
現在実行中のインスタンスの作成時間を確認する簡単なスクリプトを次に示します。
import boto
import subprocess
instance_id = subprocess.check_output(['curl', '-s', 'http://169.254.169.254/latest/meta-data/instance-id'])
conn = boto.connect_ec2()
root_device = conn.get_instance_attribute(instance_id, 'rootDeviceName')['rootDeviceName']
root_vol = conn.get_all_volumes(filters={"attachment.instance-id": instance_id, "attachment.device": root_device})[0]
print root_vol.create_time
これには、インスタンスの IAM ロールec2:DescribeInstanceAttribute
とec2:DescribeVolumes
アクセス許可が必要であることに注意してください。
EC2 インスタンスの作成時刻を直接取得することはできません。EC2 インスタンスの起動時間は、インスタンスの起動と停止のたびに更新されるためです。
インスタンスの作成時間は、次の 2 つの方法で取得できます。
1) インスタンスのネットワークインターフェース接続時間を取得することにより
2) 上記のようにボリューム接続時間を取得する。
boto3 でネットワーク インターフェイス接続時間を取得する方法
import boto3
from datetime import datetime
instance_details = client.describe_instances()
num_ins=(len(instance_details['Reservations'])
for x in range(num_ins):
InstanceID=(instance_details['Reservations'][x]['Instances'][0]['InstanceId'])
NetworkInterfaceID = (instance_details['Reservations'][x]['Instances'][0]['NetworkInterfaces'][0]['NetworkInterfaceId'])
NetworkInterface_details = client.describe_network_interfaces(NetworkInterfaceIds=[NetworkInterfaceID])
networkinterface_id_attachedtime = NetworkInterface_details['NetworkInterfaces'][0]['Attachment']['AttachTime']
print(networkinterface_id_attachedtime)
存在するインスタンスのネットワーク インターフェイス接続時間を出力します。
EC2 インスタンスの起動時間に基づいて現在のアップタイムを計算したい場合は、これを試すことができます。
import datetime
lt_datetime = datetime.datetime.strptime(i.launch_time, '%Y-%m-%dT%H:%M:%S')
lt_delta = datetime.datetime.utcnow() - lt_datetime
uptime = str(lt_delta)