如何计算AWS PHP SDK2中的实例数

时间:2013-07-24 17:27:27

标签: php amazon-web-services amazon-ec2 composer-php

假设已安装composer,您需要设置ec2客户端。

1 个答案:

答案 0 :(得分:2)

假设使用Composer推荐的方法进行SDK设置。首先调用aws_setup然后创建具有安全凭证的ec2客户端对象。由于已调用composer,它将自动加载所需的库。

然后使用DescribeInstances获取所有正在运行的实例。

我打包了函数countInstances,因此可以重用它。你可以用DescribeInstances来调用 使用数组来过滤最后发布的结果。

设置如下:

require('/PATH/TO/MY/COMPOSER/vendor/autoload.php');

function aws_setup()
{
    $conf_aws = array();
    $conf_aws['key'] = 'MYKEY';
    $conf_aws['secret'] = 'MYSECRET';
    $conf_aws['region'] = 'us-east-1';
    return $conf_aws;
}

function countInstances($list)
{
  $count = 0;
  foreach($list['Reservations'] as $instances)
  {
    foreach($instances['Instances'] as $instance)
    {
      $count++;
    }
  }
  return $count;
}

$config = aws_setup();

$ec2Client = \Aws\Ec2\Ec2Client::factory($config);

$list = $ec2Client->DescribeInstances();

echo "Number of running instances: " . countInstances($list);

如果您想过滤结果,请尝试使用此类作为DescribeInstances的参数:

array('Filters' => array(array('Name' => 'tag-value', 'Values' => array('MY_INSTANCE_TAG'))));

代码执行没有错误,但我必须调整它以在此处发布。

编辑:添加了countInstances函数的实例列表。否则它将不可见。