狠狠撸

狠狠撸Share a Scribd company logo
AWSで構築したのだよ 
「ec2で自分についているタグを読み取りたい」
お品書き 
? ユーザのコンソール操作をログに残したい 
? ec2で自分のインスタンスIDが知りたい 
? ec2で自分についているタグを読み取りたい 
? ec2起動時にホスト名を変更したい 
? ec2起動時にクラウドウォッチに追加したい 
? Amazon LinuxのsshをユーザID/PWに変更し 
たい。 
? VPNのプライベートネットワークでNTPを使いたい 
? プライベートネットワークのRDSにssh経由で接続したい 
? 夜間にec2を落としたい 
? サーバーのシャットダウン時にログを退避したい 
? プロセス監視、メモリ残、ディスク使用率をCloudwatc 
hに追加したい 
? nginxで名前解決を都度行いたい
ec2で自分についている 
タグを読み取りたい(1/3) 
? ec2のタグに名前などの属性をつけて管理しやすくする。 
わかりやすい名前、運用環境かステージング環境なのか、 
バックアップ対象なのかどうかなど
ec2で自分についている 
タグを読み取りたい(2/3) 
? awsの操作をするためのアプリケーションの開発と管理 
のための主要なSDKが提供されています。Java、.NET、 
Node.js、PHP、Python、RubyのSDKをインストールして、 
各言語からいろいろな操作が可能です。 
今回は、Rubyを使ってインスタンスIDを取得しま 
す。Ruby用のawsのSDKをインストールします。
http://aws.amazon.com/jp/tools/?nc2=h_l2_d/
Rubyはデフォルトでインストールされています。 
$ ruby -v 
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux] 
aws-sdkを入れます、関連するパッケージをインストールしてからsdkをインス 
トールします。 
$ su 
$ yum install -y gcc libxml2-devel libxslt-devel ruby-devel 
$ gem install capistrano 
$ gem install capistrano_colors 
$ gem install capistrano-ext 
$ gem install railsless-deploy 
$ gem install nokogiri -- --use-system-libraries 
$ gem install aws-sdk
ec2で自分についている 
タグを読み取りたい(3/3) 
? 実際に取得するためのスクリプトをコーディングします 
ポイント 
?awsの操作に必要な権限を持ったユーザの作成。そのユー 
ザのaccess_key_id:、secret_access_keyをIAMで準備する。 
今回は、IAMの操作については省略いたします。
権限を持ったユーザの情報、リージョンの情報など、操作に必要な情報をyml 
ファイルで定義しておきます。 
# vi aws.yml 
access_key_id: "AKIAIFJPTCXRF943FBXA" 
secret_access_key: "lLaGfDbBE+gjbSVrGyD7+35AlOAg364qtge91XDM" 
ec2_endpoint: "ec2.ap-northeast-1.amazonaws.com" 
region: "ap-northeast-1"
# vi getTagList.rb 
#!/usr/bin/env ruby 
# encoding: utf-8 
require 'rubygems' 
require 'aws-sdk' 
def get_tag_set(ec2, instance_id) 
tag_set = ec2.describe_instances(:instance_ids  
=> [instance_id])[:instance_index][instance_id][:tag_set] 
return tag_set 
end 
AWS.config(YAML.load(File.read("./aws.yml"))) 
@instanceID = `wget --no-proxy -q -O  
- http://169.254.169.254/latest/meta-data/instance-id` 
@ec2 = AWS::EC2.new().client 
tag_set = get_tag_set(@ec2, @instanceID) 
tag_set.each do |tag| 
p tag[:key] + " / " + tag[:value] 
end
作成したスクリプトを実行します。 
# ruby getTagList.rb 
"Type / Staging" 
"Name / LogicApp01" 
"Backup / true"

More Related Content

Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得