Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Programming AWS
with
Python
アマゾンデータサービスジャパン 松尾康博
Who am I ?
名前
• 松尾康博 ( @understeer )
所属
• アマゾンデータサービスジャパン株式会社
• ソリューションアーキテクト
• ビッグデータ、HPCのお客様を担当
Python歴
• BASIC, C, C++,...
_人人人人_
> 半年! <
 ̄Y^Y^Y ̄
今日の本当のスピーカーは・・・
堀内 康弘
AWS テクニカルエバンジェリスト
@horiuchi
10+ years web engineer in startups
• Director of V-cube (perl), 2001 - 2...
ç
今日の話
AWS で Python を 使う
今日の話
AWS で Python を 使う
AWS を Python で 使う
Agenda
AWS API / SDK 概要
Boto
Botoの応用例
まとめ
AWS SDK オーバービュー
AWSのサービス操作と言えば
AWS Management Console
AWSコマンドラインツール
これらの裏側では・・・
各サービスの各操作にAPIが定義されている
AWSでは・・・
• 人間がGUIまたはCUI越しに叩く
• プログラミングしてそれを自動化・簡易化・カスタ
マイズ
• 人間が手でやらなくてはいけない事をプログラミングして自...
必要な時に無制限に利用できるリソース
コンピュート
ストレージ
セキュリティ スケーリング
データベース
ネットワーキング
モニタリング
メッセージング
ワークフロー
DNS
ロードバランサ
バックアップCDN
オンデマンド 使用した分だけ
支...
APIを介してプログラムで制御可能なリソース
コンピュート
ストレージ
セキュリティ スケーリング
データベース
ネットワーキング
モニタリング
メッセージング
ワークフロー
DNS
ロードバランサ
バックアップCDN
オンデマンド 使用した分...
APIの例 ( EC2起動 : RunInstances)
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiRefere
nce-query-RunInstances.html
...
AWS SDKとは
AWSのサービスをプログラムで操作できる関数群
• http://aws.amazon.com/jp/tools/
• REST/SOAP APIのラッパー
動作イメージ
起動、停止
Put,Get
DB起動
バックアップ
情報取得
REST
SOAPAWS SDK
認証情報
Webアプリでの利用例
FOR PYTHON
Boto
Python用のAWS SDK
http://aws.amazon.com/jp/sdkforpython/
Botoの作者が中の人になって公式化
最新版は2.13.0 (2013年9月12日現在)
Python 2.6.6, 2.7...
Botoのゴール
Amazon Web Serviceを幅、深さの面で全てをサポートす
る。
他のパブリックサービスもサポート
• Google Storage
プライベートクラウドもサポート
• Eucalyptus
• OpenStack
...
対応サービス 33個 (2013年9月現在)
• Simple Storage Service (S3)
• SimpleQueue Service (SQS)
• Elastic Compute Cloud (EC2)
• Mechanica...
botoに関するリソース
SDK for Python
http://aws.amazon.com/jp/sdkforpython/
ソースコードリポジトリ
• https://github.com/boto/boto
PyPI
• http:...
インストール
$pip install boto
$git clone
git://github.com/boto/boto.git
初期設定
設定ファイルの作成
/etc/boto.cfg - グローバルな設定を記述
~/.boto ユーザー毎の設定を記述
もしくは、環境変数の設定
• AWS_ACCESS_KEY_ID
• AWS_SECRET_ACESS_KEY
htt...
設定ファイルの例
[Credentials]
aws_access_key_id = AKIOISTHEMOSTSUBERUARCHITECT
aws_secret_access_key = Question1sWhyAr5Th5yCall5d...
EC2の操作例
>>> from boto import ec2
>>> con = ec2.connect_to_region('ap-northeast-1')
#全てのインスタンス取得
>>> con.get_all_instances(...
AWS の完全マネージド・サービス
完全マネージド型で、セットアップ、運用、拡張が
不要なメッセージングサービス
Amazon SQS
Amazon DynamoDB
完全マネージド型で、高速なパフォーマンス、シー
ムレスな拡張性と信頼性をNo...
DynamoDBの操作例
# コネクション作成
conn = boto.connect_dynamodb()
# スキーマを定義 (ハッシュキー)
table_schema = conn.create_schema(
hash_key_name...
DynamoDBの操作例
# テーブルにアイテムをインサート
for x in xrange(1000):
item = table.new_item(
hash_key=x,
attrs={'comment': 'xxxxx'})
item....
デモ
EC2一覧取得
conn = boto.ec2.connect_to_region(REGION)
reslist = conn.get_all_instances()
for res in reslist:
for ins in res...
Virtual Private Cloud
クラウド内に、専用のネットワークを構築
既存の設備を活かしたハイブリッドクラウド環境が構築
可能
プライベート
サブネット
VPC Subnet
パブリック
サブネット
VPC Subnet
Inte...
リージョン名: 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...
SDKの応用例
Dynamic DNS
仮想
サーバ
マシン
イメージ
EIP
EC2
インスタンス
EIP
EC2起動時に、EIP(固定IP)を
DNSエントリに登録
Amazon Route 53
Hosted Zone
Server Swapping
仮想
サーバ
サーバに障害発生
仮想ディスク
データ
仮想
サーバ
仮想ディスク
マシン
イメージ
サーバ起動
EIP
EC2
インスタンス
EIP
監視サーバが障害を検知したら
SDKでサーバ入れ替え処理を自動...
Scale Up
EC2
インスタンス
冗長
構成
EC2
インスタンス
オリジ
ナル
MySQL DB
インスタンス
ロードバランサ
Amazon
Route 53 ec.clouddesignpattern.org
Amazon Cloud...
まとめ
SDKを使うことでAWSをアプリのバックエンドとして利
用可
• バックエンド側の開発コストを最小化
• バックエンド側の運用コストを最小化
• スケーラビリティの心配なし
• 金額面でもコスト削減に
AWSはコーディングする方の力を最大限に引...
最後に
AWS 無料使用枠(12ヵ月)
Amazon EC2 750時間/月のLinux マイクロインスタンス
• 複数インスタンスの場合も、合計750時間/月であれば無料利用枠に該当
Amazon EC2 750時間/月のWindows Server...
9/28 JAWS FESTA Kansai 2013
9/28 (土) 京セラドームにて開催
AWSのユーザーグループ (JAWS-UG)主催のイベント
http://jfk2013.jaws-ug.jp/
175を超えるセッション!
Gameday! Hackathon! Boot Camp!
ラボ! 展示会! パーティー!
re:Invent 2013 参加ツアーの申し込みはこちら!
http://bit.ly/reinvent2013japa...
Programming AWS with Python
Programming AWS with Python
Upcoming SlideShare
Loading in …5
×

Programming AWS with Python

5,301 views

Published on

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

Published in: Technology
  • Be the first to comment

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日間 !ラスベ ガス・ベネチアンホテルで開催! 基調講演 日本語同時通訳! 日本専用トラック! 懇親ディナー! シアトルオフィス訪問! ※ツアー参加の特典です。

×