WORK|AWS Run CommandでリモートからOSコマンドを実行させる検証メモ
こんばんは、tapunです。
久しぶりの更新になってしまいました。今日は仕事でAWSのRun CommandでリモートからOSコマンドを実行させる方法について検証したので、メモします。
はじめに
今回は、イベントトリガーでOSコマンドを実行させる仕組みを作るためにLambdaを使えないかな~という構想のもと、まずはRun Commnadの検証をしました!
具体的には、S3にログが保存されたら、OSコマンドを実行させる!的なことをやりたいと思ってます。
やったこと
先にやっておくべきこと
※私はこれを忘れたので二度手間になりました
- Runコマンド用のIAMロールとユーザ設定
参考:http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ssm-iam.htmlデフォルトのIAMポリシー”AmazonEC2RoleforSSM”を割り当てたロールを作成します。
[ロールの作成]から[EC2]を選択して、上記のポリシーを割り当てます。ここで作ったロールをこれから立ち上げるインスタンス作成時に割り当てます。
コマンド実行させるOSの準備
- EC2にUbuntuのインスタンスを作成します
今回、私はWordPress入りのAMIをMarket Placeから選択してみました。
>bitnami-wordpress-4.4-0-linux-ubuntu-14.04.3-x86_64-ebs-mp-dff9bfa7-e43e-4c06-bafd-756e9d331d18-ami-53682139.3 (ami-21d0fb4f)
# Ubuntuじゃなくても、こちらに記載されてるOSなら何でもいいです - インスタンスタイプを選択し、[次の手順:インスタンスの詳細の設定]を押します
- IAMロールで先ほど作成した”AmazonEC2RoleforSSM”ポリシーが割り当っているロールを選択します。
※インスタンスのIAMロールはインスタンス作成時にしか選択できないので、ここで設定し忘れると作り直しになります。 - そのままウィザードを進めてインスタンス作成を完了させます
※インスタンスからOutboundでインターネットに出れるように設定してください!
SSMエージェントのインストール
予めUser Dataに入れてもいいけど、OS立ち上げた後でもインストールできます。
A)UserDataからインストールさせる場合
こちらを参考にしましょう。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-ssm-agent.html#d0e44905
Ubuntu(64bit)の場合はこんな感じ
#!/bin/bash cd /tmp curl https://bucket-name.s3.amazonaws.com/latest/debian_amd64/amazon-ssm-agent.deb -o amazon-ssm-agent.deb dpkg -i amazon-ssm-agent.deb
B)手動でインストールする場合
こちらを参考にしましょう。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-ssm-agent.html#manual-agent-install
Ubuntu(64bit)の場合はこんな感じ
mkdir /tmp/ssm curl https://bucket-name.s3.amazonaws.com/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb
※いずれの場合も、東京リージョンであれば「bucket-name
」が「amazon-ssm-ap-northeast-1」に変わります。
status amazon-ssm-agent
上記のコマンドを実行して、SSMエージェントが動いていることを確認します。
動いてなかったら、sudo start amazon-ssm-agent
で起動しましょう
Run Commandを試します
- EC2のメニューの中にある”コマンド”を選択します。初めての場合は[コマンドを実行]をクリック
- 今回はOSコマンドを実行するので、[AWS-runshellScript]を選択します。
- [インスタンスの選択]をクリックすると、SSMエージェントがインストールされているインスタンスの一覧が表示されます。
1個表示されてますので、それを選択します。 - Commnads 欄に実行したいコマンドを入力します。
今回は何でもいいので、echo Hi! This is Test!
にしました。
コマンドを入力したら、[実行]をクリックします。 - コマンド実行が成功したら、”View Result”をクリック
- コマンド実行が成功していることを確認します。
出力結果を見てみます。 - ちゃんと出力されています!
ifconfigとかでも、きちんとネットワーク情報が出力されていました~
まとめ
EC2インスタンスにSSMエージェントをインストールしておくことで、リモートからOSコマンドを実行させることが可能になりました!
次回は、イベントトリガーでLambda経由で実行するテストをしようと思っています。
コメントを残す