デプロイとコンポーネントのヘルスステータス通知を受け取る - AWS IoT Greengrass

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

デプロイとコンポーネントのヘルスステータス通知を受け取る

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

注記

Amazon EventBridge は、アプリケーションを Greengrass コアデバイス、デプロイ、コンポーネント通知などのさまざまなソースのデータに接続するために使用できるイベントバスサービスです。詳細については、「Amazon ユーザーガイド」の「Amazon とは EventBridge」を参照してください。 EventBridge

デプロイステータスの変更イベント

AWS IoT Greengrass は、デプロイが 、FAILED、、SUCCEEDED、および の状態になるとCOMPLETEDREJECTEDイベントを発行しますCANCELED。すべての状態遷移または指定した状態への移行に対して実行される EventBridge ルールを作成できます。デプロイがルールを開始する状態になると、 はルールで定義されたターゲットアクションを EventBridge 呼び出します。これにより、通知を送信したり、イベント情報をキャプチャしたり、修正アクションを実行したり、状態の変更に応じて他のイベントを開始したりできます。例えば、次のユースケースのルールを作成できます。

  • アセットのダウンロードや担当者の通知など、デプロイ後のオペレーションを開始します。

  • デプロイの成功または失敗時に通知を送信します。

  • デプロイイベントに関するカスタムメトリクスを発行します。

デプロイ状態変更のイベントでは、次の形式を使用します。

{ "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、、COMPLETEDREJECTEDまたは として完了すると開始されますCANCELED。コアデバイスでのデプロイが失敗した場合、その理由を説明する詳細なレスポンスを受け取ります。デプロイエラーコードの詳細については、「詳細なデプロイエラーコード」を参照してください。

デプロイの状態
  • FAILED。デプロイに失敗しました。

  • SUCCEEDED。モノのグループを対象としたデプロイが正常に完了しました。

  • COMPLETED。モノを対象としたデプロイが正常に完了しました。

  • REJECTED。 デプロイが拒否されました。詳細については、statusDetails「」フィールドを参照してください。

  • CANCELED。 デプロイはユーザーによってキャンセルされました。

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

errorStacks および のエラーコードの完全なリストについてはerrorTypes詳細なデプロイエラーコード「」および「」を参照してください詳細なコンポーネントのステータスコード

コンポーネントのステータス変更イベント

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

コンポーネントの状態変更のイベントは、次の形式を使用します。

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 } ] } }

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

EventBridge ルールを作成するための前提条件

の EventBridge ルールを作成する前に AWS IoT Greengrass、次の操作を行います。

  • のイベント、ルール、ターゲットについて理解します EventBridge。

  • EventBridge ルールによって呼び出されるターゲットを作成して設定します。ルールは、以下のようなさまざまなタイプのターゲットを呼び出すことができます。

    • Amazon Simple Notification Service (Amazon SNS)

    • AWS Lambda 関数

    • Amazon Kinesis Video Streams

    • Amazon Simple Queue Service Amazon SQSキュー

詳細については、「Amazon ユーザーガイド」の「Amazon EventBridgeとは」および「Amazon の開始方法 EventBridge 」を参照してください。 EventBridge

デバイスヘルス通知を設定する (コンソール)

グループのデプロイ状態が変更されたときに Amazon SNS トピックを発行する EventBridge ルールを作成するには、次のステップを実行します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。詳細については、「Amazon EventBridge ユーザーガイド」の「 AWS リソースからのイベントでトリガーする EventBridge ルールの作成」を参照してください。

  1. Amazon EventBridge コンソール を開きます。

  2. ナビゲーションペインで Rules] (ルール) を選択します。

  3. ルールの作成‭ を選択します。

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

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

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

  6. ルールタイプ では、イベントパターンを持つルール] を選択します。

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

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

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

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

  11. [Event type] (イベントタイプ) で、次から選択します。

    • デプロイイベントについては、[Greengrass V2 Effective Deployment Status Change] (Greengrass V2 の有効なデプロイステータスの変更) を選択します。

    • コンポーネントイベントについては、[Greengrass V2 Installed Component Status Change] (Greengrass V2 のインストールされたコンポーネントのステータス変更) を選択します。

  12. 次へ をクリックします。

  13. ターゲットタイプ] では、AWS サービス] を選択します。

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

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

    2. [Topic (トピック)] で、ターゲットトピックを選択します。

    3. [次へ] をクリックします。

  15. 次へ をクリックします。

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

デバイスヘルス通知を設定する (CLI)

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\"]}"

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

  2. トピックをルールターゲットとして追加します。

    • topic-arn を Amazon SNS トピックの ARN に置き換えます。

    aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="topic-arn"
    注記

    Amazon EventBridge がターゲットトピックを呼び出せるようにするには、トピックにリソースベースのポリシーを追加する必要があります。詳細については、Amazon SNS アクセス許可 EventBridge 」を参照してください。

詳細については、「Amazon ユーザーガイド」の「 のイベントとイベントパターン EventBridge」を参照してください。 EventBridge

デバイスヘルス通知を設定する (AWS CloudFormation)

AWS CloudFormation テンプレートを使用して、Greengrass グループのデプロイの状態変更に関する通知を送信する EventBridge ルールを作成します。詳細については、「 ユーザーガイド」の「Amazon EventBridge リソースタイプのリファレンスAWS CloudFormation 」を参照してください。

以下も参照してください。