share facebook facebook twitter menu hatena pocket slack

Auto Scalingで指定時刻にEC2インスタンスを起動

鈴木 宏康

WRITTEN BY 鈴木 宏康

Auto Scalingの有名な使い方として、CPU使用率やSQSのキューサイズなど、CloudWatchのメトリクスの変化をトリガーに、インスタンス数を自動で増減させるものがありますが、実は、指定時刻や定期的にインスタンス数を増減させることも可能です。

では早速、今回もPHPを利用して試してみます。

今回は、インスタンスを起動していない状態から、指定時刻に1インスタンス起動するようにしてみました。

○create_launch_configuration

まずは、Auto Scalingの設定になります。
増減させるインスタンスのAMIやインスタンスタイプ、そして、セキュリティグループなどを登録します。

require_once("/opt/aws/php/sdk.class.php");

define("AWS_KEY"       , "AAAAAAAA");
define("AWS_SECRET_KEY", "SSSSSSSS");

$as = new AmazonAS();
$as->set_region(AmazonAS::REGION_APAC_NE1);
$response = $as->create_launch_configuration(
    "suz-lab",
    "ami-bcca7fbd",
    "t1.micro",
    array(
        "KeyName"        => "suz-lab_ap-northeast-1",
        "SecurityGroups" => array(
            "default"
        )
    )
);

var_dump($response);

○create_auto_scaling_group

次は、通常のAuto Scalingの振る舞いを指定します。
普段は、インスタンスが起動していない状態にしたいので、インスタンス数のMax/Minともに「0」としています。

require_once("/opt/aws/php/sdk.class.php");

define("AWS_KEY"       , "AAAAAAAA");
define("AWS_SECRET_KEY", "SSSSSSSS");

$as = new AmazonAS();
$as->set_region(AmazonAS::REGION_APAC_NE1);
$response = $as->create_auto_scaling_group(
    "suz-lab",
    "suz-lab",
    0,
    0,
    array(
        "ap-northeast-1a",
        "ap-northeast-1b"
    )
);

var_dump($response);

○put_scheduled_update_group_action

最後に、指定時刻にインスタンスを起動する設定になります。
5分後にAuto Scalingの振る舞いを、上記のMaxとMinが「0」の状態(インスタンスを起動させない状態)からMaxとMinが「1」の状態(常に1インスタンス起動している状態)にしています。

require_once("/opt/aws/php/sdk.class.php");

define("AWS_KEY"       , "AAAAAAAA");
define("AWS_SECRET_KEY", "SSSSSSSS");
date_default_timezone_set("Asia/Tokyo");

$as = new AmazonAS();
$as->set_region(AmazonAS::REGION_APAC_NE1);
$response = $as->put_scheduled_update_group_action(
    "suz-lab",
    "suz-lab",
    array(
        "Time"            => "+5 minutes",
        "MinSize"         => 1,
        "MaxSize"         => 1,
    )
);

var_dump($response);

以上で、5分後に自動でインスタンスが起動することを確認することができるはずです。

さらに、EndTimeを指定して、上記の変更を元に戻す時間も指定でき、Recurrence (Cron書式)を指定して、定期的に変更させることも可能です。

定時バッチは、上記の仕組みを使った方がコストダウンできますね。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。