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.

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

AWSでサービスを構築した際のノウハウ集03
ec2インスタンスから、マネジメントコンソールで設定したタグ情報を取得する

  • Login to see the comments

  • Be the first to like this

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

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

×