我试图实现的主要目标是在PHP中迭代运行的EC2实例。
使用bash脚本获取数据非常容易,如下所示:
graph1 = new links.Graph(document.getElementById('adasLineChart1'));
graph1.draw(data1, options1);
links.events.addListener(graph1, "selectItem", function(event) {
});
function counter(){
//trigger graph event similar to mouse on click event.
}
但是,当我尝试以下示例时,使用相同的键,我会看到似乎是一个不可用的对象 - 或者至少该对象看起来像是一个空的数据结构。
#!/bin/bash
export AWS_ACCESS_KEY_ID="AKIDEXAMPLE"
export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY"
aws ec2 describe-instances --region="eu-west-1" --filter "Name=instance-state-name,Values=running"
我对这个AWS \ Result有什么意义呢?
{
"Reservations": [
{
"OwnerId": "58728357357",
"ReservationId": "r-0e0283649826935",
"Instances": [
{
"SecurityGroups": [
{
"GroupId": "sg-2fe333148",
"GroupName": "WEB"
}
],
"PublicDnsName": "ec2-53-13-121-72.eu-west-1.compute.amazonaws.com",
"Architecture": "x86_64",
"LaunchTime": "2016-07-11T08:28:23.000Z",
"RootDeviceName": "/dev/sda1",
"BlockDeviceMappings": [
{
"Ebs": {
// ...
}
]
}
我错过了PHP配置中的内容吗?请有人帮我指点正确的方向吗?
P.S。我在上面的示例中屏蔽了API密钥。
答案 0 :(得分:0)
EC2 :: DescribeInstances采用一系列过滤器,每个过滤器都有一个字符串Name
和一个字符串Values
的数组。在CLI示例中,您提供了Values
的内容,而在PHP示例中,您提供了Value
。 SDK无法识别此字段,将被忽略。有关详细信息,请参阅the SDK API docs。
您的PHP应该更新为:
<?php
require __DIR__ . "/vendor/autoload.php";
$settings = [
"version" => "latest",
"region" => "eu-west-1",
"credentials" => [
"key" => "AKIDEXAMPLE",
"secret" => "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY",
],
];
$client = new \Aws\Ec2\Ec2Client($settings);
$result = $client->describeInstances([
"Filters" => [
[
"Name" => "instance-state-name",
"Values" => ["running"],
]
],
]);
var_dump($result);