基本的な取り込みによるメッセージングコストの削減 - AWS IoT Core

基本的な取り込みによるメッセージングコストの削減

基本的な取り込みでは、AWS IoT ルールアクション でサポートされる AWS サービスにデバイスデータを安全に メッセージングコストを発生させることなく送信できます。基本的な取り込みでは、取り込みパスからパブリッシュ/サブスクライブのメッセージブローカーを除外することによってデータフローが最適化されるため、コスト効率が向上します。

基本的な取り込みを使用するには、最初の 3 つのレベルが $aws/rules/rule-name で始まるトピック名のデバイス、またはアプリケーションからメッセージを送信します。ここで、rule-name はトリガーする AWS IoT ルールの名前です。

基本的な取り込みのプレフィックス ($aws/rules/rule-name) を、通常ルールをトリガーするメッセージのトピックに追加するだけで、既存のルールを基本的な取り込みで使用することができます。たとえば、Buildings/Building5/Floor2/Room201/Lights ("sql": "SELECT * FROM 'Buildings/#'") などのトピックでメッセージによってトリガーされる BuildingManager というルールがある場合、トピック $aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights でメッセージを送信することで、基本的な取り込みで同じルールをトリガーできます。

次の点に注意してください。

  • デバイスとルールを基本的な取り込みの予約されたトピックにサブスクライブできません。詳細については、「」を参照してください予約済みトピック

  • パブリッシュ/サブスクライブブローカーで複数の受信対象にメッセージを配信することが必要な場合 (たとえば、他のデバイスとルールエンジンにメッセージを配信する場合)、AWS IoT メッセージブローカーを引き続き使用してメッセージ配信を処理する必要があります。基本的な取り込みトピック以外のトピックにメッセージを発行するだけです。

基本的な取り込みの使用

デバイスまたはアプリケーションが、$aws/rules/* に対する発行アクセス許可を持つポリシーを使用していることを確認してください。または、ポリシーに $aws/rules/rule-name/* で個別ルールに対するアクセス許可を指定できます。それ以外の場合は、デバイスとアプリケーションは AWS IoT Core に対して既存の接続を引き続き使用できます。

メッセージがルールエンジンに到達すると、基本的な取り込みからトリガーされたルールと、メッセージブローカーサブスクリプションを通じてトリガーされたルールによる実行またはエラー処理に違いはありません。

もちろん、基本的な取り込みで使用するためのルールは作成できます。以下に留意してください。

  • 基本的な取り込みトピックの最初のプレフィックス ($aws/rules/rule-name) は topic(10 進数) 関数には使用できません。

  • 基本的な取り込みでのみトリガーされるルールを定義する場合、FROM 句は rule 定義の sql フィールドのオプションです。これは、メッセージブローカーを使用してメッセージを送信する必要がある他のメッセージによりルールがトリガーされる場合でも (たとえば、他のメッセージが複数の受信対象に配信される必要があるため) 必要になります。詳細については、「」を参照してくださいAWS IoT SQL リファレンス

  • 基本的な取り込みトピックの最初の 3 つのレベル ($aws/rules/rule-name) はトピックの 8 つのセグメント長制限または 256 文字の文字数制限にカウントされません。それ以外の場合は、「AWS IoT の制限」で説明されているように、同じ制限が適用されます。

  • 無効なルールまたは存在しないルールを指定する基本的な取り込みトピックでメッセージが受信された場合は、エラーログは Amazon CloudWatch ログに作成され、デバッグに利用できます。詳細については、「」を参照してくださいルールエンジンのログエントリ RuleNotFound メトリクスが表示され、このメトリクスでアラームを作成できます。詳細については、「ルールのメトリクス」の「ルールメトリクス」を参照してください。

  • この場合でも、基本的な取り込みトピックに QoS 1 で発行できます。メッセージがルールエンジンに正常に配信された後、PUBACK を受信します。PUBACK の受信はルールのアクションが正常に完了したことを意味するわけではありません。エラーアクションを設定して、アクションの実行中にエラーを処理することができます。「」を参照してくださいエラー処理 (エラーアクション)