本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以使用 Basic Ingest,安全地將裝置資料傳送至 AWS 服務 支援的 AWS IoT 規則動作,而不會產生傳訊成本
基本擷取可從您的裝置或應用程式傳送訊息。訊息的前三個層級具有以 $aws/rules/
開頭的主題名稱,其中 rule_name
是您要叫用的 AWS IoT 規則的名稱。rule_name
您可將基本擷取字首 ($aws/rules/
) 新增至您用來叫用規則的訊息主題,即可搭配基本擷取使用現有的規則。例如,如果您有一個名為 rule_name
BuildingManager
規則會透過 Buildings/Building5/Floor2/Room201/Lights
("sql": "SELECT * FROM
'Buildings/#'"
) 之類的訊息主題叫用,則您可以透過傳送主題為 $aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights
的訊息,使用基本擷取叫用相同的規則。
注意
-
您的裝置和規則無法訂閱基本擷取預留主題。例如,指標 AWS IoT Device Defender
num-messages-received
不會發出,因為它不支援訂閱主題。如需詳細資訊,請參閱預留主題。 -
如果您需要發佈/訂閱代理程式將訊息分發給多個訂閱者 (例如,將訊息傳遞至其他裝置和規則引擎),您應該繼續使用 AWS IoT 訊息代理程式來處理訊息分發。不過,請確認使用基本擷取主題以外的主題來發佈您的訊息。
使用基本擷取
在使用基本擷取之前,請驗證您的裝置或應用程式是否正在使用對 $aws/rules/*
具有發佈許可的政策。或者,您可以在 政策$aws/rules/
中指定個別規則的許可。除此之外,您的裝置和應用程式可以繼續使用他們與 AWS IoT Core的現有連線。rule_name
/*
當訊息抵達規則引擎時,從基本擷取叫用的規則和透過訊息代理程式訂閱叫用的規則,在實作或錯誤處理上就沒有差別。
您可以建立用於基本擷取的規則。請謹記以下幾點:
-
基本擷取主題的初始字首 (
$aws/rules/
) 無法用於 topic(Decimal) 函數。rule_name
-
如果您定義了只能由基本擷取叫用的規則,
rule
定義中sql
欄位的FROM
子句則為選用。如果規則也需要由必須透過訊息代理程式傳送的其他訊息呼叫 (例如,因為那些其他訊息必須分配到多個訂閱者),則仍然會需要此項。如需詳細資訊,請參閱AWS IoT SQL 參考。 -
首三個層級的基本擷取主題 (
$aws/rules/
) 不會算在主題的 8 區段長度或 256 個總字元限制中。除此之外,適用其他相同限制,如 AWS IoT 限制所述。rule_name
-
如果收到具有指定非作用中規則或不存在規則的基本擷取主題的訊息,則會在 Amazon 日誌中建立錯誤 CloudWatch 日誌,以協助您進行偵錯。如需詳細資訊,請參閱Rules engine 日誌項目。系統會指出
RuleNotFound
指標,讓您可以為此指標建立警示。如需詳細資訊,請參閱 規則指標 中的規則指標。 -
您仍可使用 QoS 1 發佈基本擷取主題。訊息成功交付至規則引擎PUBACK後,您會收到 。接收 PUBACK並不表示您的規則動作已成功完成。您可以設定錯誤動作,以在動作執行時處理錯誤。如需詳細資訊,請參閱錯誤處理 (錯誤動作)。