JAWS-UG静岡 #1 Introduction to AWS SDK for Ruby
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

JAWS-UG静岡 #1 Introduction to AWS SDK for Ruby

on

  • 2,757 views

JAWS-UG静岡の第一回 LT

JAWS-UG静岡の第一回 LT

Statistics

Views

Total Views
2,757
Views on SlideShare
2,194
Embed Views
563

Actions

Likes
5
Downloads
6
Comments
0

6 Embeds 563

http://blog.livedoor.jp 492
http://www.cloudpack.jp 60
http://paper.li 4
http://10.33.21.57 4
http://webcache.googleusercontent.com 2
https://www.google.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

JAWS-UG静岡 #1 Introduction to AWS SDK for Ruby Presentation Transcript

  • 1. Introduction to AWS SDK for Ruby ISOBE Kazuhiko (cloudpack) JAWS-UG静岡 2011-11-27Powered by Rabbit 1.0.4 and COZMIXNG
  • 2. 提供 このLTはcloudpackの提供で お送りいたします01 36
  • 3. cloudpack AWS導入・構築支援、コンサル ティング、システム構築サービス 2010年4月 サービス開始 2011年1月 AWS ソリューション プロバイダ認定02 36
  • 4. cloudpack 月額費用固定型 日本円で請求書発行 フルマネージドホスティング03 36
  • 5. cloudpack 詳しくはWebで! http://cloudpack.jp/04 36
  • 6. 自己紹介 Twitter: muramasa64 cloudpackでAWSを運用 好きなAWSサービス: API05 36
  • 7. AWS SDK for Ruby AWS公式のSDK 2011年7月14日に初リリース 最新版は1.2.306 36
  • 8. できること RubyからAWSのAPIを実行できる EC2, ELB, S3, SNS, SQS, STS, SES, IAM, SimpleDB, VPCに対 応 RDS未対応が惜しい07 36
  • 9. できること Ruby on Rails の ActiveRecord で、SimpleDBが使える まだリリースから間もないので、 他のSDKに比べてできることはや や少なめ08 36
  • 10. 入手方法 gem gem install aws-sdk github git clone git://github.com/amazonwebservices/aws-sdk-for-ruby.git09 36
  • 11. 使う準備 config.yml access_key_id: <YOUR_ACCESS_KEY> secret_access_key: <YOUR_SECRET_KEY>10 36
  • 12. ライブラリと設定 require aws-sdk AWS.config( YAML.load(File.read(config.yml)))  11 36
  • 13. EC2 EC2を起動する ec2 = AWS::EC2.new ec2.instances.create( :image_id => ami-f49623f5 :key_name => keypair_name :security_group_ids => [default])12 36
  • 14. Snapshot 各ボリュームのスナップショットを 作成する ec2.volumes.each do |v| v.create_snapshot( "from #{v.id} at #{Time.now}") end13 36
  • 15. Security Group IPアドレスを一括で置換する src_ip = x.x.x.x/32 dst_ip = y.y.y.y/32 ec2.security_groups.each do |src_sg| puts "#{src_sg.id}, #{src_sg.name}" src_sg.ip_permissions.each do |p| if p.ip_ranges.include? src_ip src_sg.authorize_ingress(p.protocol, p.port_range, dst_ip) src_sg.revoke_ingress(p.protocol, p.port_range, src_ip) end end end14 36
  • 16. S3 期間限定URIを生成 s3 = AWS::S3.new b = s3.buckets[your-bucket-name] o = b.objects[object-name] puts o.url_for(:read, :expires => 60*60*24*31) 一ヶ月間有効なURLが生成される15 36
  • 17. S3 Presignd-URL https://your-bucket- name.s3.amazonaws.com/ object-name? AWSAccessKeyId=AKIAIFCOKT CTDSDMPX2A&Expires=13151 25436&Signature=zEmS9f4% 2Fm%2BFLgxEsVA9ppfQDhks16 %3D 36
  • 18. ちょっとしたハマり所 AWS SDK for Rubyで遭遇した  ハマった事例17 36
  • 19. 最新のSnapshot as = [] ec2.volumes.each do |v| v.attachments.each do |a| as << a end end ss = {} r.snapshots.sort {|a,b| b.start_time <=> a.start_time }.map do |s| ss[s.volume_id] = s unless ss.include? s.volume_id end as.each do |a| vid = a.volume.id if ss.include? vid puts "#{a.instance.id} => (#{ss[vid].start_time})" end end18 36
  • 20. タイムアウトして失敗 Snapshotの作成日時を参照する たびにAPIが呼び出されてしまう らしい 大量にあるSnapshotをソートすると、 必ずタイムアウトしてしまう APIの呼び出し制限?19 36
  • 21. AWS.memoize AWS.memoize do ss = {} r.snapshots.sort {|a,b| b.start_time <=> a.start_time }.map do |s| ss[s.volume_id] = s unless ss.include? s.volume_id end end ソートしている部分を AWS.memoizeで囲むだけ20 36
  • 22. Snapshotの一覧 自分のSnapshotの一覧が欲しい ec2.snapshots.each do |s| # ... end これだと、publicなSnapshotも取21 れてしまう! 36
  • 23. AWS Developer Forum Forum: Ruby Development https://forums.aws.amazon.com/forum.jspa?forumID=125  22 36
  • 24. 質問した23 36
  • 25. 次の日24 36
  • 26. AWSの中の人から回答25 36
  • 27. Snapshotの一覧 解決策: filter ec2.snapshots.filter( owner-id, YOUR_ACCOUNT_NUMBER).each do |s| # ... end 自分のアカウント番号を指定すると 自分のSnapshotのみ取得できる。26 36
  • 28. 公式のSDKのメリット AWSのサポートが得られる27 36
  • 29. 16日後28 36
  • 30. AWS SDK for Ruby 1.1.0 Release29 36
  • 31. Release Note30 36
  • 32. forumにもコメント31 36
  • 33. 自分のSnapshotの取得 が簡単に ec2.snapshots.with_owner(:self).each do |s| # ... end AMIの一覧も同じようにできます。  32 36
  • 34. 公式SDKのメリット  フォーラムに困ってることや要望 を書きこむと、新しい機能が実装さ れることも!33 36
  • 35. 困ったことや要望があっ たら フォーラムに書くなどのフィード バックしよう 次のリリースに反映されるかも34 36
  • 36. サンタクラウド #jawsug #サンタクラウド 集計ページ http://www.suz-lab.com/santacloud/35 36
  • 37.   ご静聴ありがとうございました36 36Powered by Rabbit 1.0.4 and COZMIXNG