Amazon CloudWatch Events を通じた遅延データ通知の取得 - AWS IoT Analytics

と同様の機能については AWS IoT Analytics、Amazon Kinesis 、Amazon S3、Amazon Athena をご覧ください。これらのサービスは、進化する分析要件を満たすためのスケーラビリティと柔軟性を高めます。ここでは、 https://aws-blogs-prod.amazon.com/iot/unlocking-scalable-iot-analytics-on-aws/について説明します。

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

Amazon CloudWatch Events を通じた遅延データ通知の取得

指定した時間枠のデータを使用してデータセットコンテンツを作成する場合、一部のデータが処理に間に合わない可能性があります。queryAction (SQL クエリ) を適用してデータセットを作成するときに QueryFilter に対して deltaTime オフセットを指定すれば遅延を許可できます。その後も、AWS IoT Analytics によりデルタ時間内に到着したデータは処理され、データセットコンテンツにはタイムラグがあります。遅延データ通知機能を使えば、データがデルタ時間後に到着した場合に AWS IoT Analytics では Amazon CloudWatch Events を通じて通知を送信できます。

AWS IoT Analytics コンソール、APIAWS Command Line Interface (AWS CLI)、または AWS SDK を使用して、データセット用に遅延データルールを指定することができます。

AWS IoT Analytics API では、LateDataRuleConfiguration オブジェクトはデータセットの遅延データルール設定を表します。このオブジェクトは、CreateDatasetUpdateDataset API オペレーションに関連する Dataset オブジェクトの一部です。

パラメータ

AWS IoT Analytics でデータセット用の遅延データルールを作成する場合は、次の情報を指定する必要があります。

ruleConfiguration (LateDataRuleConfiguration)

遅延データルールの設定情報を含む構造体。

deltaTimeSessionWindowConfiguration

デルタ時間セッションウィンドウの設定情報を含む構造体。

DeltaTime は時間間隔を指定します。DeltaTime を使用して、前回の実行以降にデータストアに到着したデータでデータセットコンテンツを作成できます。DeltaTime の例については、「デルタウィンドウを使用して SQL データセットを作成する (CLI)」を参照してください。

timeoutInMinutes

時間間隔。timeoutInMinutes を使用すれば、AWS IoT Analytics において、全開の実行以降に生成された遅延データ通知のバッチアップが可能です。AWS IoT Analytics では CloudWatch Events に対して一度に通知バッチが 1 つ送信されます。

型: 整数

有効な範囲: 1 ~ 60

ruleName

遅延データルールの名前。

型: 文字列

重要

lateDataRules を指定するには、データセットで DeltaTime フィルターを使用する必要があります。

遅延データルールの設定 (コンソール)

以下の手順は、AWS IoT Analytics コンソールでデータセットの遅延データルールを設定する方法を示しています。

遅延データルールの設定
  1. AWS IoT Analytics コンソールにサインインします。

  2. ナビゲーションペインで、[Data sets] (データセット) を選択します。

  3. [Data sets] (データセット) でターゲットのデータセットを選択します。

  4. ナビゲーションペインで、[Details] (詳細) を選択します。

  5. [Delta window] (デルタウィンドウ) セクションで [Edit] (編集) を選択します。

  6. [Configure data selection filter] (データ選択フィルターの設定) で以下を実行します。

    1. [Data selection window] (データ選択ウィンドウ) で [Delta time] (デルタ時間) を選択します。

    2. [Offset] (オフセット) で、期間を入力して単位を選択します。

    3. [Timestamp expression] (タイムスタンプ式) で式を入力します。これは、タイムスタンプフィールド名、または時間を取得できる SQL 式になります (from_unixtime(time) など)。

      タイムスタンプ式の記述方法の詳細については、Presto 0.172 ドキュメントの「日付と時刻の関数と演算子」を参照してください。

    4. [Late data notification] (遅延データ通知) で [Active] (アクティブ) を選択します。

    5. [Delta time] (デルタ時間) で、整数を入力します。有効な範囲は 1 ~ 60 です。

    6. [Save (保存)] を選択します。

    AWS IoT Analytics コンソールでデータ選択フィルターを設定します。

遅延データルールの設定 (CLI)

AWS IoT Analytics API では、LateDataRuleConfiguration オブジェクトはデータセットの遅延データルール設定を表します。このオブジェクトは、CreateDatasetUpdateDataset に関連する Dataset オブジェクトの一部です。APIAWS CLI、または AWS SDK を使用して、データセット用に遅延データルールを指定することができます。次の例では AWS CLI を使用しています。

指定した遅延データルールを使用してデータセットを作成するには、以下のコマンドを実行します。このコマンドでは、dataset.json ファイルが現在のディレクトリ内にあると想定します。

注記

UpdateDataset API を使用して既存のデータセットを更新できます。

aws iotanalytics create-dataset --cli-input-json file://dataset.json

dataset.json ファイルには次の内容が含まれます。

  • demo_dataset をターゲットのデータセット名に置換します。

  • demo_datastore をターゲットのデータセット名に置換します。

  • from_unixtime(time) をタイムスタンプフィールド名、または時間を取得できる SQL 式に置換します。

    タイムスタンプ式の記述方法の詳細については、Presto 0.172 ドキュメントの「日付と時刻の関数と演算子」を参照してください。

  • timeout を 1 ~ 60 の整数に置換します。

  • demo_rule を任意の名前に置換します。

{ "datasetName": "demo_dataset", "actions": [ { "actionName": "myDatasetAction", "queryAction": { "filters": [ { "deltaTime": { "offsetSeconds": -180, "timeExpression": "from_unixtime(time)" } } ], "sqlQuery": "SELECT * FROM demo_datastore" } } ], "retentionPeriod": { "unlimited": false, "numberOfDays": 90 }, "lateDataRules": [ { "ruleConfiguration": { "deltaTimeSessionWindowConfiguration": { "timeoutInMinutes": timeout } }, "ruleName": "demo_rule" } ] }

遅延データ通知を受信するためのサブスクライブ

CloudWatch Events で、AWS IoT Analytics から送信された遅延データ通知の処理方法を定義するルールを作成できます。CloudWatch Events により通知が受信されると、ルールで定義されている指定のターゲットアクションが呼び出されます。

CloudWatch Events ルール作成の前提条件

AWS IoT Analytics 用の CloudWatch Events ルールを作成する前に、以下を行う必要があります。

  • CloudWatch Events のイベント、ルール、およびターゲットをしっかりと理解しておきます。

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

    • Amazon Kinesis Streams

    • AWS Lambda 関数

    • Amazon Simple Notification Service (Amazon SNS) のトピック

    • Amazon Simple Queue Service (Amazon SQS) キュー

    CloudWatch Events ルールと関連ターゲットは、AWS リソースを作成した AWS IoT Analytics リージョン内になければなりません。詳細については、「AWS 全般のリファレンス」の「サービスエンドポイントとクォータ」を参照してください。

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

遅延データ通知イベント

遅延データ通知のイベントでは次の形式を使用します。

{ "version": "0", "id": "7f51dfa7-ffef-97a5-c625-abddbac5eadd", "detail-type": "IoT Analytics Dataset Lifecycle Notification", "source": "aws.iotanalytics", "account": "123456789012", "time": "2020-05-14T02:38:46Z", "region": "us-east-2", "resources": ["arn:aws:iotanalytics:us-east-2:123456789012:dataset/demo_dataset"], "detail": { "event-detail-version": "1.0", "dataset-name": "demo_dataset", "late-data-rule-name": "demo_rule", "version-ids": ["78244852-8737-4650-aa4d-3071a01338fa"], "message": null } }

CloudWatch Events ルールを作成して遅延データ通知を受信する

以下の手順は、AWS IoT Analytics 遅延データ通知を Amazon SQS キューに送信するルールを作成する方法を示しています。

CloudWatch Events ルールの作成方法
  1. Amazon CloudWatch コンソールにサインインします。

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

  3. [Rules] (ルール) ページで、[Create rule] (ルールの作成) を選択します。

  4. [Event Source] (イベントソース) で、[Event Pattern] (イベントパターン) を選択します。

  5. [Build event pattern to match events by service] (サービス別のイベントに一致するイベントパターンの構築) セクションで以下の作業を実行します。

    1. [Service Name] (サービス名) で [IoT Analytics] を選択します。

    2. [Event Type] (イベントタイプ) で、[IoT Analytics Dataset Lifecycle Notification] (IoT Analytics データセットライフサイクル通知) を選択します。

    3. [Specific dataset name(s)] (特定のデータセット名) を選択し、ターゲットデータセットの名前を入力します。

  6. [Targets] (ターゲット) で、[Add target*] (ターゲットの追加) を選択します。

  7. [SQS queue] (SQS キュー) を選択して、次の作業を行います。

    1. [Queue*] (キュー) でターゲットキューを選択します。

  8. [Configure details] (詳細の設定) を選択します。

  9. [Step 2: Configure rule details] (ステップ 2: ルールの詳細を設定する) ページで、名前と説明を入力します。

  10. [‬Create rule‭ (ルールの作成)] を選択します。