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"

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

  • 1.
  • 2.
    お品書き  ユーザのコンソール操作をログに残したい  ec2で自分のインスタンスIDが知りたい  ec2で自分についているタグを読み取りたい  ec2起動時にホスト名を変更したい  ec2起動時にクラウドウォッチに追加したい  Amazon LinuxのsshをユーザID/PWに変更し たい。  VPNのプライベートネットワークでNTPを使いたい  プライベートネットワークのRDSにssh経由で接続したい  夜間にec2を落としたい  サーバーのシャットダウン時にログを退避したい  プロセス監視、メモリ残、ディスク使用率をCloudwatc hに追加したい  nginxで名前解決を都度行いたい
  • 3.
    ec2で自分についている タグを読み取りたい(1/3) ec2のタグに名前などの属性をつけて管理しやすくする。 わかりやすい名前、運用環境かステージング環境なのか、 バックアップ対象なのかどうかなど
  • 4.
    ec2で自分についている タグを読み取りたい(2/3) awsの操作をするためのアプリケーションの開発と管理 のための主要なSDKが提供されています。Java、.NET、 Node.js、PHP、Python、RubyのSDKをインストールして、 各言語からいろいろな操作が可能です。 今回は、Rubyを使ってインスタンスIDを取得しま す。Ruby用のawsのSDKをインストールします。
  • 5.
  • 6.
    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
  • 7.
    ec2で自分についている タグを読み取りたい(3/3) 実際に取得するためのスクリプトをコーディングします ポイント ・awsの操作に必要な権限を持ったユーザの作成。そのユー ザのaccess_key_id:、secret_access_keyをIAMで準備する。 今回は、IAMの操作については省略いたします。
  • 8.
    権限を持ったユーザの情報、リージョンの情報など、操作に必要な情報を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"
  • 9.
    # 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
  • 10.
    作成したスクリプトを実行します。 # rubygetTagList.rb "Type / Staging" "Name / LogicApp01" "Backup / true"