

• AWS Systems Manager CloudWatch ダッシュボードは、2026 年 4 月 30 日以降は利用できなくなります。お客様は、これまでと同様に Amazon CloudWatch コンソールを使用して、Amazon CloudWatch ダッシュボードの表示、作成、管理を継続できます。詳細については、「[Amazon CloudWatch ダッシュボードのドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)」を参照してください。

# Amazon SNS 通知を使用した Systems Manager のステータス変更のモニタリング
<a name="monitoring-sns-notifications"></a>

Amazon Simple Notification Service (Amazon SNS) を設定し、AWS Systems Manager のツールである Run Command または Maintenance Windows を使用して送信したコマンドのステータスに関する通知を送信できます。Amazon SNS は、Amazon SNS トピックをサブスクライブしているクライアントまたはエンドポイントへの通知の送信および配信を管理します。コマンドが新しい状態に変更、または*失敗*や*タイムアウト*のような状態に変更されるたびに通知を受け取ることができます。複数のノードにコマンドを送信する場合、特定ノードに送信されたコマンドの各コピーに対して通知を受けることができます。各コピーは、その*呼び出し*と呼ばれます。

Amazon SNS は、HTTP または HTTPS POST、E メール (SMTP、プレーンテキストまたは JSON 形式のいずれか)、あるいは Amazon Simple Queue Service (Amazon SQS) キューに投稿されるメッセージとして通知を配信できます。詳細については、*Amazon Simple Notification Service デベロッパーガイド*の「[Amazon SNS とは](https://docs.aws.amazon.com/sns/latest/dg/)」を参照してください。Run Command と Maintenance Windows が提供する Amazon SNS 通知に含まれる JSON データの構造の例については、「[AWS Systems Manager の Amazon SNS 通知の例](monitoring-sns-examples.md)」を参照してください。

**重要**  
次の重要な情報に注意してください。  
Amazon Simple 通知サービスの FIFO トピックはサポートされていません。
チャットアプリケーションの Amazon Q Developer は、Amazon SNS を使用した Systems Manager のモニタリングではサポートされていません。チャットアプリケーションの Amazon Q Developer を使って Systems Manager をモニタリングする場合は、Amazon EventBridge を使用します。EventBridge を使用して Systems Manager をモニタリングする方法については、「[Amazon EventBridge を使用して Systems Manager イベントをモニタリングする](monitoring-eventbridge-events.md)」を参照してください。チャットアプリケーションの Amazon EventBridge と Amazon Q Developer の詳細については、Amazon Q Developer in chat applications Administrator Guide の「[Tutorial: Create an EventBridge rule that send notifications to Amazon Q Developer in chat applications](https://docs.aws.amazon.com/chatbot/latest/adminguide/create-eventbridge-rule.html)」を参照してください。**

## AWS Systems Manager の Amazon SNS 通知の設定
<a name="monitoring-sns-configure"></a>

メンテナンスウィンドウに登録されている Run Command および Maintenance Windows のタスクは、以下のステータスに入るコマンドタスクについて Amazon SNS 通知を送信できます。
+ 進行中
+ 成功
+ 失敗
+ タイムアウト
+ Cancelled (キャンセル)

これらのステータスのいずれかを入力するコマンドの条件については、「[コマンドのステータスについて](monitor-commands.md)」を参照してください。

**注記**  
Run Command を使用してコマンドを送信すると、キャンセル中および保留中のステータスも報告されます。これらのステータスは、Amazon SNS 通知ではキャプチャされません。

### Amazon SNS 通知のコマンド概要
<a name="monitoring-sns-configure-summary"></a>

Amazon SNS 通知のメンテナンスウィンドウにある Run Command または Run Command のタスクを設定する場合、Amazon SNS は次の情報を含む概要メッセージを送信します。


****  

| フィールド | タイプ | 説明 | 
| --- | --- | --- | 
| eventTime | 文字列 | イベントが開始された時刻。Amazon SNS はメッセージの配信順序を保証しないため、タイムスタンプは重要です。例: 2016-04-26T13:15:30Z  | 
| documentName | 文字列 | このコマンドの実行に使用された SSM ドキュメントの名前。 | 
| commandId | String | コマンドが送信された後に Run Command によって生成された ID です。 | 
| expiresAfter | 日付 | この時間が経過したときにコマンドの実行がまだ開始されていない場合、コマンドは実行されません。 | 
| outputS3BucketName | 文字列 | コマンド実行に対する応答を保存する Amazon Simple Storage Service (Amazon S3) バケットです。 | 
| outputS3KeyPrefix | 文字列 | コマンド実行に対する応答を保存するバケット内の Amazon S3 のディレクトリパスです。 | 
| requestedDateTime | String | リクエストがこの特定のノードに送信された日時です。 | 
| instanceIds | StringList | コマンドの対象となるノードです。 インスタンス ID が概要メッセージに含まれるのは、Run Command タスクがインスタンス ID を直接ターゲットにしている場合のみです。Run Command タスクがタグベースのターゲティングを使用して発行された場合、インスタンス ID は概要メッセージに含まれません。  | 
| ステータス | 文字列 | コマンドのコマンドステータスです。 | 

### 呼び出しベースの Amazon SNS 通知
<a name="monitoring-sns-configure-invocation"></a>

コマンドを複数のノードに送信する場合、Amazon SNS はコマンドの各コピーまたは呼び出しに関するメッセージを送信できます。メッセージには次の情報が含まれます。


****  

| フィールド | タイプ | 説明 | 
| --- | --- | --- | 
| eventTime | 文字列 | イベントが開始された時刻。Amazon SNS はメッセージの配信順序を保証しないため、タイムスタンプは重要です。例: 2016-04-26T13:15:30Z  | 
| documentName | 文字列 | このコマンドの実行に使用された Systems Manager ドキュメント (SSM ドキュメント) の名前。 | 
| requestedDateTime | String | リクエストがこの特定のノードに送信された日時です。 | 
| commandId | String | コマンドが送信された後に Run Command によって生成された ID です。 | 
| instanceId | 文字列 | コマンドの対象となるインスタンスを選択します。 | 
| status | 文字列 | この呼び出しのコマンドステータス。 | 

コマンドがステータスを変更したときに Amazon SNS 通知をセットアップするには、次のタスクを完了する必要があります。

**注記**  
メンテナンスウィンドウの Amazon SNS 通知を設定していない場合は、このトピックの「タスク 5」をスキップできます。

**Topics**
+ [Amazon SNS 通知のコマンド概要](#monitoring-sns-configure-summary)
+ [呼び出しベースの Amazon SNS 通知](#monitoring-sns-configure-invocation)
+ [タスク 1: Amazon SNS トピックを作成してサブスクライブする](#monitoring-configure-sns)
+ [タスク 2: Amazon SNS 通知用の IAM ポリシーを作成する](#monitoring-iam-policy)
+ [タスク 3: Amazon SNS 通知の IAM ロールを作成する](#monitoring-iam-notifications)
+ [タスク 4: ユーザーアクセスを設定する](#monitoring-sns-passpolicy)
+ [タスク 5: iam:PassRole ポリシーをメンテナンスウィンドウロールにアタッチする](#monitoring-sns-passpolicy-mw)

### タスク 1: Amazon SNS トピックを作成してサブスクライブする
<a name="monitoring-configure-sns"></a>

Amazon SNS *トピック*は、メンテナンスウィンドウに登録されている Run Command および Run Command タスクがコマンドのステータスに関する通知を送信するために使用する通信チャネルです。Amazon SNS では、HTTP/S、E メールに加え、Amazon Simple Queue Service (Amazon SQS) のような AWS のサービスをサポートしています。開始するには、E メールプロトコルを使用して開始することをお勧めします。トピックの作成方法の詳細については、*Amazon Simple Notification Service デベロッパーガイド*の「[Amazon SNS トピックの作成](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)」を参照してください。

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

トピックを作成したら、[**エンドポイント**] を指定してサブスクライブします。E メールプロトコルを選択した場合、エンドポイントは、通知を受け取る E メールアドレスです。トピックにサブスクライブする方法の詳細については、*Amazon Simple Notification Service デベロッパーガイド*の「[Amazon SNS トピックへのサブスクライブ](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)」を参照してください。

Amazon SNS は、*AWS通知*の確認メールをお客様が指定した E メールアドレスに送信します。E メールを開き、[**サブスクリプションを確認**] へのリンクを選択します。

AWS からの確認メッセージが届きます。Amazon SNS は、通知を受信し、通知を E メールとして指定された E メールアドレスに送信するように設定されました。

### タスク 2: Amazon SNS 通知用の IAM ポリシーを作成する
<a name="monitoring-iam-policy"></a>

以下の手順を使用して、Amazon SNS 通知を開始するためのアクセス許可を提供するカスタム AWS Identity and Access Management (IAM) ポリシーを作成します。

**Amazon SNS 通知用のカスタム IAM ポリシーを作成するには**

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

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

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

1. Amazon SNS トピックが AWS KMS 暗号化を使用しているかどうかに応じて、デフォルトの内容を次のいずれかに置き換えます。

------
#### [ SNS topic not encrypted ]

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:Publish"
               ],
               "Resource": "arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{sns-topic-name}}"
           }
       ]
   }
   ```

------

   {{region}} は、米国東部 (オハイオ) リージョンの `us-east-2` のように、AWS Systems Manager でサポートされている AWS リージョン の識別子を表します。サポートされている{{リージョン}}値のリストについては、「*Amazon Web Services 全般のリファレンス*」の「[Systems Manager サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)」にある**リージョン**列を参照してください。

   {{{{account-id}}}} は、AWS アカウントの 12 桁の識別子を `123456789012` 形式で表します。

   {{sns-topic-name}} は、通知の発行に使用する Amazon SNS トピックの名前を表します。

------
#### [ SNS topic encrypted ]

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:Publish"
               ],
               "Resource": "arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{sns-topic-name}}"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{kms-key-id}}"
           }
       ]
   }
   ```

------

   {{region}} は、米国東部 (オハイオ) リージョンの `us-east-2` のように、AWS Systems Manager でサポートされている AWS リージョン の識別子を表します。サポートされている{{リージョン}}値のリストについては、「*Amazon Web Services 全般のリファレンス*」の「[Systems Manager サービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)」にある**リージョン**列を参照してください。

   {{{{account-id}}}} は、AWS アカウントの 12 桁の識別子を `123456789012` 形式で表します。

   {{sns-topic-name}} は、通知の発行に使用する Amazon SNS トピックの名前を表します。

   {{kms-key-id}} は、トピックの暗号化と復号に使用する AWS KMS の対称暗号化 KMS キーの ID を、`1234abcd-12ab-34cd-56ef-12345EXAMPLE` という形式で表しています。

**注記**  
AWS KMS 暗号化の使用には料金がかかります。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[Managing Amazon SNS encryption keys and costs](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)」を参照してください。

------

1. **[Next: Tags]** (次へ: タグ) を選択します。

1. (オプション) 1 つ以上のタグキーと値のペアを追加して、このポリシーのアクセスを整理、追跡、または制御します。

1. **[次へ: レビュー]** を選択します。

1. [**Review policy (ポリシーの確認)**] ページで、[**Name (名前)**] にインラインポリシーの名前を入力します。例: **my-sns-publish-permissions**。

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

1. [**Create policy**] を選択します。

### タスク 3: Amazon SNS 通知の IAM ロールを作成する
<a name="monitoring-iam-notifications"></a>

Amazon SNS 通知の IAM ロールを作成するには、次の手順を使用します。このサービスロールは、Systems Manager で Amazon SNS 通知を開始するために使用されます。以降の手順では、このロールは Amazon SNS IAM ロールと呼ばれます。

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

1. AWS マネジメントコンソール にサインインして、IAM コンソール [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開きます。

1. IAM コンソールのナビゲーションペインで、**[ロール]**、**[ロールを作成]** を選択します。

1. **[AWS のサービス]**、[Systems Manager] の順にクリックします。

1. [Systems Manager のユースケース] を選択します。その後、**[Next]** を選択します。

1. [**Attach permissions policies (アクセス許可ポリシーのアタッチ)**] ページで、タスク 2 で作成したカスタムポリシーの名前の左側にあるチェックボックスをオンにします。例: **my-sns-publish-permissions**。

1. (オプション) [アクセス許可の境界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)を設定します。このアドバンスド機能は、サービスロールで使用できますが、サービスにリンクされたロールではありません。

   **[Permissions boundary]** (アクセス許可の境界) セクションを展開し、**[Use a permissions boundary to control the maximum role permissions]** (アクセス許可の境界を使用して、ロールのアクセス許可の上限を設定する) を選択します。IAM には、あなたのアカウント内の AWS 管理ポリシーとカスタマー管理ポリシーのリストがあります。アクセス許可の境界に使用するポリシーを選択するか、[**ポリシーを作成**] を選択して新しいブラウザタブを開き、新しいポリシーをゼロから作成します。詳細については、『*IAM ユーザーガイド*』の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)」を参照してください。ポリシーを作成したら、そのタブを閉じて元のタブに戻り、アクセス許可の境界として使用するポリシーを選択します。

1. [**次へ**] を選択します。

1. 可能な場合は、このロールの目的を識別するのに役立つロール名またはロール名サフィックスを入力します。ロール名は AWS アカウント アカウント内で一意である必要があります。大文字と小文字は区別されません。例えば、**PRODROLE** と **prodrole** というロール名を両方作成することはできません。多くのエンティティによりロールが参照されるため、作成後にロール名を変更することはできません。

1. (オプション) [**Description (説明)**] には、新しいロールの説明を入力します。

1. **[Step 1: Select trusted entities]** (ステップ 1: 信頼済みエンティティの選択) または **[Step 2: Select permissions]** (ステップ 2: 権限の選択) のセクションで **[Edit]** (編集) を選択し、ロールのユースケースと権限を変更します。

1. (オプション) タグをキーバリューペアとしてアタッチして、メタデータをユーザーに追加します。IAM でのタグの使用に関する詳細については、「IAM ユーザーガイド」の「[IAM リソースにタグを付ける](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)」を参照してください。

1. ロール情報を確認し、**ロールの作成** を選択します。

1. ロールの名前を選択してから、**[Role ARN]** (ロール ARN) 値をコピーまたはメモします。Amazon SNS 通知を返すように設定されたコマンドを送信するときに、ロールのこの Amazon リソースネーム (ARN) が使用されます。

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

### タスク 4: ユーザーアクセスを設定する
<a name="monitoring-sns-passpolicy"></a>

IAM エンティティ (ユーザー、ロール、またはグループ) に管理者許可が割り当てられている場合、ユーザーまたはロールには Run Command と Maintenance Windows へのアクセスと AWS Systems Manager ツールが付与されます。

管理者許可のないエンティティの場合、管理者は IAM エンティティに次のアクセス許可を付与する必要があります。
+ `AmazonSSMFullAccess` マネージドポリシー、または同等のアクセス許可を付与するポリシー。
+ `iam:PassRole` で作成されたロールの [タスク 3: Amazon SNS 通知の IAM ロールを作成する](#monitoring-iam-notifications) アクセス許可。例えば、次のようになります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::{{111122223333}}:role/{{sns-role-name}}",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ssm.amazonaws.com"
                }
            }
        }
    ]
}
```

------

アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
+ AWS IAM アイデンティティセンター のユーザーとグループ:

  アクセス許可セットを作成します。「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)」の手順に従ってください。
+ IAM 内で、ID プロバイダーによって管理されているユーザー:

  ID フェデレーションのロールを作成します。詳細については *IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) を参照してください。
+ IAM ユーザー:
  + ユーザーが担当できるロールを作成します。手順については *IAM ユーザーガイド* の [IAM ユーザーのロールの作成](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) を参照してください。
  + (お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。*IAM ユーザーガイド* の [ユーザー (コンソール) へのアクセス許可の追加](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) の指示に従います。

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

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

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

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

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

1. [**Choose a service** (サービスの選択)] を選んでから、[**IAM**] を選択します。

1. **[Actions]** (アクション) の場合は、**[Filter actions]** (フィルタアクション) テキストボックスに「**PassRole**」を入力し、**[PassRole]** の横にあるチェックボックスを選択します。

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

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

1. [**Add**] (追加) をクリックします。

1. [**Review policy** (ポリシーの確認)] を選択します。

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

### タスク 5: iam:PassRole ポリシーをメンテナンスウィンドウロールにアタッチする
<a name="monitoring-sns-passpolicy-mw"></a>

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

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

**注記**  
登録された Run Command タスクに関連する通知を送信するには、メンテナンスウィンドウのカスタムサービスロールを使用します。詳細については、「[Maintenance Windows を設定する](setting-up-maintenance-windows.md)」を参照してください。  
メンテナンスウィンドウのタスク用にカスタムサービスロールを作成する必要がある場合は、「[Maintenance Windows を設定する](setting-up-maintenance-windows.md)」を参照してください。

**`iam:PassRole` ポリシーを Maintenance Windows ロールにアタッチするには**

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

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

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

1. **[Role name]** (ロール名) リストから、作成したカスタム Maintenance Windows のサービスロールを選択します。

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

1. **[Add permissions, Create inline policy]** (アクセス許可の追加、インラインポリシーの作成) を選択します。

1. [**Visual Editor** (ビジュアルエディタ)] タブを選択します。

1. [**Service** (サービス)] で、[**IAM**] を選択します。

1. **[Actions]** (アクション) の場合は、**[Filter actions]** (フィルタアクション) テキストボックスに「**PassRole**」を入力し、**[PassRole]** の横にあるチェックボックスを選択します。

1. [**Resources (リソース)**] で、[**Specific (特定)**]、[**Add ARN (ARN の追加)**] の順に選択します。

1. [**Specify ARN for role (ロールの ARN を指定)**] ボックスで、タスク 3 で作成した Amazon SNS IAM ロールの ARN を貼り付けて、[**Add (追加)**] を選択します。

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

1. **[ポリシーの確認]** ページで `PassRole` ポリシーの名前を入力し、**[ポリシーの作成]** をクリックします。