2013-06-26 3 views
2

Я был в состоянии получить полный список тегов из всех моих экземпляров EC2 с помощью PHP SDK, но я изо всех сил, чтобы отфильтровать результаты вплоть до конкретного экземпляра ...Amazon AWS SDK PHP 2 - Фильтровать теги по экземпляру?

// Collect instance information 
    $sInstanceId = file_get_contents('http://169.254.169.254/latest/meta-data/instance-id'); // 'i-52da5b1f' 
    $sAvailabilityZone = file_get_contents('http://169.254.169.254/latest/meta-data/placement/availability-zone'); // 'eu-west-1b' 
    $sRegion = preg_replace('/^(.*)([0-9]{1})([a-zA-Z]{1})/', '$1$2', $sAvailabilityZone); 

    use Aws\Common\Aws; 
    use Aws\Ec2\Command\DescribeTags; 
    use Aws\Common\Enum\Region; 

    // Set up the global AWS factory 
    $oAWS = Aws::factory(array(
      'key' => CONST_AWS_ACCESS_KEY, 
      'secret' => CONST_AWS_SECRET_KEY, 
      'region' => $sRegion 
    )); 

    // Query EC2 for tags 
    $oEC2Client = $oAWS->get('ec2'); 
    $oModel = $oEC2Client->describeTags()->toArray(); 

Я пробовал изменение вызова для описанияTags to ...

$oModel = $oEC2Client->describeTags(array(
      "Filters" => array(
        array("Name" => "resource-id", "Value" => $sInstanceId) 
      ) 
    ))->toArray(); 

Но это, похоже, не имеет значения. Может ли кто-нибудь пролить свет на это для меня, пожалуйста?

ответ

5

API docs for Ec2Client.describeTags показать, что Value должно быть действительно Values и должно быть массивом. Попробуйте следующее:

$oModel = $oEC2Client->describeTags(array(
    "Filters" => array(
     array("Name" => "resource-id", "Values" => array($sInstanceId)) 
    ) 
))->toArray(); 
Смежные вопросы