15

特定の EC2 インスタンスがいつ作成されたかを (boto 経由で) 判断することはできますか?

http://boto.readthedocs.org/en/latest/ref/ec2.htmlは、この場合、何も役に立たないようです。特定の EC2 インスタンスのセットの作成日を調べる必要があります。

ありがとう!

4

5 に答える 5

9

create_timeEC2 インスタンスに対して呼び出される属性はなく、使用可能なもののみ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_

于 2016-07-27T19:02:26.953 に答える
5

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:DescribeInstanceAttributeec2:DescribeVolumesアクセス許可が必要であることに注意してください。

于 2013-12-10T19:03:18.503 に答える
3

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)

存在するインスタンスのネットワーク インターフェイス接続時間を出力します。

于 2019-10-16T06:51:22.283 に答える
0

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)
于 2013-12-04T14:09:57.287 に答える