📝

AWS IoT Events 初級ハンズオンで IoT Events を使えなくなっていたので移行ソリューションを試してみた

に公開

AWS IoT Events basic workshop (Japanese)
上記ハンズオンの中で IoT Events を使用する手順がありますが、本記事執筆時点ではマネジメントコンソールからアクセスできなくなっていました。

Migration procedure for detector models in AWS IoT Events - AWS IoT Events

End of support notice: On May 20, 2026, AWS end support for AWS IoT Events. After May 20, 2026, you will no longer be able to access the AWS IoT Events console or AWS IoT Events resources.

そのため、上記ドキュメントの移行ソリューションを試してみました。

ハンズオンの手順について

ハンズオンの手順 1 ~ 3 については手順通りに実行できましたのでハンズオン資料をご参照ください。

IoT Events の検知器モデルの作成について

ハンズオンの手順 4.1 で検知器モデルの作成手順がありますが、本記事執筆時点ではモデルの作成ボタンをクリックできなくなっていました。

移行ソリューションについて

Migration procedure for detector models in AWS IoT Events - AWS IoT Events
基本的にはドキュメントの手順通りに実行できましたが、修正箇所もあったので紹介します。

01. モデルのエクスポート

モデルを作成していないためスキップしました。

02. IAM ロールの作成

ドキュメント通りに作成しました。

03. Kinesis Data Streams の作成

ドキュメント通りに作成しました。

04. MQTT メッセージルーティングルールの作成

SQL 文については your-database を MQTT テストクライアントでサブスクライブした時のサブスクリプション名に変更しました。
test の部分はハンズオンで使用したモノの名前です。

SELECT * FROM 'data/test'

05. MQTT トピックのエンドポイントの取得

ハンズオンで確認したエンドポイントです。

06. DynamoDB テーブルの作成

ドキュメント通りに作成しました。
パーティションキーは your-instance-id にしました。

07. Lambda 関数の作成

ドキュメントのコードを使用しましたが、以下の点を変更しました。
変更魔の部分はコメントアウトしました。

  • 75 行目付近の instanceId をハードコーディング
const instanceId = parsedData.instanceId; // 変更前
const instanceId = "123"; // 変更後
  • 78 行目付近の temperature をハードコーディング
const temperature = inputData.temperature; // 変更前
const temperature = "111"; // 変更後
  • 109 行目付近の TableName の値を 06 の DynamoDB テーブル名に変更
TableName: 'EventsStateTable', // 変更前
TableName: 'your-database' // 変更後
  • 127 行目付近の TableName の値を 06 の DynamoDB テーブル名に変更
TableName: 'your-events-state-table-name', // 変更前
TableName: 'your-database' // 変更後
  • 129 行目付近の InstanceId キーを your-instance-id に変更
'InstanceId': { S: `${instanceId}` } // 変更前
'your-instance-id': { S: `${instanceId}` }, // 変更後
  • 158 行目付近の Arn を 03 の Kinesis Data Streams の ARN に変更
Arn: "arn:aws::kinesis:your-region:your-account-id:stream/your-kinesis-stream-name", // 変更前
Arn: "arn:aws:kinesis:ap-northeast-1:012345678901:stream/test" // 変更後
  • 159 行目付近の RoleArn を 02 の IAM ロール ARN に変更
RoleArn: "arn:aws::iam::your-account-id:role/service-role/your-iam-role", // 変更前
RoleArn: "arn:aws:iam::012345678901:role/test" // 変更後

08. Kinesis Data Streamsトリガーの追加

ドキュメント通りに作成しました。

09. テスト

ハンズオンの 2.3 のプログラムを実行しました。

python main.py --device_name {ご自分の作ったモノ名} --endpoint {AWS IoTのendpoint_url}

プログラム実行後、以下の点を確認できれば成功です。

  • Lambda のログが出力されている
  • Lambda のログにエラーがない
  • DynamoDB にアイテムが登録されている

まとめ

今回は AWS IoT Events 初級ハンズオンで IoT Events を使えなくなっていたので移行ソリューションを試してみました。
どなたかの参考になれば幸いです。

参考資料

Discussion