Programming AWS with Perl at YAPC::Asia 2013

5,241 views
5,077 views

Published on

YAPC::Asia 2013での発表資料です。

33ページ目のデモに使ったサンプルスクリプトはこちら。
https://github.com/horiyasu/yapcasia2013/blob/master/create_vpc.pl

Published in: Technology

Programming AWS with Perl at YAPC::Asia 2013

  1. 1. Programming AWS with Perl 2013年9月21日 アマゾン データ サービス ジャパン 株式会社 テクニカルエバンジェリスト 堀内康弘 (@horiuchi)
  2. 2. Who  am  I  ? 堀内 康弘 (ほりうち やすひろ) • 1978年生まれ 山梨県出身 AWS テクニカルエバンジェリスト • 130回以上の講演 • 35回以上のハンズオン • 120本以上のブログ記事(AWSの最新情報を投稿) Amazon Web Services ブログ http://aws.typepad.com/aws_japan/ 10+ years web engineer in startups • Director of V-cube (perl), 2001 - 2006 • CTO of FlipClip (perl), 2006 - 2009 • CTO of gumi (python), 2009 - 2012 @horiuchi horiyasu フォロー、友達申請歓迎! ※2012年年の実績
  3. 3. 私のPerl歴 KENTのCGIの掲示板からスタート Shibuya.pmに参加し衝撃をうける Sledgeでオブジェクト指向を学ぶ MIME::Lite::TTとかSledgeプラグインをCPANに上げる Pythonの会社に入る Pythonの会社で、かっとなって、Perlで集計プログラム を書いたら、メンテできる人がいなくて嫌な顔される
  4. 4. Agenda AWSとは? AWS Command Line Interface AWS::CLIWrapper
  5. 5. AWSとは?
  6. 6. 190カ国以上の数⼗十万のお客様が利利⽤用 ⽇日本でも20,000以上のお客様
  7. 7. Gartner  Magic  Quadrant  for  Cloud   Infrastructure  as  a  Service (August  19,  2013) Gartner  “Magic  Quadrant  for  Cloud  Infrastructure  as  a  Service,”  Lydia  Leong,  Douglas  Toombs,  Bob  Gill,  Gregor  Petri,  Tiny  Haynes,  August  19,  2013.  This  Magic  Quadrant  graphic  was  published  by   Gartner,  Inc.  as  part  of  a  larger  research  note  and  should  be  evaluated  in  the  context  of  the  enPre  report..  The  Gartner  report  is  available  upon  request  from  Steven  Armstrong   (asteven@amazon.com).  Gartner  does  not  endorse  any  vendor,  product  or  service  depicted  in  its  research  publicaPons,  and  does  not  advise  technology  users  to  select  only  those  vendors  with  the   highest  raPngs.  Gartner  research  publicaPons  consist  of  the  opinions  of  Gartner's  research  organizaPon  and  should  not  be  construed  as  statements  of  fact.  Gartner  disclaims  all  warranPes,   expressed  or  implied,  with  respect  to  this  research,  including  any  warranPes  of  merchantability  or  fitness  for  a  parPcular  purpose. 7
  8. 8. The  Forrester  Wave™:  Enterprise  Public   Cloud  Plaorms,  Q2  2013 Forrester  Wave™:  Enterprise  Public  Cloud  Plaorms   For  Coders,  Q2  ‘13 Forrester  Wave™:  Enterprise  Public  Cloud  Plaorms   For  DevOps  Pros,  Q2  ‘13 Forrester  Wave™:  Enterprise  Public  Cloud  Plaorms For  AD&D  Leaders,  Q2  ‘13 The  Forrester  Wave™  is  copyrighted  by  Forrester  Research,  Inc.  Forrester  and  Forrester  Wave™  are  trademarks  of  Forrester  Research,  Inc.   The  Forrester  Wave™  is  a  graphical  representaPon  of  Forrester's  call  on  a  market  and  is  plobed  using  a  detailed  spreadsheet  with  exposed   scores,  weighPngs,  and  comments.  Forrester  does  not  endorse  any  vendor,  product,  or  service  depicted  in  the  Forrester  Wave.   InformaPon  is  based  on  best  available  resources.  Opinions  reflect  judgment  at  the  Pme  and  are  subject  to  change.
  9. 9. 世界に拡がるAWSインフラストラクチャ カリフォルニア ダブリン シンガポール 東京 オレゴン バージニア サンパウロ GovCloud 9  リージョン 25  アベイラビリティゾーン 41  エッジロケーション シドニー ⽇日本を含めて世界8リージョンから選択可能
  10. 10. お客様のフィードバックに基づく迅速なイノベーション 2007 2008 2009 2010 2011 2012 159 82 61 48 24 9 AWSオレゴンリージョン Elastic Beanstalk(ベータ) Amazon SES (ベータ) AWS CloudFormation Amazon RDS for Oracle AWS Direct Connect AWS GovCloud(アメリカ) Amazon ElastiCache VPC仮想ネットワーキング VPC専用インスタンス SMSテキスト通知 Amazon SNS Amazon CloudFront Amazon Route 53 S3バケットポリシー RDS Multi-AZサポート RDSリザーブドDB AWS Import/Export Amazon RDS Amazon VPC Amazon EMR EC2 Auto Scaling EC2リザーブドインスタンス Direct Connectを6サイト新設 DynamoDB VPCでのRDS AWS Trusted Advisor VPCでのCloudFormation AWS Storage Gateway Amazon Glacier コスト配分とタグ付け CloudFrontライブストリーミング Amazon CloudSearch AWS Marketplace Red Hat Reserved Instance EC2の新しいインスタンスタイプ Multi-AZ Oracle RDS RDS SQL Server EC2 RI Marketplace VM Export VPCでの複数のIP Provisioned IOPS Oracle Data Pump 新しいアジアパシフィックリージョン (シドニー) AWS Data Pipeline 新サービス・機能追加の数
  11. 11. お客様のフィードバックに基づく迅速なイノベーション 1⽉月 2⽉月 3⽉月 4⽉月 5⽉月 2019 21 18 14 AWS Management Console のタブレットとモバイルのサ ポート Elastic Transcoder Amazon EC2の料金値下げ、 M3スタンダードインスタンス のグローバル展開、データ転 送料金の値下げ Amazon Redshiftが誰でも利 用可能に AWS OpsWorks Linux用Amazon CloudWatch 監視スクリプトでのIAM Role とAuto Scalingのサポート Amazon SQSと SNSの値下 げと無料利用枠の拡大 – SQS の50%値下げ Amazon EC2リザーブドインス タンスの新たな値下げ AWS無料利用枠にAmazon ElastiCacheを追加 Amazon DynamoDBの値下げ AWS Elastic Beanstalk for Node.js Amazon RDSのデータベースイ ンスタンスあたり3TB、 30,000 PIOPSまで拡張可能 新しいインスタンスタイプでの EBS最適化サポートの導入 Amazon Redshift と EC2 ハイスト レージインスタンスが米国西部(オレ ゴン)で利用可能に S3のリクエスト料金を値下げ EC2のタグコンソールページ Windowsのオンデマンド EC2インス タンスの値下げ AWS Elastic BeanstalkがVPCとIAM ロールをサポート DynamoDBにセカンダリインデック ス機能が追加 グローバル認定プログラム 韓国ソウルに新しいエッジロ ケーション Node.js SDKにGA EBSボリュームあたり4000IOPS シアトルにAWS Direct Connect OpsWorksがELB、CloudWatch メトリクスをサポート DynamoDBに低コストで読み込 み可能なパラレルスキャン追加 Elastic Transcodeに7つの新機能 2013年5ヶ月間で92
  12. 12. 仮想サーバだけではない 30を超えるクラウドサービス群を提供 お客様のアプリケーション 認証  AWS  IAM モニタリング Amazon   CloudWatch   Web管理理画⾯面 Management   Console デプロイと⾃自動化 AWS  Elastic  Beanstalk AWS  Cloud  Formation AWS  OpsWorks IDEプラグイン Eclipse Visual  Studio ライブラリ  &  SDKs Java,  PHP,  .NET,   Python,  Ruby,  node.js デプロイ&管理理 AWS  グローバルインフラ リージョン、アベイラビリティゾーン、エッジロケーション AZRegion ネットワーク  &  ルーティング Amazon  VPC  /  Amazon  Elastic  Load  Balancer  /  Amazon  Route  53  /AWS  Direct  Connect インフラストラク チャサービス コンピュータ処理理  Amazon  EC2 Auto  Scale ストレージ  Amazon  S3 Amazon  EBS Amazon  Glacier AWS  StorageGateway データベース Amazon  RDS Amazon  DynamoDB Amazon  ElastiCache Amazon  Redshift コンテンツ配信 Amazon  CloudFront メッセージ Amazon  SNS Amazon  SQS Amazon  SES 分散処理理 Elastic  MapReduce 検索索エンジン   Amazon  Cloud  Search トランスコード Amazon  Elastic  Transcoder ワークフロー管理理 Amazon  SWF アプリケーション サービス
  13. 13. AWSのサービス操作と⾔言えば AWS Management Console AWSコマンドラインツール
  14. 14. これらの裏裏側では・・・  各サービスの各操作にAPIが定義されている AWSでは・・・ • ⼈人間がGUIまたはCUI越しに叩く • プログラミングしてそれを⾃自動化・簡易易化・カスタマ イズ • ⼈人間が⼿手でやらなくてはいけない事をプログラミングして⾃自 動化できる、これがSDKで簡単に実現可能 à AWSの実は最も優れた⼀一⾯面
  15. 15. 必要な時に無制限に利利⽤用できるリソース コンピュート ストレージ セキュリティ スケーリング データベース ネットワーキング モニタリング メッセージング ワークフロー DNS ロードバランサ バックアップCDN オンデマンド 使⽤用した分だけ ⽀支払い 均⼀一なサービス 必要な時にすぐ に使える
  16. 16. APIを介してプログラムで制御可能なリソース コンピュート ストレージ セキュリティ スケーリング データベース ネットワーキング モニタリング メッセージング ワークフロー DNS ロードバランサ バックアップCDN オンデマンド 使⽤用した分だけ ⽀支払い 均⼀一なサービス 必要な時にすぐ に使える API
  17. 17. AWS  SDKとは AWSのサービスをプログラムで操作できる関数 群 • http://aws.amazon.com/jp/tools/   • REST/SOAP  APIのラッパー
  18. 18. 動作イメージ 起動、停止 Put,Get DB起動 バックアップ 情報取得 REST SOAPAWS SDK 認証情報
  19. 19. AWS  CLI
  20. 20. AWS  Command  Line  Interface  (CLI) これひとつでAWSの主要サービスを全て操作可能 2012年12月にデベロッパープレビュー版公開 2013年9月に正式版に 最新版は1.1.0 (2013年9月21日現在) Python 2.6.x 以上が必要
  21. 21. 2013年年9⽉月21⽇日現在、27のサービスに対応 EMR、CloudFront、CloudSearch、Data  Pipelineの最近サポート
  22. 22. インストール $pip  install  awscli
  23. 23. 初期設定 環境変数かコンフィグファイルで設定 $  cat  ~∼/.aws/config                                                                                                                                                                                                             [default] aws_̲access_̲key_̲id  =  AKIXXXXYYYYYZZZZ aws_̲secret_̲access_̲key  =  AWSAWSAWSZZZZZZ region  =  ap-‐‑‒northeast-‐‑‒1
  24. 24. コマンド⼊入⼒力力補完の有効化 コマンドが非常に多いので補完がないとツラいです。 • bashの場合 • tcshの場合 • zshの場合 $  complete  -‐‑‒C  aws_̲completer  aws $  complete  aws  'p/*/`̀aws_̲completer`̀/' $  source  bin/aws_̲zsh_̲completer.sh
  25. 25. 使い⽅方 aws [サービス名] アクション オプション #  EC2インスタンス⼀一覧を取得 $  aws  ec2  describe-‐‑‒instances #  S3のバケット⼀一覧を取得 $  aws  s3  ls #  S3とローカルのディレクトリをsync $  aws  s3  sync  .  s3://bucketname/dir
  26. 26. 出⼒力力形式は3タイプから選択可 --output オプションでJSON、Text、Tableを指定可能 デフォルトはJSON形式 #  EC2インスタンス⼀一覧をJSON形式で取得 $  aws  ec2  describe-‐‑‒instances #  EC2インスタンス⼀一覧をテキスト形式で取得 $  aws  ec2  describe-‐‑‒instances  -‐‑‒-‐‑‒output  text #  EC2インスタンス⼀一覧をテーブル形式で取得 $  aws  ec2  describe-‐‑‒instances  -‐‑‒-‐‑‒output  table
  27. 27. わからない時はhelpコマンド helpを最後につけることでドキュメントが表示される $  aws  help $  aws  ec2  help $  aws  ec2  describe-‐‑‒instances  help  
  28. 28. AWS  CLIに関するリソース AWS CLI ホームページ • http://aws.amazon.com/cli/ ソースコードリポジトリ (GitHub) • https://github.com/aws/aws-cli 入門ガイド • http://docs.aws.amazon.com/cli/latest/userguide/cli-chap- welcome.html CLI リファレンス • http://docs.aws.amazon.com/cli/latest/reference/ AWS ブログ • http://bit.ly/14pcwZM
  29. 29. AWS::CLIWRAPPER
  30. 30. AWS::CLIWrapper @hirose31 さん作のAWS CLIのラッパーモジュール こんな感じで違和感なく使える。 use  AWS::CLIWrapper; my  $aws  =  AWS::CLIWrapper-‐‑‒>new(            region  =>  'ap-‐‑‒northeast-‐‑‒1', ); my  $res  =  $aws-‐‑‒>ec2(            ʻ‘describe-‐‑‒instancesʼ’,  {                        ʻ‘instance_̲idsʼ’  =>  [ʻ‘ʼ’i-‐‑‒xxxxxx,  ʼ’i-‐‑‒yyyyyyyʼ’],            } );
  31. 31. デモ S3のバケット一覧の取得 use  AWS::CLIWrapper; use  Data::Dumper; my  $aws  =  AWS::CLIWrapper-‐‑‒>new(            region  =>  'ap-‐‑‒northeast-‐‑‒1', ); my  $res  =  $aws-‐‑‒>s3(  ʻ‘lsʼ’  =>  {}); print  Dumper($res);
  32. 32. リージョン名:  ap-‐‑‒northeast-‐‑‒1VPC  ID: CIDR:  10.0.0.0/16 Zone:  ap-‐‑‒northeast-‐‑‒1 subnet  id: CIDR:  10.0.0.0/24 Route  table: Network  ACL:Internet   Gateway id: Web  サーバー パブリックIP プライベートIP デモ: VPCから一気に作ってみます
  33. 33. まとめ
  34. 34. AWS  CLIはAWSのほぼ全てのリソースを制御可能 AWS  CLIをラップした、AWS::CLIWrapperを使えば、 AWSのほぼ全てのリソースをperlからコントロール可能に • バックエンド側の開発コストを最小化 • バックエンド側の運用コストを最小化 • スケーラビリティの心配なし • 金額面でもコスト削減に AWSはコーディングする⽅方の⼒力力を最⼤大限に引き出すインフラ • その恩恵はサーバ側だけでなくクライアントアプリにも! • HAPPY  CODING!! まとめ
  35. 35. 最後に
  36. 36. AWS  無料料使⽤用枠(12ヵ⽉月) Amazon  EC2  750時間/⽉月のLinux  マイクロインスタンス • 複数インスタンスの場合も、合計750時間/月であれば無料利用枠に該当 Amazon  EC2  750時間/⽉月のWindows  Server  マイクロインスタンス • 複数インスタンスの場合も、合計750時間/月であれば無料利用枠に該当 Amazon  EBS • 30 GB に加え、200万 I/O、スナップショット ストレージ 1 GB Elastic  Load  Balancing • 750時間に加え 15 GB 分のデータ処理 帯域幅「送信(アウト)」15  GB Amazon  S3  ストレージ • 5 GBの容量、20,000 Get リクエスト、2,000 Put リクエスト DynamoDB、SimpleDB、SWF、SQS、SNS、CloudWatch http://aws.amazon.com/jp/free/
  37. 37. 9/28  JAWS  FESTA  Kansai  2013 9/28 (土) 京セラドームにて開催 AWSのユーザーグループ (JAWS-UG)主催のイベント http://jfk2013.jaws-‐‑‒ug.jp/
  38. 38. 175を超えるセッション! Gameday! Hackathon! Boot Camp! ラボ! 展示会! パーティー! re:Invent  2013  参加ツアーの申し込みはこちら! http://bit.ly/reinvent2013japan 11⽉月12⽇日  (⽕火)  〜~  11⽉月15⽇日  (⾦金金)    の4⽇日間  ! ラスベガス・ベネチアンホテルで開催! 基調講演  ⽇日本語同時通訳! ⽇日本専⽤用トラック!  懇親ディナー! シアトルオフィス訪問! ※ツアー参加の特典です。

×