

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# デプロイとコンポーネントのヘルスステータス通知を受け取る
<a name="deployment-health-notifications"></a>

Amazon EventBridge イベントルールは、デバイスが受信した Greengrass デプロイと、デバイスにインストールされているコンポーネントの状態変更に関する通知を提供します。EventBridge は、 AWS リソースの変更を説明するシステムイベントのほぼリアルタイムのストリームを提供します。 は、これらのイベントを*ベストエフォート*ベースで EventBridge AWS IoT Greengrass に送信します。つまり、 はすべてのイベントを EventBridge に送信 AWS IoT Greengrass しようとしますが、まれにイベントが配信されない場合があります。さらに、 は特定のイベントの複数のコピーを送信する AWS IoT Greengrass 可能性があります。つまり、イベントリスナーは、イベントが発生した順序でイベントを受信しない可能性があります。

**注記**  
Amazon EventBridge は、アプリケーションを [Greengrass Core デバイス](telemetry.md)やデプロイよびコンポーネント通知などのさまざまなソースのデータに接続するために使用できるイベントバスサービスです。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)」を参照してください。

**Topics**
+ [デプロイステータスの変更イベント](#deployment.events-message-format)
+ [コンポーネントのステータス変更イベント](#component.events-message-format)
+ [EventBridge ルールを作成するための前提条件](#create-events-rule-prereqs)
+ [デバイスヘルス通知を設定する (コンソール)](#create-events-rule-console)
+ [デバイスヘルス通知を設定する (CLI)](#create-events-rule-cli)
+ [デバイスヘルス通知を設定する (CloudFormation)](#create-events-rule-cloudformation)
+ [関連情報](#deployment-notifications-see-also)

## デプロイステータスの変更イベント
<a name="deployment.events-message-format"></a>

AWS IoT Greengrass は、デプロイが `FAILED`、、`SUCCEEDED`、`COMPLETED``REJECTED`、および の状態になるとイベントを発行します`CANCELED`。すべての状態遷移または指定した状態への移行に対して実行される EventBridge ルールを作成できます。デプロイがルールを開始する状態になると、EventBridge はルールで定義されたターゲットアクションを呼び出します。これにより、通知を送信したり、イベント情報をキャプチャしたり、修正アクションを実行したり、状態の変更に応じて他のイベントを開始したりできます。例えば、次のユースケースのルールを作成できます。
+ アセットのダウンロードや担当者の通知など、デプロイ後のオペレーションを開始します。
+ デプロイの成功または失敗時に通知を送信します。
+ デプロイイベントに関するカスタムメトリクスを発行します。

デプロイ状態変更の[イベント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)では、次の形式を使用します。

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Effective Deployment Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail":{    
        "deploymentId": "4f38f1a7-3dd0-42a1-af48-EXAMPLE09681",
        "coreDeviceExecutionStatus": "FAILED|SUCCEEDED|COMPLETED|REJECTED|CANCELED",
        "statusDetails": {
          "errorStack": ["DEPLOYMENT_FAILURE", "ARTIFACT_DOWNLOAD_ERROR", "S3_ERROR", "S3_ACCESS_DENIED", "S3_HEAD_OBJECT_ACCESS_DENIED"],
          "errorTypes": ["DEPENDENCY_ERROR", "PERMISSION_ERROR"],
        },
        "reason": "S3_HEAD_OBJECT_ACCESS_DENIED: FAILED_NO_STATE_CHANGE: Failed to download artifact name: 's3://pentest27/nucleus/281/aws.greengrass.nucleus.zip' for component aws.greengrass.Nucleus-2.8.1, reason: S3 HeadObject returns 403 Access Denied. Ensure the IAM role associated with the core device has a policy granting s3:GetObject. null (Service: S3, Status Code: 403, Request ID: HR94ZNT2161DAR58, Extended Request ID: wTX4DDI+qigQt3uzwl9rlnQiYlBgwvPm/KJFWeFAn9t1mnGXTms/luLCYANgq08RIH+x2H+hEKc=)"
     }
}
```

デプロイのステータスを更新するルールやイベントを作成できます。`FAILED`、`SUCCEEDED`、`COMPLETED`、`REJECTED` または `CANCELED` のいずれかとしてデプロイが完了すると、イベントが開始されます。コアデバイスでのデプロイが失敗した場合、その理由を説明する詳細なレスポンスを受け取ります。デプロイエラーコードの詳細については、「[詳細なデプロイエラーコード](troubleshooting-deployment.md)」を参照してください。

**デプロイの状態**  
+ `FAILED`。デプロイに失敗しました。
+ `SUCCEEDED`。モノのグループを対象としたデプロイが正常に完了しました。
+ `COMPLETED`。モノを対象としたデプロイが正常に完了しました。
+ `REJECTED`。デプロイが拒否されました。詳細については、`statusDetails` フィールドを参照してください。
+ `CANCELED`。デプロイはユーザーによってキャンセルされました。

イベントが重複したり、順序が順不同である可能性があります。イベントの順序を特定するには、`time` プロパティを使用します。

`errorStacks` および `errorTypes` のエラーコードの完全なリストについては、「[詳細なデプロイエラーコード](troubleshooting-deployment.md)」および「[詳細なコンポーネントのステータスコード](troubleshooting-component.md)」を参照してください。

## コンポーネントのステータス変更イベント
<a name="component.events-message-format"></a>

 AWS IoT Greengrass バージョン 2.12.2 以前では、コンポーネントが `ERRORED`および の状態になると、Greengrass はイベントを発行します`BROKEN`。Greengrass nucleus バージョン 2.12.3 以降では、コンポーネントが `ERRORED`、`BROKEN`、`RUNNING`、および `FINISHED` の状態になると、Greengrass はイベントを出力します。Greengrass はデプロイの完了時にもイベントを発行します。すべての状態遷移または指定した状態への移行に対して実行される EventBridge ルールを作成できます。インストールされたコンポーネントがルールを開始する状態になると、EventBridge はルールで定義されたターゲットアクションを呼び出します。これにより、通知を送信したり、イベント情報をキャプチャしたり、修正アクションを実行したり、状態の変更に応じて他のイベントを開始したりできます。

コンポーネントの状態変更の[イベント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)では、次の形式を使用します。

------
#### [ Greengrass nucleus v2.12.2 and earlier ]

コンポーネントステータス: `ERRORED` または `BROKEN`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "ERRORED|BROKEN",
            "lifecycleStatusCodes": ["STARTUP_ERROR"],
            "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1."
          }
        ]
    }
}
```

------
#### [ Greengrass nucleus v2.12.3 and later ]

コンポーネントステータス: `ERRORED` または `BROKEN`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "ERRORED|BROKEN",
            "lifecycleStatusCodes": ["STARTUP_ERROR"],
            "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1."
          }
        ]
    }
}
```

コンポーネントステータス: `RUNNING` または `FINISHED`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "RUNNING|FINISHED",
            "lifecycleStateDetails": null
          }
        ]
    }
}
```

------

インストールされたコンポーネントのステータスを更新するルールやイベントを作成できます。イベントは、コンポーネントの状態がデバイス上で変更されたときに開始されます。コンポーネントにエラーや故障が発生した理由を説明する詳細なレスポンスを受け取ります。また、失敗の理由を示すステータスコードも表示されます。コンポーネントのステータスコードの詳細については、「[詳細なコンポーネントのステータスコード](troubleshooting-component.md)」を参照してください。

## EventBridge ルールを作成するための前提条件
<a name="create-events-rule-prereqs"></a>

の EventBridge ルールを作成する前に AWS IoT Greengrass、次の操作を行います。
+ EventBridge のイベント、ルール、ターゲットに精通しておいてください。
+ EventBridge ルールによって呼び出されるターゲットを作成して設定します。ルールは、以下のようなさまざまなタイプのターゲットを呼び出すことができます。
  + Amazon Simple Notiﬁcation Service (Amazon SNS)
  + AWS Lambda 関数
  + Amazon Kinesis Video Streams
  + Amazon Simple Queue Service (Amazon SQS) キュー

詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)」および「[Amazon EventBridge の開始方法](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html)」を参照してください。

## デバイスヘルス通知を設定する (コンソール)
<a name="create-events-rule-console"></a>

グループのデプロイ状態が変更されたときに Amazon SNS トピックを発行する EventBridge ルールを作成するには、次のステップを使用します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。詳細については、「Amazon [ EventBridge ユーザーガイド」の「Creating a EventBridge rule that triggers on an event from an AWS resource](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html)」を参照してください。 * EventBridge *

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

1. ナビゲーションペインで **[ルール]** を選択します。

1. **[ルールの作成]** を選択します。

1. ルールの名前と説明を入力します。

   ルールには同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

1. **[イベントバス]** で、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、**AWS のデフォルトのイベントバス**を選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに送られます。

1. **[ルールタイプ]** で、**[イベントパターンを持つルール]** を選択してください。

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

1. **[Event source]** (イベントソース) で、**[AWS events]** (イベント) を選択します。

1. **[イベントパターン]** で、**[AWS のサービス]** を選択します。

1. **[AWS のサービス]** で [Greengrass] を選択します。

1. **[Event type]** (イベントタイプ) で、次から選択します。
   + デプロイイベントについては、**[Greengrass V2 Effective Deployment Status Change]** (Greengrass V2 の有効なデプロイステータスの変更) を選択します。
   + コンポーネントイベントについては、**[Greengrass V2 Installed Component Status Change]** (Greengrass V2 のインストールされたコンポーネントのステータス変更) を選択します。

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

1. **[ターゲットタイプ]** で、**[AWS のサービス]** を選択します。

1. **[ターゲットの選択]** で、ターゲットを設定します。この例では Amazon SNS トピックを使用していますが、通知を送信するターゲットタイプには他のトピックも設定できます。

   1. [**Target (ターゲット)**] で [**SNS topic (SNS トピック)**] を選択します。

   1. **[トピック]** で、ターゲットトピックを選択します。

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

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

1. ルールの詳細を確認し、**ルールの作成** を選択します。

## デバイスヘルス通知を設定する (CLI)
<a name="create-events-rule-cli"></a>

次のステップを使用して、Greengrass ステータス変更イベントが発生したときに Amazon SNS トピックを発行する EventBridge ルールを作成します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。

1. ルールを作成します。
   + デプロイステータス変更イベント用。

     ```
     aws events put-rule \
       --name TestRule \
       --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Effective Deployment Status Change\"]}"
     ```
   + コンポーネントのステータス変更イベント用。

     ```
     aws events put-rule \
       --name TestRule \
       --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Installed Component Status Change\"]}"
     ```

   パターンで省略されたプロパティは無視されます。

1. トピックをルールターゲットとして追加します。
   + {{topic-arn}} を Amazon SNS トピックの ARN に置き換えます。

   ```
   aws events put-targets \
     --rule TestRule \
     --targets "Id"="1","Arn"="{{topic-arn}}"
   ```
**注記**  
Amazon EventBridge にターゲットトピックの呼び出しを許可するには、トピックにリソースベースのポリシーを追加する必要があります。詳細については、*Amazon EventBridge ユーザーガイド*の「[Amazon SNS のアクセス許可](https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sns-permissions)」を参照してください。

詳細については、「*Amazon EventBridge ユーザーガイド*」の「[EventBridge のイベントとイベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)」を参照してください。

## デバイスヘルス通知を設定する (CloudFormation)
<a name="create-events-rule-cloudformation"></a>

 CloudFormation テンプレートを使用して、Greengrass グループデプロイの状態変更に関する通知を送信する EventBridge ルールを作成します。詳細については、「*AWS CloudFormation ユーザーガイド*」の「[Amazon EventBridge resource type reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Events.html)」を参照してください。

## 関連情報
<a name="deployment-notifications-see-also"></a>
+ [デバイスへのデプロイのステータスを確認する](check-deployment-status.md#check-device-deployment-status)
+ 「*Amazon EventBridge ユーザーガイド*」の「[What is Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)」