Snapshot
各ボリュームのスナップショットを
作成する
ec2.volumes.each do |v|
v.create_snapshot(
"from #{v.id} at #{Time.now}")
end
13 36
Slide 15
Slide 15 text
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
end
14 36
Slide 16
Slide 16 text
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
最新の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
end
18 36
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
Slide 22
Slide 22 text
Snapshotの一覧
自分のSnapshotの一覧が欲しい
ec2.snapshots.each do |s|
# ...
end
これだと、publicなSnapshotも取
れてしまう!
21 36
Slide 23
Slide 23 text
AWS Developer
Forum
Forum: Ruby Development
https://forums.aws.amazon.com/forum.jspa?forumID=125
22 36
Slide 24
Slide 24 text
質問した
23 36
Slide 25
Slide 25 text
次の日
24 36
Slide 26
Slide 26 text
AWSの中の人から回答
25 36
Slide 27
Slide 27 text
Snapshotの一覧
解決策: filter
ec2.snapshots.filter(
'owner-id', 'YOUR_ACCOUNT_NUMBER').each do |s|
# ...
end
自分のアカウント番号を指定すると
自分のSnapshotのみ取得できる。
26 36
Slide 28
Slide 28 text
公式のSDKのメリット
AWSのサポートが得られる
27 36
Slide 29
Slide 29 text
16日後
28 36
Slide 30
Slide 30 text
AWS SDK for Ruby
1.1.0 Release
29 36
Slide 31
Slide 31 text
Release Note
30 36
Slide 32
Slide 32 text
forumにもコメント
31 36
Slide 33
Slide 33 text
自分のSnapshotの取得
が簡単に
ec2.snapshots.with_owner(:self).each do |s|
# ...
end
AMIの一覧も同じようにできます。
32 36