EC2で自分自身を停止する

アプリケーションの都合で、とある状況になったらEC2インスタンスを入れ替えたい。
AutoScalingとLoadBalancerを組み合わせている場合、ヘルスチェックに使用しているhtmlを削除すれば、異常と見なされてインスタンスが回収され、新しいインスタンスが立ち上がる。

が、今回はElastic Beanstalkのworker環境を使っているので、ヘルスチェック用htmlを削除しても、異常扱いにはなるがインスタンスの回収は自動で行われない。
仕方がないので、自分で停止することにした。

use Aws\Ec2\Ec2Client;

$instanceId = file_get_contents('http://169.254.169.254/latest/meta-data/instance-id’);
$ec2client = Ec2Client::factory(Configure::read('AWS'));
$ec2client -> stopInstances(array('InstanceIds' => array($instanceId)));