「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
Amazon SNS 通知を使用した Systems Manager ステータス変更のモニタリング
AWS Systems Manager Run Command または AWS Systems Manager メンテナンスウィンドウ を使用して送信したコマンドのステータスに関する通知を送信するように Amazon Simple Notification Service (Amazon SNS) を設定できます。Amazon SNS は、Amazon SNS トピックをサブスクライブしているクライアントまたはエンドポイントへの通知の送信および配信を調整および管理します。コマンドが新しい状態に変更、または失敗やタイムアウトのような状態に変更されるたびに通知を受け取ることができます。複数のインスタンスにコマンドを送信すると、特定のインスタンスに送信されるコマンドの各コピーに対して通知を受け取ることができます。各コピーは、その呼び出しと呼ばれます。
Amazon SNS は、HTTP または HTTPS POST、E メール (SMTP、プレーンテキストまたは JSON 形式のいずれか)、あるいは Amazon Simple Queue Service (Amazon SQS) キューに投稿されるメッセージとして通知を配信できます。詳細については、Amazon Simple Notification Service 開発者ガイドの「Amazon SNS とは何ですか」を参照してください。Run Command と メンテナンスウィンドウ が提供する Amazon SNS 通知に含まれる JSON データの構造の例については、「AWS Systems Manager の Amazon SNS 通知の例」を参照してください。
AWS Systems Manager 用の Amazon SNS 通知の設定
メンテナンスウィンドウに登録されている Run Command および Run Command タスクは、以下のステータスに入るコマンドタスクについて Amazon SNS 通知を送信できます。これらのステータスのいずれかを入力するコマンドの条件については、「コマンドのステータスについて」を参照してください。
-
進行中
-
成功
-
失敗
-
タイムアウト
-
Canceled
Run Command を使用してコマンドを送信すると、キャンセル中および保留中のステータスも報告されます。これらのステータスは Amazon SNS 通知によって把握されません。
コマンド概要の Amazon SNS 通知
Amazon SNS 通知のメンテナンスウィンドウにある Run Command または Run Command タスクを設定する場合、Amazon SNS は次の情報を含む概要メッセージを送信します。
フィールド | タイプ | 説明 |
---|---|---|
eventTime |
文字列 |
イベントがトリガーされた時刻。Amazon SNS はメッセージの配信順序を保証しないため、タイムスタンプは重要です。例: 2016-04-26T13:15:30Z |
documentName |
文字列 |
このコマンドの実行に使用された SSM ドキュメントの名前。 |
commandId |
文字列 |
コマンドが送信された後に Run Command によって生成された ID です。 |
expiresAfter |
日 |
この時間に達し、コマンドが既に実行を開始している場合は、実行されません。 |
outputS3BucketName |
文字列 |
コマンド実行に対する応答を保存する Amazon Simple Storage Service (Amazon S3) バケットです。 |
outputS3KeyPrefix |
文字列 |
コマンド実行に対する応答を保存するバケット内の Amazon S3 のディレクトリパスです。 |
requestedDateTime |
文字列 |
リクエストがこの特定のインスタンスに送信された日時です。 |
instanceIds |
StringList |
コマンドの対象となるインスタンスです。 インスタンス ID が概要メッセージに含まれるのは、Run Command タスクがインスタンス ID を直接ターゲットにしている場合のみです。Run Command タスクがタグベースのターゲティングを使用して発行された場合、インスタンス ID は概要メッセージに含まれません。 |
status |
文字列 |
コマンドのコマンドステータスです。 |
呼び出しベースの Amazon SNS 通知
コマンドを複数のインスタンスに送信する場合、Amazon SNS はコマンドの各コピーまたは呼び出しに関するメッセージを送信できます。メッセージには次の情報が含まれます。
フィールド | タイプ | 説明 |
---|---|---|
eventTime |
文字列 |
イベントがトリガーされた時刻。Amazon SNS はメッセージの配信順序を保証しないため、タイムスタンプは重要です。例: 2016-04-26T13:15:30Z |
documentName |
文字列 |
このコマンドの実行に使用された Systems Manager ドキュメントの名前。 |
requestedDateTime |
文字列 |
リクエストがこの特定のインスタンスに送信された日時です。 |
commandId |
文字列 |
コマンドが送信された後に Run Command によって生成された ID です。 |
instanceId |
文字列 |
コマンドの対象となるインスタンスを選択します。 |
status |
文字列 |
この呼び出しのコマンドステータス。 |
コマンドがステータスを変更したときに Amazon SNS 通知をセットアップするには、次のタスクを完了する必要があります。
メンテナンスウィンドウの Amazon SNS 通知を設定していない場合は、以下のタスク 5 をスキップできます。
トピック
タスク 1: Amazon SNS トピックを作成してサブスクライブする
Amazon SNS トピックは、メンテナンスウィンドウに登録されている Run Command および Run Command タスクがコマンドのステータスに関する通知を送信するために使用する通信チャネルです。Amazon SNS では、HTTP/S、E メールに加え、Amazon SQS のような AWS のサービスなど、さまざまな通信プロトコルをサポートしています。迅速に開始するには、E メールプロトコルを使用して開始することをお勧めします。トピックを作成する方法については、Amazon Simple Notification Service 開発者ガイド の「トピックの作成」を参照してください。
トピックを作成した後に [Topic ARN (トピック ARN)] をコピー、または書き留めます。ステータスの通知を返すように設定されたコマンドを送信するときに、この ARN を指定します。
トピックを作成したら、[エンドポイント] を指定してサブスクライブします。E メールプロトコルを選択した場合、エンドポイントは、通知を受け取る E メールアドレスです。トピックをサブスクライブする方法の詳細については、Amazon Simple Notification Service 開発者ガイド の「Amazon SNS トピックにエンドポイントをサブスクライブする」を参照してください。
Amazon SNS は、AWS 通知の確認メールをお客様が指定した E メールアドレスに送信します。E メールを開き、[サブスクリプションを確認] へのリンクを選択します。
AWS から受信確認メッセージを受け取ります。Amazon SNS は、通知を受信し、通知を E メールとして指定された E メールアドレスに送信するように設定されました。
タスク 2: Amazon SNS 通知用の IAM ポリシーを作成する
以下の手順を使用して、Amazon SNS 通知をトリガーするためのアクセス許可を提供するカスタム AWS Identity and Access Management (IAM) ポリシーを作成します。
Amazon SNS 通知用のカスタム IAM ポリシーを作成するには
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー]、[ポリシーの作成] の順に選択します。([Get Started] ボタンが表示された場合は、そのボタンを選択してから、[Create Policy] を選択します)。
-
[JSON] タブを選択します。
-
デフォルトコンテンツを以下のものと置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "
sns-topic-arn
" } ] }sns-topic-arn
は、Amazon Simple Notification Service 通知の送信に使用する既存の Amazon Simple Notification Service (Amazon SNS) トピックの ARN をarn:aws:sns::
形式で表します (例:account-id
:sns-topic-name
.arn:aws:sns::123456789012:my-sns-topic
)。 -
[ポリシーの確認] を選択します。
-
[Review policy (ポリシーの確認)] ページで、[Name (名前)] にインラインポリシーの名前を入力します。例:
my-sns-publish-permissions
。 -
(オプション) [Description (説明)] に、ポリシーの説明を入力します。
-
[ポリシーの作成] を選択します。
タスク 3: Amazon SNS 通知の IAM ロールを作成する
Amazon SNS 通知の IAM ロールを作成するには、次の手順を使用します。このサービスロールは、Amazon SNS 通知をトリガーするために Systems Manager によって使用されます。以降の手順では、このロールは Amazon SNS IAM ロールと呼ばれます。
Amazon SNS 通知の IAM サービスロールを作成するには
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。
-
[信頼されたエンティティの種類を選択] で、[AWS のサービス] を選択します。
-
[Choose a use case (ユースケースの選択)] セクションで、[Systems Manager] を選択し、[Next: Permissions (次へ: アクセス許可)] を選択します。
-
[Attach permissions policies (アクセス許可ポリシーのアタッチ)] ページで、タスク 2 で作成したカスタムポリシーの名前の左側にあるチェックボックスをオンにします。例:
my-sns-publish-permissions
。 -
[次へ: タグ] を選択します。
-
(オプション) 1 つ以上のタグ/値ペアを追加して、このロールのアクセスを整理、追跡、または制御し、[次へ: 確認] を選択します。
-
[Review (確認)] ページで、[Role name (ロール名)] ボックスに
my-sns-role
などの名前を入力します。 -
(オプション) デフォルトのロールの説明を変更して、このロールの目的を反映させます。例:
Triggers SNS topics on your behalf.
-
[Create role (ロールの作成)] を選択します。システムでは、[Roles] ページが返されます。
-
[Role ARN (ロールの ARN)] をコピー、または書き留めます。Amazon SNS 通知を返すように設定されたコマンドを送信するときに、このロール Amazon リソースネーム (ARN) が使用されます。
-
[Summary (概要)] ページは開いたままにします。
タスク 4: ユーザーアクセスを設定する
AWS Identity and Access Management (IAM) ユーザーアカウント、グループ、またはロールに管理者アクセス許可が割り当てられている場合は、Systems
Manager Run Command および メンテナンスウィンドウ にアクセスできます。管理者アクセス許可がない場合は、管理者に AmazonSSMFullAccess
管理ポリシーの割り当てを依頼するか、IAM アカウント、グループ、またはロールに同等のアクセス許可を付与するポリシーの割り当てを依頼してください。
Run Command と メンテナンスウィンドウ を使用するようにユーザーアカウントを設定するには、以下の手順を使用します。新規ユーザーアカウントを作成する必要がある場合、IAM ユーザーガイド の「AWS アカウントでの IAM ユーザーの作成」を参照してください。
ユーザーアクセスを設定し、iam:PassRole ポリシーをユーザーアカウントにアタッチするには
-
IAM のナビゲーションペインで、[ユーザー] を選択し、設定するユーザーアカウントを選択します。
-
[Permissions (アクセス許可)] タブのポリシーリストで、
AmazonSSMFullAccess
ポリシーがリストにあるか、またはアカウントに Systems Manager へのアクセス許可を付与する同等のポリシーがあるかどうかを確認します。 -
[Add inline policy (インラインポリシーの追加)] を選択します。
-
[ポリシーの作成] ページの [Visual editor] (ビジュアルエディタ) タブを選択します。
-
[Service (サービス)]、[IAM] の順に選択します。
-
[アクションの選択] を選択します。
-
[Filter actions (フィルタアクション)] テキストボックスに「
PassRole
」と入力し、[PassRole] オプションを選択します。 -
[リソース] を選択します。[Specific (固有)] が選択されていることを確認し、[Add ARN (ARN の追加)] を選択します。
-
[Specify ARN for role (ロールの ARN の指定)] フィールドに、タスク 3 の終わりでコピーした Amazon SNS IAM ロールの ARN を貼り付けます。システムによって、[アカウント] と [Role name with path (ロール名とパス)] フィールドが自動的に入力されます。
-
[Add (追加)] を選択します。
-
[ポリシーの確認] を選択します。
-
[Review Policy (ポリシーの確認)] ページに名前を入力し、[Create Policy (ポリシーの作成)] を選択します。
タスク 5: iam:PassRole ポリシーをメンテナンスウィンドウロールにアタッチする
Run Command タスクをメンテナンスウィンドウに登録する場合、サービスロール Amazon リソースネーム (ARN) を指定します。このサービスロールは、メンテナンスウィンドウに登録されているタスクを実行するために
Systems Manager によって使用されます。登録された Run Command タスクの Amazon SNS 通知を設定するには、指定されたメンテナンスウィンドウサービスロールに
iam:PassRole
ポリシーをアタッチする必要があります。登録されたタスクを Amazon SNS 通知に設定しない場合、このタスクはスキップされます。
iam:PassRole
ポリシーを使用すると、メンテナンスウィンドウ サービスロールはタスク 3 で作成した Amazon SNS IAM ロールを Amazon SNS サービスに渡すことができます。次の手順は、 iam:PassRole
ポリシーを メンテナンスウィンドウ サービスロールにアタッチする方法を示しています。
登録された Run Command タスクに関連する通知を送信するには、メンテナンスウィンドウのカスタムサービスロールを使用する必要があります。詳細については、サービスにリンクされたロール、またはカスタムサービスロールを使用してメンテナンスウィンドウタスクを実行しますか? を参照してください。
カスタムサービスロールを作成する必要がある場合は、次のいずれかのトピックを参照してください。
メンテナンスウィンドウ ロールに iam:PassRole ポリシーをアタッチするには
-
https://console.aws.amazon.com/iam/
で IAM コンソールを開きます。 -
ナビゲーションペインで [Roles (ロール)] を選択し、タスク 3 で作成した Amazon SNS IAM ロールを選択します。
-
[Role ARN (ロールの ARN] をコピー、または書き留めて、IAM コンソールの [Roles (ロール)] セクションに戻ります。
-
作成したカスタム メンテナンスウィンドウ サービスロールを選択します ([Role (ロール)] 名の下)。
-
[Permissions (アクセス許可)] で、
AmazonSSMMaintenanceWindowRole
ポリシーが一覧に表示されていること、または Systems Manager API に対するメンテナンスウィンドウのアクセス許可を与える同等のポリシーがあることを確認します。 -
[Add inline policy (インラインポリシーの追加)] を選択します。
-
[Visual Editor (ビジュアルエディタ)] タブを選択します。
-
[Service (サービス)] で、[IAM] を選択します。
-
[Actions (アクション)] で、[PassRole] を選択します。
-
[Resources (リソース)] で、[Specific (特定)]、[Add ARN (ARN の追加)] の順に選択します。
-
[Specify ARN for role (ロールの ARN を指定)] ボックスで、タスク 3 で作成した Amazon SNS IAM ロールの ARN を貼り付けて、[Add (追加)] を選択します。
-
[ポリシーの確認] を選択します。
-
[Review Policy (ポリシーの確認)] ページで PassRole ポリシーの名前を入力し、[Create policy (ポリシーの作成)] を選択します。