Programming AWS with Python

4,670 views

Published on

PyCon APAC 2013 で使った資料です。資料中に、デモで使ったスクリプトへのリンクもあります。

Published in: Technology
0 Comments
19 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,670
On SlideShare
0
From Embeds
0
Number of Embeds
45
Actions
Shares
0
Downloads
5
Comments
0
Likes
19
Embeds 0
No embeds

No notes for slide
  • 14:00-14:45  前半 Storage Gateway概要 20分 後半ハンズ事例紹介 20分 
  • Programming AWS with Python

    1. 1. Programming AWS with Python アマゾンデータサービスジャパン 松尾康博
    2. 2. Who am I ? 名前 • 松尾康博 ( @understeer ) 所属 • アマゾンデータサービスジャパン株式会社 • ソリューションアーキテクト • ビッグデータ、HPCのお客様を担当 Python歴 • BASIC, C, C++, Perl, Ruby, Java, PHP • Python 半年
    3. 3. _人人人人_ > 半年! <  ̄Y^Y^Y ̄
    4. 4. 今日の本当のスピーカーは・・・ 堀内 康弘 AWS テクニカルエバンジェリスト @horiuchi 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
    5. 5. ç
    6. 6. 今日の話 AWS で Python を 使う
    7. 7. 今日の話 AWS で Python を 使う AWS を Python で 使う
    8. 8. Agenda AWS API / SDK 概要 Boto Botoの応用例 まとめ
    9. 9. AWS SDK オーバービュー
    10. 10. AWSのサービス操作と言えば AWS Management Console AWSコマンドラインツール
    11. 11. これらの裏側では・・・ 各サービスの各操作にAPIが定義されている AWSでは・・・ • 人間がGUIまたはCUI越しに叩く • プログラミングしてそれを自動化・簡易化・カスタ マイズ • 人間が手でやらなくてはいけない事をプログラミングして自 動化できる、これがSDKで簡単に実現可能  AWSの実は最も優れた一面
    12. 12. 必要な時に無制限に利用できるリソース コンピュート ストレージ セキュリティ スケーリング データベース ネットワーキング モニタリング メッセージング ワークフロー DNS ロードバランサ バックアップCDN オンデマンド 使用した分だけ 支払い 均一なサービス 必要な時にすぐ に使える
    13. 13. APIを介してプログラムで制御可能なリソース コンピュート ストレージ セキュリティ スケーリング データベース ネットワーキング モニタリング メッセージング ワークフロー DNS ロードバランサ バックアップCDN オンデマンド 使用した分だけ 支払い 均一なサービス 必要な時にすぐ に使える API
    14. 14. APIの例 ( EC2起動 : RunInstances) http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiRefere nce-query-RunInstances.html https://ec2.amazonaws.com/?Action=RunInstances &ImageId=ami-60a54009 &MaxCount=3 &MinCount=1 &KeyName=my-key-pair &Placement.AvailabilityZone=us-east-1d &AUTHPARAMS
    15. 15. AWS SDKとは AWSのサービスをプログラムで操作できる関数群 • http://aws.amazon.com/jp/tools/ • REST/SOAP APIのラッパー
    16. 16. 動作イメージ 起動、停止 Put,Get DB起動 バックアップ 情報取得 REST SOAPAWS SDK 認証情報
    17. 17. Webアプリでの利用例
    18. 18. FOR PYTHON
    19. 19. Boto Python用のAWS SDK http://aws.amazon.com/jp/sdkforpython/ Botoの作者が中の人になって公式化 最新版は2.13.0 (2013年9月12日現在) Python 2.6.6, 2.7.1 on Mac OSX and Ubuntu Maverick で動作確認している。 Python 2.5での互換性もなるべく考慮しているが保証外 Python 3.xユーザーはneoブランチをお試しください
    20. 20. Botoのゴール Amazon Web Serviceを幅、深さの面で全てをサポートす る。 他のパブリックサービスもサポート • Google Storage プライベートクラウドもサポート • Eucalyptus • OpenStack • Open Nebula
    21. 21. 対応サービス 33個 (2013年9月現在) • Simple Storage Service (S3) • SimpleQueue Service (SQS) • Elastic Compute Cloud (EC2) • Mechanical Turk • SimpleDB • CloudFront • CloudWatch • AutoScaling • Elastic Load Balancer (ELB) • Virtual Private Cloud (VPC) • Elastic Map Reduce (EMR) • Relational Data Service (RDS) • AWS Opsworks • Redshift • Simple Notification Server (SNS) • Google Storage • Identity and Access Management (IAM) • Route53 DNS Service (route53) • Simple Email Service (SES) • Flexible Payment Service (FPS) • CloudFormation • Amazon DynamoDB • Amazon SimpleWorkflow • Elastic Transcoder • Simple Workflow Service (SWF) • CloudSearch • Marketplace Web Services • Support • Amazon Glacier
    22. 22. botoに関するリソース SDK for Python http://aws.amazon.com/jp/sdkforpython/ ソースコードリポジトリ • https://github.com/boto/boto PyPI • http://pypi.python.org/pypi/boto オンラインドキュメント • http://docs.pythonboto.org/ リファレンス • http://boto.readthedocs.org/en/latest/#
    23. 23. インストール $pip install boto $git clone git://github.com/boto/boto.git
    24. 24. 初期設定 設定ファイルの作成 /etc/boto.cfg - グローバルな設定を記述 ~/.boto ユーザー毎の設定を記述 もしくは、環境変数の設定 • AWS_ACCESS_KEY_ID • AWS_SECRET_ACESS_KEY http://boto.readthedocs.org/en/latest/boto_config_tut.html
    25. 25. 設定ファイルの例 [Credentials] aws_access_key_id = AKIOISTHEMOSTSUBERUARCHITECT aws_secret_access_key = Question1sWhyAr5Th5yCall5dSliXXXX [Boto] debug = 0 num_retries = 10 [DynamoDB] region = ap-northeast-1
    26. 26. EC2の操作例 >>> from boto import ec2 >>> con = ec2.connect_to_region('ap-northeast-1') #全てのインスタンス取得 >>> con.get_all_instances() #スナップショットの作成 >>> con.create_snapshot(‘vol-xxxxxxxxx’)
    27. 27. AWS の完全マネージド・サービス 完全マネージド型で、セットアップ、運用、拡張が 不要なメッセージングサービス Amazon SQS Amazon DynamoDB 完全マネージド型で、高速なパフォーマンス、シー ムレスな拡張性と信頼性をNoSQLサービス
    28. 28. DynamoDBの操作例 # コネクション作成 conn = boto.connect_dynamodb() # スキーマを定義 (ハッシュキー) table_schema = conn.create_schema( hash_key_name='frame_no', hash_key_proto_value=12345, ) # テーブルの作成 table = conn.create_table( name='Table Name', schema=table_schema, read_units=10, write_units=10, )
    29. 29. DynamoDBの操作例 # テーブルにアイテムをインサート for x in xrange(1000): item = table.new_item( hash_key=x, attrs={'comment': 'xxxxx'}) item.put()
    30. 30. デモ EC2一覧取得 conn = boto.ec2.connect_to_region(REGION) reslist = conn.get_all_instances() for res in reslist: for ins in res.instances: print ins.instance_type デモスクリプトはこちら https://gist.github.com/understeer/6559792
    31. 31. Virtual Private Cloud クラウド内に、専用のネットワークを構築 既存の設備を活かしたハイブリッドクラウド環境が構築 可能 プライベート サブネット VPC Subnet パブリック サブネット VPC Subnet InternetGW オンプレミス 専用NW領域 Internet 専用線 InternetVP N VPN GW Region ハイブリッドクラウド
    32. 32. リージョン名: us-east-1VPC ID: CIDR: 10.0.0.0/16 Zone: us-east-1a subnet id: CIDR: 10.0.0.0/25 Route table: Network ACL:Internet Gateway id: Web サーバー パブリックIP プライベートIP デモ: VPCから一気に作ってみます https://gist.github.com/understeer/6559805 デモスクリプトはこちら
    33. 33. SDKの応用例
    34. 34. Dynamic DNS 仮想 サーバ マシン イメージ EIP EC2 インスタンス EIP EC2起動時に、EIP(固定IP)を DNSエントリに登録 Amazon Route 53 Hosted Zone
    35. 35. Server Swapping 仮想 サーバ サーバに障害発生 仮想ディスク データ 仮想 サーバ 仮想ディスク マシン イメージ サーバ起動 EIP EC2 インスタンス EIP 監視サーバが障害を検知したら SDKでサーバ入れ替え処理を自動実行
    36. 36. Scale Up EC2 インスタンス 冗長 構成 EC2 インスタンス オリジ ナル MySQL DB インスタンス ロードバランサ Amazon Route 53 ec.clouddesignpattern.org Amazon CloudWatch EC2 インスタンス EIP MySQL DB インスタンス 冗長 構成 監視サーバが障害を検知したら SDKでサーバ入れ替え処理を自動実行
    37. 37. まとめ
    38. 38. SDKを使うことでAWSをアプリのバックエンドとして利 用可 • バックエンド側の開発コストを最小化 • バックエンド側の運用コストを最小化 • スケーラビリティの心配なし • 金額面でもコスト削減に AWSはコーディングする方の力を最大限に引き出すイン フラ • その恩恵はサーバ側だけでなくクライアントアプリにも! • HAPPY CODING!! まとめ
    39. 39. 最後に
    40. 40. 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/
    41. 41. 9/28 JAWS FESTA Kansai 2013 9/28 (土) 京セラドームにて開催 AWSのユーザーグループ (JAWS-UG)主催のイベント http://jfk2013.jaws-ug.jp/
    42. 42. 175を超えるセッション! Gameday! Hackathon! Boot Camp! ラボ! 展示会! パーティー! re:Invent 2013 参加ツアーの申し込みはこちら! http://bit.ly/reinvent2013japan 11月12日 (火) 〜 11月15日 (金) の4日間 !ラスベ ガス・ベネチアンホテルで開催! 基調講演 日本語同時通訳! 日本専用トラック! 懇親ディナー! シアトルオフィス訪問! ※ツアー参加の特典です。

    ×