Home > AWS | PHP > AWS SDK for PHP 2 をインストールして AutoScaling の設定を行う

AWS SDK for PHP 2 をインストールして AutoScaling の設定を行う

  • 2013-04-17 (水) 11:45
  • AWS | PHP
この記事の所要時間: 1053

PHP から AWS を操作するためのライブラリ「AWS SDK for PHP」の新バージョン「AWS SDK for PHP 2」を触ってみました。

AWS SDK for PHP 2 リリース直後は対応サービスが少なかったのですが、現在は主要なサービスは網羅しているようです。

AWS SDK for PHP 2 の主な特徴

https://github.com/aws/aws-sdk-php

  • PHP5.3.3以降
  • PSR-0, PSR-1, PSR-2対応
  • Composer, PEAR でのインストール、phar ファイルの配布
  • Guzzleベース
  • namespace, Iterators, Waiters, Enums, レスポンスモデル, 例外など、いまどきの実装に対応

AWS SDK for PHP 2 のインストール

AWS SWK for PHP 2 は、phar ファイル、Composer 、PEAR のいずかれの方法でインストールすることができます。
phar ファイルが一番お手軽(ダウンロードするだけ)なのですが、ソースが読みづらいのと、APC が効かないという話もあるので、ここでは Composer でインストールします。

  • まず composer.json を作成します。
    $ vim composer.json
    {
      "require": {
        "aws/aws-sdk-php": "2.*"
      }
    }
    

  • 次に Composer をインストールします。
    $ curl -s "http://getcomposer.org/installer" | php
    #!/usr/bin/env php
    All settings correct for using Composer
    Downloading...
    
    Composer successfully installed to: /path/to/composer.phar
    Use it: php composer.phar
    

  • Composer で AWS SDK for PHP 2 をインストールします。依存ライブラリもダウンロードするので時間がかかる場合があります。
    $ php composer.phar install
    Loading composer repositories with package information
    Installing dependencies
      - Installing symfony/event-dispatcher (v2.2.1)
          Loading from cache
    
            - Installing guzzle/guzzle (v3.3.1)
          Loading from cache
    
            - Installing aws/aws-sdk-php (2.2.1)
          Loading from cache
    
          symfony/event-dispatcher suggests installing symfony/dependency-injection (2.2.*)
      symfony/event-dispatcher suggests installing symfony/http-kernel (2.2.*)
      aws/aws-sdk-php suggests installing doctrine/cache (Adds support for caching of credentials and responses)
      aws/aws-sdk-php suggests installing monolog/monolog (Adds support for logging HTTP requests and responses)
      aws/aws-sdk-php suggests installing symfony/yaml (Eases the ability to write manifests for creating jobs in AWS Import/Export)
      Writing lock file
      Generating autoload files
    

    インストールが完了すると以下のようなファイル、ディレクトリが存在します。

    $ ls
    composer.json composer.lock composer.phar vendor
    

    AWS SDK for PHP 2 の参考情報

    • github

    基本的な情報が README.md にあります。下記の User Guide や API リファレンスなどへのリンクもあります。

    https://github.com/aws/aws-sdk-php/

    • User Guide

    AWS SDK for PHP 2 の情報ならこれが一番分かりやすいです。SDK にも aws/aws-sdk-php/docs 以下に含まれていますが、下記サイトからも参照できます。
    インストール方法やサンプルソース、アーキテクチャ、パフォーマンスガイド、旧バージョンからのマイグレーションなど充実しています。

    AWS SDK for PHP 2 — AWS SDK for PHP 2.2.1 documentation

    Auto Scaling の設定

    現行は API でしか操作できない Auto Scaling の設定を AWS SDK for PHP 2 でやってみましょう。
    ELB 配下に立てる Web サーバのインスタンスを Auto Scaling で起動するイメージです。
    必要な ELB と Web サーバの AMI はあらかじめ用意しておきます。

    Auto Scaling の設定

    Auto Scaling の設定を行います。
    AWS SDK for PHP 2 の書き方としては、AWS の API へのパラメータを連想配列で渡す形になります。基本は全てのパラメータを連想配列で渡すだけなので分かりやすいですね。(このあたりは CakePHP っぽい)

    Auto Scaling 設定内容を確認

    Auto Scaling の内容は Management Console では確認できないので、API で確認します。

    実行すると以下のように設定された AutoScaling が確認できます。

    array(2) {
      'AutoScalingGroups' =>
      array(1) {
        [0] =>
        array(18) {
          'Tags' =>
          array(0) {
          }
          'SuspendedProcesses' =>
          array(0) {
          }
          'AutoScalingGroupName' =>
          string(2) "as"
          'HealthCheckType' =>
          string(3) "ELB"
          'CreatedTime' =>
          string(24) "2013-04-16T15:10:20.753Z"
          'EnabledMetrics' =>
          array(0) {
          }
          'LaunchConfigurationName' =>
          string(7) "as_conf"
          'Instances' =>
          array(2) {
            [0] =>
            array(5) {
              'HealthStatus' =>
              string(7) "Healthy"
              'AvailabilityZone' =>
              string(15) "ap-northeast-1c"
              'InstanceId' =>
              string(10) "xxxxxxxxxxxx"
              'LaunchConfigurationName' =>
              string(7) "as_conf"
              'LifecycleState' =>
              string(9) "InService"
            }
            [1] =>
            array(5) {
              'HealthStatus' =>
              string(7) "Healthy"
              'AvailabilityZone' =>
              string(15) "ap-northeast-1c"
              'InstanceId' =>
              string(10) "xxxxxxxxxxxx"
              'LaunchConfigurationName' =>
              string(7) "as_conf"
              'LifecycleState' =>
              string(9) "InService"
            }
          }
          'DesiredCapacity' =>
          string(1) "2"
          'AvailabilityZones' =>
          array(1) {
            [0] =>
            string(15) "ap-northeast-1c"
          }
          'LoadBalancerNames' =>
          array(1) {
            [0] =>
            string(2) "as"
          }
          'MinSize' =>
          string(1) "2"
          'VPCZoneIdentifier' =>
          array(0) {
          }
          'HealthCheckGracePeriod' =>
          string(3) "200"
          'DefaultCooldown' =>
          string(3) "300"
          'AutoScalingGroupARN' =>
          string(125) "arn:aws:autoscaling:ap-northeast-1:xxxxxxxxxxxxxxxxxxxxxxxxx"
          'TerminationPolicies' =>
          array(1) {
            [0] =>
            string(7) "Default"
          }
          'MaxSize' =>
          string(1) "5"
        }
      }
      'ResponseMetadata' =>
      array(1) {
        'RequestId' =>
        string(36) "xxxx"
      }
    }
    

    Auto Scaling を停止、削除

    Auto Scaling をそのままにしておくとインスタンスを停止しても、また起動してしまうので、停止、削除を行います。この処理を行うと Auto Scaling で起動したインスタンスも停止します。

    Auto Scaling の 注意点

    • HealthCheckType=ELB の時は、HealthCheckGracePeriod の指定が必要。
    • HealthCheckGracePeriod が短すぎると、インスタンス起動してELBのヘルスチェックが通るまでに異常とみなされて、インスタンスが終了する。
      => インスタンスが MinSize に足りなければ、起動->終了を繰り返して課金だけされる恐れがある。(EC2 インスタンスは一度起動すると最低 1 時間分は課金される。)
    • ヘルスチェックで異常とみなされたインスタンスは強制的に Terminate される。
    • 試した後は Auto Scaling を止めておく。
    Pocket

  • follow us in feedly

    Home > AWS | PHP > AWS SDK for PHP 2 をインストールして AutoScaling の設定を行う

    検索
    フィード
    メタ情報

    Return to page top