で AWS Lambda を使用するAWS IoT Events - AWS Lambda

で AWS Lambda を使用するAWS IoT Events

AWS IoT Eventsは、複数の IoT センサーやアプリケーションからの入力をモニタリングし、イベントパターンを認識します。次に、イベントが発生すると、適切なアクションを実行します。AWS IoT Events は、多くのソースから JSON ペイロードとして入力を受け取ります。AWS IoT Events は、単純なイベント (各入力がイベントをトリガー) と複雑なイベント (複数の入力が組み合わさってイベントをトリガー) をサポートしています。

AWS IoT Events を使用するには、ディテクタモデルを定義します。このモデルは、装置またはプロセスの状態マシンモデルです。状態に加えて、モデルの入力とイベントを定義します。また、イベントが発生したときに実行するアクションも定義します。AWS の別のサービス (Amazon Connect など) を呼び出す場合や、外部アプリケーション (エンタープライズリソースプランニング (ERP) アプリケーションなど) でアクションを実行する場合は、アクションで Lambda 関数を使用します。

イベントが発生すると、AWS IoT Events は Lambda 関数を非同期的に呼び出します。ディテクタモデルとアクションをトリガーしたイベントに関する情報が提供されます。次のメッセージイベントの例は、AWS IoT Events の簡単なステップバイステップの例の定義に基づいています。

例 AWS IoT Events メッセージイベント

{ "event: ":{ "eventName": "myChargedEvent", "eventTime": 1567797571647, "payload":{ "detector":{ "detectorModelName": "AWS_IoTEvents_Hello_World1567793458261", "detectorModelVersion": "4", "keyValue": "100009" }, "eventTriggerDetails":{ "triggerType": "Message", "inputName": "AWS_IoTEvents_HelloWorld_VoltageInput", "messageId": "64c75a34-068b-4a1d-ae58-c16215dc4efd" }, "actionExecutionId": "49f0f32f-1209-38a7-8a76-d6ca49dd0bc4", "state":{ "variables": {}, "stateName": "Charged", "timers": {} } } } }

Lambda 関数に渡されるイベントには、以下のフィールドが含まれています。

  • eventName - ディテクタモデルにおけるこのイベントの名前。

  • eventTime - イベントが発生した時刻。

  • detector - ディテクタモデルの名前とバージョン。

  • eventTriggerDetails - イベントをトリガーした入力の説明。

  • actionExecutionId - アクションの一意の実行識別子。

  • state - イベントが発生したときのディテクタモデルの状態。

    • stateName - ディテクタモデルの状態の名前。

    • timers - この状態に設定されているすべてのタイマー。

    • variables - この状態に設定されているすべての変数値。

Lambda 関数を呼び出すためのアクセス許可を AWS IoT Events サービスに付与する必要があります。add-permission コマンドを使用して、アクセス許可ステートメントを関数のリソースベースのポリシーに追加します。

aws lambda add-permission --function-name my-function \ --statement-id iot-events --action "lambda:InvokeFunction" --principal iotevents.amazonaws.com

次のような出力が表示されます。

{ "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iotevents.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\"}" }

AWS IoT Events における Lambda の使用の詳細については、他のサービスで AWS IoT Events を使用するを参照してください。