AWS Systems Manager
ユーザーガイド

AWS Systems Manager の Amazon SNS 通知の設定

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 Developer Guide の「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 Developer Guide の「トピックの作成」を参照してください。

注記

トピックを作成した後に [Topic ARN (トピック ARN)] をコピー、または書き留めます。ステータスの通知を返すように設定されたコマンドを送信するときに、この ARN を指定します。

トピックを作成したら、[エンドポイント] を指定してサブスクライブします。E メールプロトコルを選択した場合、エンドポイントは、通知を受け取る E メールアドレスです。トピックを受信登録する方法については、Amazon Simple Notification Service Developer Guide の「トピックへの受信登録」を参照してください。

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 ポリシーを作成するには

  1. Open the IAM console at https://console.aws.amazon.com/iam/.

  2. ナビゲーションペインで、[ポリシー]、[ポリシーの作成] の順に選択します。([Get Started] ボタンが表示された場合は、そのボタンを選択してから、[Create Policy] を選択します)。

  3. [JSON] タブを選択します。

  4. デフォルトコンテンツを以下のものと置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "*" } ] }
  5. [ポリシーの確認] を選択します。

  6. [ポリシーの確認] ページで、[Name (名前)] にインラインポリシーの名前を入力します。例: SNSPublishPermissions

  7. (オプション) [Description (説明)] に、ポリシーの説明を入力します。

  8. [ポリシーの作成] を選択します。

タスク 3: Amazon SNS 通知の IAM ロールを作成する

Amazon SNS 通知の IAM ロールを作成するには、次の手順を使用します。このサービスロールは、Amazon SNS 通知をトリガーするために Systems Manager によって使用されます。

Amazon SNS 通知の IAM サービスロールを作成するには

  1. Open the IAM console at https://console.aws.amazon.com/iam/.

  2. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  3. [Select type of trusted entity] ページの [AWS Service] で、[EC2] を選択します。

  4. [Select your use case (ユースケースの選択] セクションで、[EC2]、[Next: Permissions (次へ: アクセス権限)] の順に選択します。

  5. [Attached permissions policy (アタッチされたアクセス権限ポリシー)] ページで、タスク 2 で作成したカスタムポリシーの名前の左側にあるチェックボックスをオンにします。例: SNSPublishPermissions

  6. [Review (確認)] ページの [Role name (ロール名)] ボックスに名前を入力し、続いて説明を入力します。

  7. [Create role (ロールの作成)] を選択します。システムでは、[Roles] ページが返されます。

  8. [Roles] ページで作成したロールを選択して、[Summary] ページを開きます。

  9. [Trust Relationships (信頼関係)] タブを選択し、[Edit Trust Relationship (信頼関係の編集)] を選択します。

  10. 次のコードスニペットが示すように、, "ssm.amazonaws.com" を既存のポリシーに追加します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com", "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    注記

    既存のエントリの後にコンマを追加する必要があります。前の例では、エントリは "ec2.amazonaws.com" になります。そうしないと、JSON が無効になります。

  11. [Update Trust Policy (信頼ポリシーの更新)] を選択します。

  12. [Role ARN (ロールの ARN)] をコピー、または書き留めます。Amazon SNS 通知を返すように設定されたコマンドを送信するときに、このロール ARN が使用されます。

  13. [Summary (概要)] ページは開いたままにします。

タスク 4: ユーザーアクセスを設定する

AWS Identity and Access Management (IAM) ユーザーアカウント、グループ、またはロールに管理者アクセス許可が割り当てられている場合は、Systems Manager Run Command および メンテナンスウィンドウ にアクセスできます。管理者アクセス許可がない場合は、管理者に AmazonSSMFullAccess 管理ポリシーの割り当てを依頼するか、IAM アカウント、グループ、またはロールに同等のアクセス許可を付与するポリシーの割り当てを依頼してください。

Run Command と メンテナンスウィンドウ を使用するようにユーザーアカウントを設定するには、以下の手順を使用します。新規ユーザーアカウントを作成する必要がある場合、IAM User Guide の「AWS アカウント内での AWS ユーザーの作成」を参照してください。

ユーザーアクセスを設定し、iam:PassRole ポリシーをユーザーアカウントにアタッチするには

  1. IAM のナビゲーションペインで、[ユーザー] を選択し、設定するユーザーアカウントを選択します。

  2. [Permissions (アクセス許可)] タブのポリシーリストで、AmazonSSMFullAccess ポリシーがリストにあるか、またはアカウントに Systems Manager へのアクセス許可を付与する同等のポリシーがあるかどうかを確認します。

  3. [Add inline policy (インラインポリシーの追加)] を選択します。

  4. [ポリシーの作成] ページの [Visual editor] (ビジュアルエディタ) タブを選択します。

  5. [Service (サービス)]、[IAM] の順に選択します。

  6. [アクションの選択] を選択します。

  7. [Filter actions (フィルタアクション)] テキストボックスに「PassRole」と入力し、[PassRole] オプションを選択します。

  8. [リソース] を選択します。[Specific (固有)] が選択されていることを確認し、[Add ARN (ARN の追加)] を選択します。

  9. [Specify ARN for role (ロールの ARN の指定)] フィールドに、タスク 3 の終わりでコピーした Amazon SNS ロールの ARN を貼り付けます。システムによって、[アカウント] と [Role name with path (ロール名とパス)] フィールドが自動的に入力されます。

  10. [Add (追加)] を選択します。

  11. [ポリシーの確認] を選択します。

  12. [Review Policy (ポリシーの確認)] ページに名前を入力し、[Create Policy (ポリシーの作成)] を選択します。

タスク 5: iam:PassRole ポリシーをメンテナンスウィンドウロールにアタッチする

Run Command タスクをメンテナンスウィンドウに登録する場合、サービスロール Amazon リソースネーム (ARN) を指定します。このサービスロールは、メンテナンスウィンドウに登録されているタスクを実行するために Systems Manager によって使用されます。登録された Run Command タスクの Amazon SNS 通知を設定するには、指定されたメンテナンスウィンドウサービスロールに iam:PassRole ポリシーをアタッチする必要があります。登録されたタスクを Amazon SNS 通知に設定しない場合、このタスクはスキップされます。

iam:PassRole ポリシーを使用すると、メンテナンスウィンドウ サービスロールはタスク 3 で作成した SNS ロールを Amazon SNS サービスに渡すことができます。次の手順は、 iam:PassRole ポリシーを メンテナンスウィンドウ サービスロールにアタッチする方法を示しています。

注記

登録された Run Command タスクに関連する通知を送信するには、メンテナンスウィンドウのカスタムサービスロールを使用する必要があります。詳細については、「サービスにリンクされたロール、またはカスタムサービスロールを使用してメンテナンスウィンドウタスクを実行しますか?」を参照してください。

カスタムサービスロールを作成する必要がある場合は、次のいずれかのトピックを参照してください。

メンテナンスウィンドウ ロールに iam:PassRole ポリシーをアタッチするには

  1. https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles (ロール)] を選択し、タスク 3 で作成した Amazon SNS ロールを選択します。

  3. [Role ARN (ロールの ARN] をコピー、または書き留めて、IAM コンソールの [Roles (ロール)] セクションに戻ります。

  4. 作成したカスタム メンテナンスウィンドウ サービスロールを選択します ([Role (ロール)] 名の下)。

  5. [Permissions (アクセス許可)] で、AmazonSSMMaintenanceWindowRole ポリシーが一覧に表示されていること、または Systems Manager API に対するメンテナンスウィンドウのアクセス許可を与える同等のポリシーがあることを確認します。

  6. [Add inline policy (インラインポリシーの追加)] を選択します。

  7. [Set Permissions] ページで、[Custom Generator] を選択し、次に [Select] をクリックします。

  8. [Effect (効果)] が [Allow (許可)] に設定されていることを確認します。

  9. [AWS のサービス] から [AWS Identity and Access Management] を選択します。

  10. [Actions (アクション)] で、[PassRole] を選択します。

  11. [Amazon Resource Name (ARN)] フィールドに、タスク 3 で作成した Amazon SNS IAM ロールの ARN を貼り付けます。

  12. [Add Statement (ステートメントを追加)]、[Next (次へ)] の順に選択します。

  13. [Review Policy (ポリシーの確認)] ページで、[Apply Policy (ポリシーの適用)] を選択します。