2016-04-05 183 views
0

我正在使用PHP AWS開發工具包獲取我的帳戶中的所有正在運行的實例。我用下面的API:獲取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')), 
      ) 
     )); 

我可以得到所有與LaunchTimeAvailabilityZone信息的運行實例。

它們的值分別是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返回的值是整數(epoch)時間戳。 – giaour

+0

ok,但'launchTime'的返回值是'string',我需要幾分鐘的時間。所以我嘗試了以下內容: '''''''''launch_time = new DateTime($ instance [「LaunchTime」]);' ' $ launch_time-> diff(new \ DateTime('now'),true)' 'echo $ launch_time '分別生產幾小時,幾分鐘,幾天。我應該手動轉換爲分鐘嗎? – user3288346