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

Programming AWS with Perl

Programming AWS with Perl

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


Yasuhiro Horiuchi

September 21, 2013

More Decks by Yasuhiro Horiuchi

Other Decks in Technology


  1. 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年年の実績
  2. 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
  3. 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.
  4. 世界に拡がるAWSインフラストラクチャ カリフォルニア ダブリン シンガポール 東京 オレゴン バージニア サンパウロ GovCloud 9

     リージョン 25  アベイラビリティゾーン 41  エッジロケーション シドニー ⽇日本を含めて世界8リージョンから選択可能
  5. お客様のフィードバックに基づく迅速なイノベーション 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 ৽αʔϏεɾػೳ௥Ճͷ਺
  6. お客様のフィードバックに基づく迅速なイノベーション 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
  7. 仮想サーバだけではない 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 アプリケーション サービス
  8. 必要な時に無制限に利利⽤用できるリソース コンピュート ストレージ セキュリティ スケーリング データベース ネットワーキング モニタリング メッセージング ワークフロー

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

    DNS ロードバランサ バックアップ CDN オンデマンド 使⽤用した分だけ ⽀支払い 均⼀一なサービス 必要な時にすぐ に使える API
  10. 初期設定 ؀ڥม਺͔ίϯϑΟάϑΝΠϧͰઃఆ $  cat  ~∼/.aws/config          

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

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

     describe-‐‑‒instances #  S3のバケット⼀一覧を取得 $  aws  s3  ls #  S3とローカルのディレクトリをsync $  aws  s3  sync  .  s3://bucketname/dir
  13. 出⼒力力形式は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
  14. 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
  15. 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ʼ’],            } );
  16. デモ S3ͷόέοτҰཡͷऔಘ use  AWS::CLIWrapper; use  Data::Dumper; my  $aws  =  AWS::CLIWrapper-‐‑‒>new(

               region  =>  'ap-‐‑‒northeast-‐‑‒1', ); my  $res  =  $aws-‐‑‒>s3(  ʻ‘lsʼ’  =>  {}); print  Dumper($res);
  17. リージョン名:  ap-‐‑‒northeast-‐‑‒1 VPC  ID: CIDR: Zone:  ap-‐‑‒northeast-‐‑‒1 subnet  id:

    CIDR: Route  table: Network  ACL: Internet   Gateway id: Web  サーバー パブリックIP プライベートIP σϞ: VPC͔ΒҰؾʹ࡞ͬͯΈ·͢
  18. AWS  CLIはAWSのほぼ全てのリソースを制御可能 AWS  CLIをラップした、AWS::CLIWrapperを使えば、 AWSのほぼ全てのリソースをperlからコントロール可能に • όοΫΤϯυଆͷ։ൃίετΛ࠷খԽ • όοΫΤϯυଆͷӡ༻ίετΛ࠷খԽ •

    εέʔϥϏϦςΟͷ৺഑ͳ͠ • ֹۚ໘Ͱ΋ίετ࡟ݮʹ AWSはコーディングする⽅方の⼒力力を最⼤大限に引き出すインフラ • その恩恵はサーバ側だけでなくクライアントアプリにも! • HAPPY  CODING!! まとめ
  19. 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/
  20. 175Λ௒͑Δηογϣϯ! Gameday! Hackathon! Boot Camp! ϥϘ! లࣔձ! ύʔςΟʔ! re:Invent  2013

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