2016-04-05 25 views
0

PHP AWS SDKを使用して、実行中のインスタンスをすべてアカウントで取得しています。私はLaunchTimeAvailabilityZone情報で実行中のすべてのインスタンスを取得することができますAWSインスタンスの実行時間の取得

$this->ec2Client = Ec2Client::factory(array(
      'profile' => AWS_PROFILE, //contains my credentials 
      'region' => 'ap-northeast-1', 
      'version' => 'latest', 
     )); 

$result = $this->ec2Client->DescribeInstances(array(
      'Filters' => array(
       array('Name' => 'instance-state-name', 'Values' => array('running')), 
      ) 
     )); 

:私は、次のAPIを使用していました。

これらの値はそれぞれ2014-10-31T10:58:35+00:00ap-northeast-1aです。

この情報に基づいて、実行時間を分単位で計算します。これを行う正しい方法は何ですか?

答えて

0

私はv3では、以下を使用してそれを解く:

function interval_in_minutes($start_time){ 
     return round(abs($start_time->getTimestamp() - 
      (new \DateTime)->getTimestamp())/60); 
    } 

$running_time = interval_in_minutes($instance["LaunchTime"]); 
0

各インスタンスのLaunchTimeの値は、DateTimeのインスタンスにする必要があります。あなたは、インスタンスがLaunchTime、別のDateTimeのインスタンス間の差を取得することによって実行されているどのくらいの時間を得ることができます。

$interval = $launchTime->diff(new \DateTime('now'), true); 
+0

EC2クライアントや他のインスタンスので、異なるAZで動作している可能性があります。タイムゾーンを考慮する必要がありますか? – user3288346

+0

「DateTime」オブジェクトは、差分を計算するときにタイムゾーンを考慮に入れ、EC2のAPIから返される値は整数(エポック)タイムスタンプです。 – giaour

+0

okですが、 'launchTime'で返されるvaueは' string'であり、結果は分単位で必要です。そこで、次のように試しました: '$ launch_time = new DateTime($ instance [" LaunchTime "]);' '$ launch_time-> diff(new \ DateTime( 'now')、true)' 'echo $ launch_time時間、分、日を別々に生成します。手動で分に変換する必要がありますか? – user3288346

関連する問題