以编程方式获取正在运行的 EC2 实例列表

以编程方式获取正在运行的 EC2 实例列表

嗨,我开始使用 aws,发现我们可以使用 aws php sdk 获取正在运行的服务器列表。还有其他方法可以获取所有 ec2 实例的列表吗?获取列表后,我想将数据从一个主实例同步到所有实例。单击按钮之类的操作也可以执行此操作。rsync、incron 是唯一的选择吗,还是也可以通过 aws php sdk 来完成。请提供一些教程链接。

答案1

我认为您会使用 AWS php sdk;
http://aws.amazon.com/sdkforphp/

按照入门指南设置您的密钥;
http://aws.amazon.com/articles/4261?_encoding=UTF8&jiveRedirect=1

然后使用 describe_instances 函数收集实例数组;
http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonEC2/describe_instances

看起来您可以构造和过滤以仅返回正在运行的实例,或者然后循环返回以使用 describe_instance_status 函数获取更详细的信息;
http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonEC2/describe_instance_status

类似下面的操作将会起作用...

<?php
require_once "/home/XXX/src/php-aws-sdk-1.5.3/sdk.class.php";
CFCredentials::set(array(
    'testing' => array(
        'key' => 'XXX',
        'secret' => '+YYY+',
        'default_cache_config' => '',
        'certificate_authority' => false
    ),
    // Specify a default credential set to use if there are more than one.
    '@default' => 'testing'
));
$ec2 = new AmazonEC2();
$response = $ec2->describe_instances(array( "Filter" => array(
  array("Name"=>"instance-state-code", "Value" => "16"))));
foreach($response as $res){
 var_dump( $res );
}
?>

实例状态代码 16 用于“跑步”

相关内容