2017年8月15日火曜日

EC2 System Manager をちょろっと試してみた

概要

EC2 Sysytem Manager は EC2 に専用のエージェントをインストールすることで外部からインスタンスの操作をできるようにする機能です
今回はエージェントのインストール方法と機能の一つである「コマンド実行」という機能を試してみました

環境

  • ssm-agent 2.0.913.0-1

ロール作成

事前に「AmazonEC2RoleforSSM」ポリシーがアタッチされているロールを作成しておきます

EC2 インスタンス作成

EC2 インスタンスを作成します
作成するときのロールの設定先ほど作成したロールをインスタンスに割り当てるようにしてください

OS は Amazon Linux AMI 2017.03.1 (HVM), SSD Volume Type を選択します
VPC に入れる場合はインターネットからアクセスできるように DNS やゲートウェイ、サブネットの設定を行っておいてください
念のためインスタンスに SSH して動作を確認するためです

ssm-agent のインストール

System Manager を使うには専用のエージェントをインストールする必要があります
yum コマンドで簡単にインストール可能です

  • ssh -i your_key.pem ec2-user@ec2-xx-xxx-xxx-xx.ap-southeast-2.compute.amazonaws.com
  • sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

インストールが完了すると /usr/bin/amazon-ssm-agent というプロセスが起動しているのが確認できます

コマンドを実行する

エージェントのインストールができたらコンソールからシェルコマンドを実行してみましょう
今回はマネージメントコンソールから実行します

EC2 -> SYSTEM MANAGER SERVICES -> コマンドの実行を選択します
AWS-RunShellScript を選択しコマンドを実行するインスタンス選択します
タグもでも選択できるのコマンドを複数のインスタンスに一斉に実行することも可能なようです
そして、Commands の欄でシェルスクリプトを記載します
今回は以下とします

echo "hoge" > hoge.txt

これでコマンドを実行するとルート直下に /hoge.txt というファイルが作成されているのが確認できると思います

aws CLI をインストールしている場合は CLI からでも実行することができます

aws ssm send-command --document-name "AWS-RunShellScript" --instance-ids "i-0a61f7fc18311b89a" --parameters '{"commands":["echo \"hoge\" > hoge.txt"]}' --timeout-seconds 600 --region ap-southeast-2

最後に 

簡単ですが、EC2 System Manager を試してみました
エージェントをインストールすればコンソールや CLI からインスタンスを操作できるのでわざわざ踏み台サーバや SSH ログインしないでもオペレーションできるようになるという機能かなと思います

他にも実行できるコマンドはたくさんあるので興味があれば試してみると良いかと思います

ちなみに ssm-agent は Github で公開されています
https://github.com/aws/amazon-ssm-agent

あと AWS に Opsworks という機能がありこれでも同じようにコマンド実行することができます
おそらく Opsworks の機能をインスパイアして EC2 で更に使いやすくした機能という位置づけなんじゃないかなと思います

参考サイト

0 件のコメント:

コメントを投稿