嗨,我开始使用 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 用于“跑步”