翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EventBridge イベントルールは、デバイスが受信した Greengrass デプロイと、デバイスにインストールされているコンポーネントの状態変更に関する通知を提供します。EventBridge は、 AWS リソースの変更を説明するシステムイベントのほぼリアルタイムのストリームを提供します。 は、ベストエフォートベースでこれらのイベントを EventBridge AWS IoT Greengrass に送信します。つまり、 はすべてのイベントを EventBridge に送信 AWS IoT Greengrass しようとしますが、まれにイベントが配信されない場合があります。さらに、特定のイベントの複数のコピーを送信する AWS IoT Greengrass 場合があります。つまり、イベントリスナーは、イベントが発生した順序でイベントを受信しない可能性があります。
注記
Amazon EventBridge は、アプリケーションを Greengrass Core デバイスやデプロイよびコンポーネント通知などのさまざまなソースのデータに接続するために使用できるイベントバスサービスです。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge とは」を参照してください。
トピック
デプロイステータスの変更イベント
AWS IoT Greengrass は、デプロイが FAILED
、、SUCCEEDED
、COMPLETED
、 の各状態になるとREJECTED
、 イベントを発行します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
、COMPLETED
、REJECTED
または CANCELED
のいずれかとしてデプロイが完了すると、イベントが開始されます。コアデバイスでのデプロイが失敗した場合、その理由を説明する詳細なレスポンスを受け取ります。デプロイエラーコードの詳細については、「詳細なデプロイエラーコード」を参照してください。
- デプロイの状態
-
-
FAILED
。デプロイに失敗しました。 -
SUCCEEDED
。モノのグループを対象としたデプロイが正常に完了しました。 -
COMPLETED
。モノを対象としたデプロイが正常に完了しました。 -
REJECTED
。デプロイが拒否されました。詳細については、statusDetails
フィールドを参照してください。 -
CANCELED
。デプロイはユーザーによってキャンセルされました。
-
イベントが重複したり、順序が順不同である可能性があります。イベントの順序を特定するには、time
プロパティを使用します。
errorStacks
および errorTypes
のエラーコードの完全なリストについては、「詳細なデプロイエラーコード」および「詳細なコンポーネントのステータスコード」を参照してください。
コンポーネントのステータス変更イベント
AWS IoT Greengrass バージョン 2.12.2 以前では、コンポーネントが ERRORED
および の状態になると、Greengrass はイベントを発行しますBROKEN
。Greengrass nucleus バージョン 2.12.3 以降では、コンポーネントが ERRORED
、BROKEN
、RUNNING
、および FINISHED
の状態になると、Greengrass はイベントを出力します。Greengrass はデプロイの完了時にもイベントを発行します。すべての状態遷移または指定した状態への移行に対して実行される EventBridge ルールを作成できます。インストールされたコンポーネントがルールを開始する状態になると、EventBridge はルールで定義されたターゲットアクションを呼び出します。これにより、通知を送信したり、イベント情報をキャプチャしたり、修正アクションを実行したり、状態の変更に応じて他のイベントを開始したりできます。
コンポーネントの状態変更のイベントでは、次の形式を使用します。
コンポーネントステータス: 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."
}
]
}
}
インストールされたコンポーネントのステータスを更新するルールやイベントを作成できます。イベントは、コンポーネントの状態がデバイス上で変更されたときに開始されます。コンポーネントにエラーや故障が発生した理由を説明する詳細なレスポンスを受け取ります。また、失敗の理由を示すステータスコードも表示されます。コンポーネントのステータスコードの詳細については、「詳細なコンポーネントのステータスコード」を参照してください。
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 EventBridge ユーザーガイド」の「Amazon EventBridge とは」および「Amazon EventBridge の開始方法」を参照してください。
デバイスヘルス通知を設定する (コンソール)
グループのデプロイ状態が変更されたときに Amazon SNS トピックを発行する EventBridge ルールを作成するには、次のステップを使用します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。詳細については、「Amazon EventBridge ユーザーガイド」の「 AWS リソースからイベントをトリガーする EventBridge ルールの作成」を参照してください。 EventBridge
-
Amazon EventBridge コンソール
を開きます。 -
ナビゲーションペインで [ルール] を選択します。
-
[ルールの作成] を選択します。
-
ルールの名前と説明を入力します。
ルールには同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。
-
[イベントバス] で、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、AWS のデフォルトのイベントバスを選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに送られます。
-
[ルールタイプ] で、[イベントパターンを持つルール] を選択してください。
-
[Next] (次へ) を選択します。
-
[Event source] (イベントソース) で、[AWS events] (イベント) を選択します。
-
[イベントパターン] で、[AWS のサービス] を選択します。
-
[AWS のサービス] で [Greengrass] を選択します。
-
[Event type] (イベントタイプ) で、次から選択します。
-
デプロイイベントについては、[Greengrass V2 Effective Deployment Status Change] (Greengrass V2 の有効なデプロイステータスの変更) を選択します。
-
コンポーネントイベントについては、[Greengrass V2 Installed Component Status Change] (Greengrass V2 のインストールされたコンポーネントのステータス変更) を選択します。
-
-
[Next (次へ)] を選択します。
-
[ターゲットタイプ] で、[AWS のサービス] を選択します。
-
[ターゲットの選択] で、ターゲットを設定します。この例では Amazon SNS トピックを使用していますが、通知を送信するターゲットタイプには他のトピックも設定できます。
-
[Target (ターゲット)] で [SNS topic (SNS トピック)] を選択します。
-
[トピック] で、ターゲットトピックを選択します。
-
[Next (次へ)] を選択します。
-
-
[Next (次へ)] を選択します。
-
ルールの詳細を確認し、ルールの作成 を選択します。
デバイスヘルス通知を設定する (CLI)
次のステップを使用して、Greengrass ステータス変更イベントが発生したときに Amazon SNS トピックを発行する EventBridge ルールを作成します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。
-
ルールを作成します。
-
デプロイステータス変更イベント用。
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\"]}"
パターンで省略されたプロパティは無視されます。
-
-
トピックをルールターゲットとして追加します。
-
topic-arn
を Amazon SNS トピックの ARN に置き換えます。
aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="
topic-arn
"注記
Amazon EventBridge にターゲットトピックの呼び出しを許可するには、トピックにリソースベースのポリシーを追加する必要があります。詳細については、Amazon EventBridge ユーザーガイドの「Amazon SNS のアクセス許可」を参照してください。
-
詳細については、「Amazon EventBridge ユーザーガイド」の「EventBridge のイベントとイベントパターン」を参照してください。
デバイスヘルス通知を設定する (AWS CloudFormation)
AWS CloudFormation テンプレートを使用して、Greengrass グループデプロイの状態変更に関する通知を送信する EventBridge ルールを作成します。詳細については、「AWS CloudFormation ユーザーガイド」の「Amazon EventBridge リソースタイプのリファレンス」を参照してください。
関連情報
-
「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge とは」