Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Programming AWS with Perl

Programming AWS with Perl

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

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

Yasuhiro Horiuchi

September 21, 2013
Tweet

More Decks by Yasuhiro Horiuchi

Other Decks in Technology

Transcript

  1. Programming AWS with Perl
    2013೥9݄21೔
    ΞϚκϯ σʔλ αʔϏε δϟύϯ גࣜձࣾ
    ςΫχΧϧΤόϯδΣϦετ ງ಺߁߂ (@horiuchi)

    View full-size slide

  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年年の実績

    View full-size slide

  3. 私のPerl歴
    KENTͷCGIͷܝࣔ൘͔Βελʔτ
    Shibuya.pmʹࢀՃ͠িܸΛ͏͚Δ
    SledgeͰΦϒδΣΫτࢦ޲ΛֶͿ
    MIME::Lite::TTͱ͔SledgeϓϥάΠϯΛCPANʹ্͛Δ
    PythonͷձࣾʹೖΔ
    PythonͷձࣾͰɺ͔ͬͱͳͬͯɺPerlͰूܭϓϩάϥϜ
    Λॻ͍ͨΒɺϝϯςͰ͖Δਓ͕͍ͳͯ͘ݏͳإ͞ΕΔ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. 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  
    ([email protected]).  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

    View full-size slide

  7. 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.

    View full-size slide

  8. 世界に拡がるAWSインフラストラクチャ
    カリフォルニア
    ダブリン
    シンガポール
    東京
    オレゴン
    バージニア
    サンパウロ
    GovCloud
    9  リージョン
    25  アベイラビリティゾーン
    41  エッジロケーション
    シドニー
    ⽇日本を含めて世界8リージョンから選択可能

    View full-size slide

  9. お客様のフィードバックに基づく迅速なイノベーション
    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
    ৽αʔϏεɾػೳ௥Ճͷ਺

    View full-size slide

  10. お客様のフィードバックに基づく迅速なイノベーション
    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

    View full-size slide

  11. 仮想サーバだけではない
    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
    アプリケーション
    サービス

    View full-size slide

  12. AWSのサービス操作と⾔言えば
    AWS Management Console
    AWSίϚϯυϥΠϯπʔϧ

    View full-size slide

  13. これらの裏裏側では・・・
     各サービスの各操作にAPIが定義されている
    AWSでは・・・
    • ⼈人間がGUIまたはCUI越しに叩く
    • プログラミングしてそれを⾃自動化・簡易易化・カスタマ
    イズ
    • ⼈人間が⼿手でやらなくてはいけない事をプログラミングして⾃自
    動化できる、これがSDKで簡単に実現可能
    à AWSの実は最も優れた⼀一⾯面

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. AWS  SDKとは
    AWSのサービスをプログラムで操作できる関数

    • http://aws.amazon.com/jp/tools/  
    • REST/SOAP  APIのラッパー

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  19. 2013年年9⽉月21⽇日現在、27のサービスに対応
    EMR、CloudFront、CloudSearch、Data  Pipelineの最近サポート

    View full-size slide

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

    View full-size slide

  21. 初期設定
    ؀ڥม਺͔ίϯϑΟάϑΝΠϧͰઃఆ
    $  cat  ~∼/.aws/config                                                                                            
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    [default]
    aws_̲access_̲key_̲id  =  AKIXXXXYYYYYZZZZ
    aws_̲secret_̲access_̲key  =  AWSAWSAWSZZZZZZ
    region  =  ap-‐‑‒northeast-‐‑‒1

    View full-size slide

  22. コマンド⼊入⼒力力補完の有効化
    ίϚϯυ͕ඇৗʹଟ͍ͷͰิ׬͕ͳ͍ͱπϥ͍Ͱ͢ɻ
    • bashͷ৔߹
    • tcshͷ৔߹
    • zshͷ৔߹
    $  complete  -‐‑‒C  aws_̲completer  aws
    $  complete  aws  'p/*/`̀aws_̲completer`̀/'
    $  source  bin/aws_̲zsh_̲completer.sh

    View full-size slide

  23. 使い⽅方
    aws [αʔϏε໊] ΞΫγϣϯ Φϓγϣϯ
    #  EC2インスタンス⼀一覧を取得
    $  aws  ec2  describe-‐‑‒instances
    #  S3のバケット⼀一覧を取得
    $  aws  s3  ls
    #  S3とローカルのディレクトリをsync
    $  aws  s3  sync  .  s3://bucketname/dir

    View full-size slide

  24. 出⼒力力形式は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

    View full-size slide

  25. わからない時はhelpコマンド
    helpΛ࠷ޙʹ͚ͭΔ͜ͱͰυΩϡϝϯτ͕දࣔ͞ΕΔ
    $  aws  help
    $  aws  ec2  help
    $  aws  ec2  describe-‐‑‒instances  help  

    View full-size slide

  26. 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

    View full-size slide

  27. AWS::CLIWRAPPER

    View full-size slide

  28. 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ʼ’],
               }
    );

    View full-size slide

  29. デモ
    S3ͷόέοτҰཡͷऔಘ
    use  AWS::CLIWrapper;
    use  Data::Dumper;
    my  $aws  =  AWS::CLIWrapper-‐‑‒>new(
               region  =>  'ap-‐‑‒northeast-‐‑‒1',
    );
    my  $res  =  $aws-‐‑‒>s3(  ʻ‘lsʼ’  =>  {});
    print  Dumper($res);

    View full-size slide

  30. リージョン名:  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͔ΒҰؾʹ࡞ͬͯΈ·͢

    View full-size slide

  31. AWS  CLIはAWSのほぼ全てのリソースを制御可能
    AWS  CLIをラップした、AWS::CLIWrapperを使えば、
    AWSのほぼ全てのリソースをperlからコントロール可能に
    • όοΫΤϯυଆͷ։ൃίετΛ࠷খԽ
    • όοΫΤϯυଆͷӡ༻ίετΛ࠷খԽ
    • εέʔϥϏϦςΟͷ৺഑ͳ͠
    • ֹۚ໘Ͱ΋ίετ࡟ݮʹ
    AWSはコーディングする⽅方の⼒力力を最⼤大限に引き出すインフラ
    • その恩恵はサーバ側だけでなくクライアントアプリにも!
    • HAPPY  CODING!!
    まとめ

    View full-size slide

  32. 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/

    View full-size slide

  33. 9/28  JAWS  FESTA  Kansai  2013
    9/28 (౔) ژηϥυʔϜʹͯ։࠵
    AWSͷϢʔβʔάϧʔϓ (JAWS-UG)ओ࠵ͷΠϕϯτ
    http://jfk2013.jaws-‐‑‒ug.jp/

    View full-size slide

  34. 175Λ௒͑Δηογϣϯ!
    Gameday! Hackathon! Boot Camp!
    ϥϘ! లࣔձ! ύʔςΟʔ!
    re:Invent  2013  参加ツアーの申し込みはこちら!
    http://bit.ly/reinvent2013japan
    11⽉月12⽇日  (⽕火)  〜~  11⽉月15⽇日  (⾦金金)    の4⽇日間  !
    ラスベガス・ベネチアンホテルで開催!
    基調講演  ⽇日本語同時通訳!
    ⽇日本専⽤用トラック!  懇親ディナー!
    シアトルオフィス訪問!
    ※ツアー参加の特典です。

    View full-size slide