2016-04-05 10 views
0

Ich verwende das PHP AWS SDK, um alle laufenden Instanzen in meinem Konto abzurufen. Früher habe ich die folgenden API:Laufzeit für eine AWS-Instanz abrufen

$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')), 
      ) 
     )); 

Ich kann die alle zum Laufen bringen Instanzen mit den LaunchTime und den AvailabilityZone Informationen. Die Werte für diese sind 2014-10-31T10:58:35+00:00 bzw. ap-northeast-1a.

Basierend auf diesen Informationen möchte ich die Laufzeit in Minuten berechnen. Was ist der richtige Weg, dies zu tun?

Antwort

0

Ich löste es die folgenden in 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

Der für jede Instanz LaunchTime angegebene Wert sollte eine Instanz von DateTime sein. Sie können erhalten, wie lange eine Instanz von bereits läuft, den Unterschied zwischen LaunchTime bekommen und einen anderen Datetime-Instanz:

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

Da der EC2-Client und andere Instanzen könnte in verschiedenen AZs laufen, müssen wir die Zeitzone berücksichtigen? – user3288346

+0

Nein. 'DateTime'-Objekte berücksichtigen die Zeitzone bei der Berechnung eines Diff. Der von der EC2-API zurückgegebene Wert ist ein ganzzahliger (Epoch) Zeitstempel. – giaour

+0

ok, aber der Wert, der für 'launchTime' zurückgegeben wird, ist' string' und ich brauche das Ergebnis in Minuten. Also habe ich folgendes versucht: '$ launch_time = new DateTime ($ instance [" LaunchTime "]);' '$ launch_time-> diff (neu \ DateTime ('now'), true)' Jetzt 'echo $ launch_time 'produziert Stunden, Minuten, Tage getrennt. Soll ich das dann manuell in Minuten umwandeln? – user3288346

Verwandte Themen