Ich versuche, Spot-Instanzen mit einer Anfrage zu starten, die nur von einem bestimmten Datum und einer bestimmten Uhrzeit bis zu einem bestimmten Datum und einer bestimmten Uhrzeit gültig ist. Folgendes ist meine Konfiguration.InvalidTime-Fehler beim Starten von Spot-Inszenierungen
$request_valid_from = new DateTime();
$request_valid_until = add_time_interval((clone $request_valid_from), 5);
$config = [
'BlockDurationMinutes' => 60,
'InstanceCount' => 1,
'SpotPrice' => strval($this->get_average_spot_price('c3.large)),
'Type' => 'one-time',
'LaunchSpecification' => [
'EbsOptimized' => false,
'InstanceType' => 'c3.large',
'ImageId' => AMI_ID,
],
'ValidFrom' => $request_valid_from,
'ValidUntil' => $request_valid_until,
];
echo($config)
function add_time_interval($current_time, $interval){
$current_time->modify('+' .strval($interval) . ' seconds');
return $current_time;
}
Wenn ich die Konfiguration drucke, bekomme ich Folgendes;
"BlockDurationMinutes": 60,
"InstanceCount": 1,
"SpotPrice": "0.04592",
"Type": "one-time",
"LaunchSpecification": {
"EbsOptimized": false,
"InstanceType": "c3.large",
"ImageId": "ami-b23c22dc"
},
"ValidFrom": {
"date": "2016-05-02 13:11:18.000000",
"timezone_type": 3,
"timezone": "Asia\/Tokyo"
},
"ValidUntil": {
"date": "2016-05-02 13:11:23.000000",
"timezone_type": 3,
"timezone": "Asia\/Tokyo"
}
Jetzt versuche ich, die Spot-Instanz zu starten, und ich bekomme den folgenden Fehler.
InvalidTime (client): "Mon May 02 04:28:11 UTC 2016" is an invalid time
Die Zeit auf der Fehlermeldung ist anders. Also setze ich die korrekte Imezone nach this.
Das Ausführen des Befehls date
gibt die richtige Zeit (wie in der Anfrage). Ich bin mir nicht sicher, warum die Fehlermeldung eine andere Zeit anzeigt.
Detaillierte Fehlermeldung
06-May-2016 13:40:20 Asia/Tokyo] PHP Fatal error: Uncaught exception 'Aws\Ec2\Exception\Ec2Exception' with message 'Error executing "RequestSpotInstances" on "https://ec2.ap-northeast-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://ec2.ap-northeast-1.amazonaws.com` resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>InvalidTime</Code><Message>"Fri May 06 04:40:19 UT (truncated...)
InvalidTime (client): "Fri May 06 04:40:19 UTC 2016" is an invalid time - <?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>InvalidTime</Code><Message>"Fri May 06 04:40:19 UTC 2016" is an invalid time</Message></Error></Errors><RequestID>efd4458f-e05a-4cb7-8332-4be2dca8c486</RequestID></Response>'
exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `POST https://ec2.ap-northeast-1.amazonaws.com` resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>InvalidTime</Code><Message>"Fri May 06 04:40:19 UT (trunca in /projects/mv2/millvi-auto-scaling/ec2-manager/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php on line 192
Es sieht aus wie ist Ihr Datetime immer Zeichenfolge in W3C-Format, wenn es in ISO8601 'YYYY-MM-DDTHH sein sollte (implicltly?): MM: SSZ'. Welche Sprache ist das und wie wird die Anfrage tatsächlich gesendet? Ein SDK? Durch aws-cli? –
Ich benutze die AWS PHP [SDK] (https://docs.aws.amazon.com/aws-sdk-php/v3/api/) Version 3.0 – user3288346
Ich versuchte mit '$ request_valid_from-> -Format (DateTime :: ISO8601) 'und' $ request_valid_from-> Format ("c") '. Es hat immer noch nicht funktioniert. – user3288346