2013-07-24 45 views
1

假設作曲者已安裝,您需要設置ec2客戶端。如何統計AWS PHP SDK2中的實例數

+1

你爲什麼要發佈一個問題並自己回答? –

+0

@無情「要清楚地說出來,問問和回答你自己的問題不僅僅是可以的,而是明確的鼓勵。」 [stackoverflow.com](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) –

回答

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函數。否則它將不可見。