Programming AWS with Perl

Programming AWS with Perl

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

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

673ee599ed05cce5299c08e6d752ad0e?s=128

Yasuhiro Horiuchi

September 21, 2013
Tweet

Transcript

  1. Programming AWS with Perl 2013೥9݄21೔ ΞϚκϯ σʔλ αʔϏε δϟύϯ גࣜձࣾ

    ςΫχΧϧΤόϯδΣϦετ ງ಺߁߂ (@horiuchi)
  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. 私のPerl歴 KENTͷCGIͷܝࣔ൘͔Βελʔτ Shibuya.pmʹࢀՃ͠িܸΛ͏͚Δ SledgeͰΦϒδΣΫτࢦ޲ΛֶͿ MIME::Lite::TTͱ͔SledgeϓϥάΠϯΛCPANʹ্͛Δ PythonͷձࣾʹೖΔ PythonͷձࣾͰɺ͔ͬͱͳͬͯɺPerlͰूܭϓϩάϥϜ Λॻ͍ͨΒɺϝϯςͰ͖Δਓ͕͍ͳͯ͘ݏͳإ͞ΕΔ

  4. Agenda AWSͱ͸? AWS Command Line Interface AWS::CLIWrapper

  5. AWSとは?

  6. 190カ国以上の数⼗十万のお客様が利利⽤用 ⽇日本でも20,000以上のお客様

  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. The  Forrester  Wave™:  Enterprise  Public   Cloud  Pla\orms,  Q2  2013

    Forrester  Wave™:  Enterprise  Public  Cloud  Pla\orms   For  Coders,  Q2  ‘13 Forrester  Wave™:  Enterprise  Public  Cloud  Pla\orms   For  DevOps  Pros,  Q2  ‘13 Forrester  Wave™:  Enterprise  Public  Cloud  Pla\orms 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. 世界に拡がるAWSインフラストラクチャ カリフォルニア ダブリン シンガポール 東京 オレゴン バージニア サンパウロ GovCloud 9

     リージョン 25  アベイラビリティゾーン 41  エッジロケーション シドニー ⽇日本を含めて世界8リージョンから選択可能
  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. お客様のフィードバックに基づく迅速なイノベーション 1⽉月 2⽉月 3⽉月 4⽉月 5⽉月 20 19 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. 仮想サーバだけではない 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  グローバルインフラ リージョン、アベイラビリティゾーン、エッジロケーション AZ Region ネットワーク  &  ルーティング 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. AWSのサービス操作と⾔言えば AWS Management Console AWSίϚϯυϥΠϯπʔϧ

  14. これらの裏裏側では・・・  各サービスの各操作にAPIが定義されている AWSでは・・・ • ⼈人間がGUIまたはCUI越しに叩く • プログラミングしてそれを⾃自動化・簡易易化・カスタマ イズ • ⼈人間が⼿手でやらなくてはいけない事をプログラミングして⾃自

    動化できる、これがSDKで簡単に実現可能 à AWSの実は最も優れた⼀一⾯面
  15. 必要な時に無制限に利利⽤用できるリソース コンピュート ストレージ セキュリティ スケーリング データベース ネットワーキング モニタリング メッセージング ワークフロー

    DNS ロードバランサ バックアップ CDN オンデマンド 使⽤用した分だけ ⽀支払い 均⼀一なサービス 必要な時にすぐ に使える
  16. APIを介してプログラムで制御可能なリソース コンピュート ストレージ セキュリティ スケーリング データベース ネットワーキング モニタリング メッセージング ワークフロー

    DNS ロードバランサ バックアップ CDN オンデマンド 使⽤用した分だけ ⽀支払い 均⼀一なサービス 必要な時にすぐ に使える API
  17. AWS  SDKとは AWSのサービスをプログラムで操作できる関数 群 • http://aws.amazon.com/jp/tools/   • REST/SOAP  APIのラッパー

  18. 動作イメージ ىಈɺఀࢭ Put,Get DBىಈ όοΫΞοϓ ৘ใऔಘ REST SOAP AWS SDK

    ೝূ৘ใ
  19. None
  20. AWS  CLI

  21. AWS  Command  Line  Interface  (CLI) ͜ΕͻͱͭͰAWSͷओཁαʔϏεΛશͯૢ࡞Մೳ 2012೥12݄ʹσϕϩούʔϓϨϏϡʔ൛ެ։ 2013೥9݄ʹਖ਼ࣜ൛ʹ ࠷৽൛͸1.1.0 (2013೥9݄21೔ݱࡏ)

    Python 2.6.x Ҏ্͕ඞཁ
  22. 2013年年9⽉月21⽇日現在、27のサービスに対応 EMR、CloudFront、CloudSearch、Data  Pipelineの最近サポート

  23. インストール $pip  install  awscli

  24. 初期設定 ؀ڥม਺͔ίϯϑΟάϑΝΠϧͰઃఆ $  cat  ~∼/.aws/config          

                                                                                                                                                                                                      [default] aws_̲access_̲key_̲id  =  AKIXXXXYYYYYZZZZ aws_̲secret_̲access_̲key  =  AWSAWSAWSZZZZZZ region  =  ap-‐‑‒northeast-‐‑‒1
  25. コマンド⼊入⼒力力補完の有効化 ίϚϯυ͕ඇৗʹଟ͍ͷͰิ׬͕ͳ͍ͱπϥ͍Ͱ͢ɻ • bashͷ৔߹ • tcshͷ৔߹ • zshͷ৔߹ $  complete

     -‐‑‒C  aws_̲completer  aws $  complete  aws  'p/*/`̀aws_̲completer`̀/' $  source  bin/aws_̲zsh_̲completer.sh
  26. 使い⽅方 aws [αʔϏε໊] ΞΫγϣϯ Φϓγϣϯ #  EC2インスタンス⼀一覧を取得 $  aws  ec2

     describe-‐‑‒instances #  S3のバケット⼀一覧を取得 $  aws  s3  ls #  S3とローカルのディレクトリをsync $  aws  s3  sync  .  s3://bucketname/dir
  27. 出⼒力力形式は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
  28. わからない時はhelpコマンド helpΛ࠷ޙʹ͚ͭΔ͜ͱͰυΩϡϝϯτ͕දࣔ͞ΕΔ $  aws  help $  aws  ec2  help $

     aws  ec2  describe-‐‑‒instances  help  
  29. 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
  30. AWS::CLIWRAPPER

  31. 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ʼ’],            } );
  32. デモ S3ͷόέοτҰཡͷऔಘ use  AWS::CLIWrapper; use  Data::Dumper; my  $aws  =  AWS::CLIWrapper-‐‑‒>new(

               region  =>  'ap-‐‑‒northeast-‐‑‒1', ); my  $res  =  $aws-‐‑‒>s3(  ʻ‘lsʼ’  =>  {}); print  Dumper($res);
  33. リージョン名:  ap-‐‑‒northeast-‐‑‒1 VPC  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͔ΒҰؾʹ࡞ͬͯΈ·͢
  34. まとめ

  35. AWS  CLIはAWSのほぼ全てのリソースを制御可能 AWS  CLIをラップした、AWS::CLIWrapperを使えば、 AWSのほぼ全てのリソースをperlからコントロール可能に • όοΫΤϯυଆͷ։ൃίετΛ࠷খԽ • όοΫΤϯυଆͷӡ༻ίετΛ࠷খԽ •

    εέʔϥϏϦςΟͷ৺഑ͳ͠ • ֹۚ໘Ͱ΋ίετ࡟ݮʹ AWSはコーディングする⽅方の⼒力力を最⼤大限に引き出すインフラ • その恩恵はサーバ側だけでなくクライアントアプリにも! • HAPPY  CODING!! まとめ
  36. 最後に

  37. 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/
  38. 9/28  JAWS  FESTA  Kansai  2013 9/28 (౔) ژηϥυʔϜʹͯ։࠵ AWSͷϢʔβʔάϧʔϓ (JAWS-UG)ओ࠵ͷΠϕϯτ

    http://jfk2013.jaws-‐‑‒ug.jp/
  39. 175Λ௒͑Δηογϣϯ! Gameday! Hackathon! Boot Camp! ϥϘ! లࣔձ! ύʔςΟʔ! re:Invent  2013

     参加ツアーの申し込みはこちら! http://bit.ly/reinvent2013japan 11⽉月12⽇日  (⽕火)  〜~  11⽉月15⽇日  (⾦金金)    の4⽇日間  ! ラスベガス・ベネチアンホテルで開催! 基調講演  ⽇日本語同時通訳! ⽇日本専⽤用トラック!  懇親ディナー! シアトルオフィス訪問! ※ツアー参加の特典です。
  40. None