Run Commandのターゲットとしてリソースグループが選択可能になりました

2019.09.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ご機嫌いかがでしょうか、豊崎です。

先月末にAWSからRunCommandの実行先としてリソースグループが追加されましたとアナウンスがありました。

リソースグループが AWS Systems Manager Run Command のターゲットとして選択可能に

今までRunCommandでは対象リソースを、特定のタグが付与されているリソース、または手動選択する。の2通りから選択することができました。

今回、実行先にリソースグループが追加されたことで、環境ごとや、役割ごとにリソースグループでリソースを管理している場合にRunCommandからの一括の操作が行いやすくなりました。

リソースグループについてはこちらの記事を参照ください。

[AWS]リソースグループを使って、テスト・ステージング・本番環境ごとにAWSリソースを管理する

やってみた

前提

本番環境と開発環境をそれぞれリソースグループでAmazonLinux2を2台管理しているものとします。また、各EC2ではSSMが利用できるIAMRoleが付与されているものとします。

  • リソースグループ名
    • env-prod:本番環境
    • env-dev:開発環境

リソースグループを指定してRunCommandを実行

本記事では、本番環境のリソースグループを指定して、RunCommandから curl -s http://169.254.169.254/latest/meta-data/instance-id を実行して自身インスタンスIDを取得するコマンドを実行してみます。

ちなみに今リソースグループは以下のように設定されていて、各環境のリソースグループに2台ずつEC2インスタンスが登録されている状況です。

その状態でAWS Systems Manager ダッシュボードの左ペインのコマンドの実行を選択して、コマンド実行から進みます。

コマンドのドキュメントはAWS-RunShellScriptを選択します。

本記事では、コマンドパラメータに以下の、メタデータからインスタンスIDを取得するcurlコマンドを一行書いて実行をさせることにしました。

curl -s http://169.254.169.254/latest/meta-data/instance-id

そしてターゲットの箇所で Choose a resouece group を選択して、リソースグループ env-prod を選択します。他のオプションは特にせずに実行しました。

コマンドのステータスの画面でターゲットが2つになっています。

うち1台のEC2で実行されたコマンドの出力を確認したところ、無事EC2のインスタンスIDが出力されていることを確認しました。

まとめ

リソースグループで環境を管理している場合、リソースグループ単位にRunCommandが実行することができるので、メンテナンスや処理の管理がしやすくなりました。この記事が誰かのお役に立てば幸いです。