分12前回の(1)はこちらから。Services)を利用することも多いでしょう。Kit)が各言語向けに提供されています。公式SDKはRubyやPHP,Node.js,Goなど一通りの言語に対応していますが,残念ながらPerlのSDKは公開されていません。その代わり,CPANにはAWSが提供する公式のコマンドラインインタフェース(awsコマンド)をラップする,AWS::CLIWrapperというモジュールが公開されています。本節ではAWS::CLIWrapperの利用例として,EC2インスタンスの起動と終了,そしてELBの操作方法を紹介します。AWS::CLIWrapperを利用するにあたっては,AWSのアクセスキーIDとシークレットアクセスキーが必要です。AWS::CLIWrapperを利用する前に,環境変数AWS_ACCESS_KEY_IDにアクセスキーIDを,AWS_SECRET_ACCESS_KEYにシークレットアクセスキーをセットしておきましょう。EC2インスタンスの起動と終了リスト1は,AWS::CLIWrapperを利用してEC2インスタンスの起動と停止を行うコードです。(1)では,AWS::CLIWrapperのオブジェクトを生成しています。'ap-northeast-1'を引数として与えることで東京リージョンを指定しています。リージョンは,環境変数AWS_DEFAULT_REGIONで設定することもできます。(2)では,AWS::CLIWrapperのオブジェクトから実際にEC2を操作しています。AWS::CLIWrapperはメソッドで操作対象となるサービスを指定し,メソッドの第1引数でそのサービスに対して行う操作を指定できます。ここではec2メソッドを利用し,メソッドの第1引数にrun-instancesを与えることで,EC2インスタンスの起動を行っています。このメソッドは生成したEC2インスタンスに関する情報を返すので,$instanceで受け取っています。AWS::CLIWrapperから利用できるメソッドについてはAWS::CLIWrapperのドキュメントを,それぞれのサービスに対してどのような操作ができるか,そのときどのようなレスポンスが得られるかについてはawsコマンドのヘルプを参考にするとよいでしょう。(3)では,EC2インスタンスを終了しています。ec2メソッドに対してterminate-instanceの操作を行うことで,instance-idsで指定したインスタンスIDのEC2インスタンスを終了できます。ELBの操作と確認AWSを利用してEC2上にサービスを展開する場合,たいていはEC2の前段にELBを設置します。AWS::CLIWapperを利用すれば,ELBの操作もPerlのコードで実現できます。リスト2は,AWS::CLIWrapperを利用したELBへのEC2インスタンスの登録と,そのヘルスチェックの結果を確認するコードです。(1)では,load-balancer-nameで指定したmyapp-elbという名前のELBに対して,instancesで指定したi-xxxxxxxxというインスタンスIDのEC2インスタンスを登録しています。このとき,instancesは配列リファレンスの中に複数のインスタンスIDを指定することで,一度に複数のEC2インスタンスをELBに登録できます。ELBにEC2インスタンスを登録すると,ELBは設定に従ってEC2インスタンスに対してヘルスチェックを行います。ヘルスチェックのステータスがInServiceにならない限り,ELBはユーザーからのアクセスをEC2インスタンスに転送しません。そのため,EC2インスタンスをELBに登録したあとに,ヘルスチェックのステータスが正しくInServiceになったかどうかを確認する必要があります。(2)は,ELBに登録されたEC2インスタンスのヘルスチェックのステータスを確認するコードです。EC2インスタンス内で稼働するアプリケーションの状況によっては,ステータスがすぐにInServiceにならない場合もあるので,このように何度かリトライする実装にするとよいでしょう。次にヘルスチェックのステータスを確認するコードを詳しく見てみましょう。(3)では,EC2インスタンスをELBに登録するときと同様に,loadbalancer-nameでELBの名前を指定して,ELBがEC2インスタンスに対して実施したヘルスチェックのステータスを取得しています。(3)で取得したヘルスチェックのステータスを確認しています。ELBに登録されたEC2インスタンスについて,ヘルスチェックが通っていればInService,そうでなければOutServiceがインスタンスIDとともに表示されます。万が一EC2インスタンスにデプロイされたアプリケーションにバグがあった場合など,何度リトライしてもヘルスチェックが成功せず,ステータスがInServiceにならないこともあります。(6)のように何かしらの警告を出力するべきです。ここでは省略していますが,場合によっては警告だけでなく,ELBに登録したEC2インスタンスを自動的に終了するなどの処理も必要になるでしょう。Code著者プロフィール福本貴之(ふくもとたかゆき・papix)株式会社ガイアックスのエンジニア。2014年に入社して以来,主にPerlを使った社内基盤ツールの開発や,エンジニアリング環境の改善,技術広報,そして採用などに取り組んでいる。2012年にPerlの初心者向け勉強会「Perl入学式」を立ち上げて以降,エンジニアに対する教育や成長に関心を持っている。趣味は鉄道を使った旅行と地域のPerlコミュニティへの参加,そして食べ歩き。寿司とラーメンには目がない。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。