概要
「EC2: インスタンスでコマンドを実行」アクションでは、Amazon EC2インスタンス(以下EC2 インスタンス)上で指定したコマンドを実行することが出来ます。
他のアクションと同様に、リソース IDまたはEC2 インスタンスに付与されているタグでコマンドを実行するEC2 インスタンスを指定することができます。
前提条件
本アクションはバックエンド処理にてAWS Systems Managerを使用しています。AWS Systems Managerが正常に動作する環境でご利用ください。AWS Sytems Managerが動作する条件については公式ページをご確認ください。
現在、マネージドインスタンスであってもオンプレミスのもの("mi-"プレフィックスのもの)はサポートしていません。
設定時のオプション
No. | オプション | 説明 |
---|---|---|
1 | リージョン | コマンドを実行するEC2 インスタンスが存在するリージョンを指定します。 |
2 | プラットフォーム | コマンドを実行するEC2 インスタンスのプラットフォームを選択します。 |
3 | インスタンス | EC2 インスタンスの名前で指定します。 「Can't find any instances in this region or aws account or platform.」と表示される場合はAWSアカウントやリージョンの選択が正しいかご確認ください。 |
特定のタグがついたインスタンス | key と value を入力して、起動するEC2 インスタンスをタグで指定します。 指定されたリージョン内で、入力された key と value に一致するタグがついたすべてのEC2 インスタンスが対象となります。 |
|
4 | コマンド | 実行するコマンドを入力します。 プラットフォームがLinuxの場合はシェルスクリプトを、Windowsの場合はPowerShellスクリプトを入力してください。 ※上記シェルスクリプト経由で、EC2インスタンス上の実行可能な別の言語のスクリプト等も実行可能です |
5 | コメント | コマンドの実行にメモを残す場合に入力します |
6 | バケット名 |
コマンドの実行ログの出力先となるS3バケットを指定します |
7 | プレフィックス | コマンドの実行ログの主力先となるS3バケット内でプレフィックスを指定する場合に入力します 例)send-command-log |
8 | 実行コマンドの終了ステータスでジョブの成功/失敗を判断する |
|
※ 終了ステータスをチェックする場合、実行するコマンドが終了ステータス (コマンドの成否を表す数値) を返すようになっている必要があります。具体的な方法はこちらをご参考ください。 |
||
9 | インスタンス接続のタイムアウト秒数 | コマンド実行対象となるEC2 インスタンスへ接続出来ずに失敗とみなすまでのタイムアウト秒数を指定します。デフォルトは900秒です。 |
10 | コマンド実行のタイムアウト秒数 | コマンドをEC2インスタンスで実行してから、実行タイムアウトになるまでの秒数を指定します。デフォルトは900秒です。 ※ 「実行コマンドの終了ステータスでジョブの成功/失敗を判断する」オプションを有効にした場合のみ指定できます。 |
設定例
- Cloud Automatorの画面から「ジョブの追加」メニューを選択します。
- グループを選択肢、トリガーの選択で、任意のトリガーを選択ください。
- アクションの選択で「EC2: インスタンスでコマンドを実行」アクションを選択します。
- AWS アカウントの選択で、対象リソースの操作が可能な任意の AWS アカウントを選択します。
- アクションのパラメーターを設定します。(設定例)
No. オプション 設定値の例 1 リージョン ap-northeast-1 2 プラットフォーム Linux 3 特定のタグがついたインスタンス key: environment value: development 4 コマンド if [ $(($RANDOM % 100)) -le 50 ] ; then
exit 0
else
exit 1
fi5 コメント 50%の確立で終了ステータス0か1を返します
6 出力先のS3バケット ssm-logs-cloudautomator 7 S3に出力するキーのプレフィックス 空白 8 実行コマンドの終了ステータスでジョブの成功/失敗を判断する する 9 インスタンス接続のタイムアウト秒数 60 10 コマンド実行のタイムアウト秒数 300 - 成功時、失敗時の後処理を設定します。
- ジョブ名を入力し、「作成する」をクリックでジョブの作成は完了です。
動作確認
Cloud Automator画面での動作確認
- 作成したジョブの詳細画面にある「ログ」ボタンをクリックします。
- 実行ログ一覧から該当の実行ログの詳細をクリックします。
- ログの詳細にて結果を確認します。「成功」となっていれば該当のジョブが実行されて成功していることが確認できます。「実行中」となっている場合はジョブの実行中なのでしばらく経ってから確認してください。
- それぞれのリソースの操作結果は「リソース操作結果」項目で確認することができます。
AWS Management Consoleでの動作確認
- AWS マネジメントコンソールにサインインし、EC2へアクセスします
- SYSTEMS MANAGER SERVICESメニュー内のコマンドの実行をひらくと実行結果が閲覧出来ます
- AWS マネジメントコンソールメニューよりS3へアクセスします
- 指定した出力先のS3バケットへアクセスすると、実行ログが書き込まれています
ログのステータス条件
No. | ステータス | 説明 |
---|---|---|
1 | 成功 |
以下のいずれかで成功となります。
|
2 | 失敗 |
以下のいずれかで失敗となります。
|
リソース操作履歴のステータス条件
No. | ステータス | 説明 |
---|---|---|
1 | Completed |
以下のいずれかの場合にcompletedとなります。
|
2 | Failed |
以下のいずれかの場合にfailedとなります。
|
コマンド出力を Amazon S3 バケットに書き込む場合のAWSの設定
ジョブの設定で「バケット名」を設定することでコマンド出力をAmazon S3に書き込むことが可能です。
この場合、コマンドを実行するEC2インスタンスの「IAM インスタンスプロファイルロール」と、書き込み先のS3バケットの「バケットポリシー」が適切に設定されている必要があります。
詳しくはこちらのAWS 公式ドキュメントをご確認ください。
Systems Manager の IAM インスタンスプロファイルを作成する
このアクションで利用されるAWS API
当アクションの実行には以下のAWS APIを利用しています。
実行するAWSアカウントにはこれらのAPIを実行可能なIAMポリシーがアタッチされている必要があります。
- EC2 API
- Systems Manager API