設定 AWS IoT Wireless 資源的記錄 - AWS IoT Wireless

設定 AWS IoT Wireless 資源的記錄

若要設定 AWS IoT Wireless 資源的記錄,您可以使用 API 或 CLI。當開始監控 AWS IoT Wireless 資源時,您可以使用預設組態。若要這樣做,您可以略過此主題,然後進入 使用 CloudWatch Logs 監控 AWS IoT Wireless 來監控您的記錄。

在開始監控記錄之後,您可以使用 CLI 將日誌層級變更為更詳細選項,例如提供 INFOERROR 資訊,並啟用更多資源的記錄。

AWS IoT Wireless 資源和日誌層級

在使用 API 或 CLI 之前,請使用下表了解不同的日誌層級,以及您可以設定其記錄的資源。此表格會顯示您在監控資源時於 CloudWatch 記錄中看到的參數。設定資源記錄的方式將決定您在主控台中看到的記錄。

如需範例 CloudWatch 日誌外觀的相關資訊,以及如何使用這些參數來記錄 AWS IoT Wireless 資源的實用資訊,請參閱 檢視 CloudWatch AWS IoT Wireless 日誌項目

日誌層級和資源
名稱 可能的值 描述
logLevel

INFOERRORDISABLED

  • ERROR:顯示任何導致操作失敗的錯誤。記錄僅包含 ERROR 資訊。

  • INFO:提供物件流的高層級資訊。記錄包含 INFOERROR 資訊。

  • DISABLED:停用所有記錄。

resource

WirelessGatewayWirelessDevice

資源的類型,可以是 WirelessGatewayWirelessDevice

wirelessGatewayType LoRaWAN 無線閘道的類型,當 resourceWirelessGateway 時,一律為 LoRaWAN。
wirelessDeviceType LoRaWANSidewalk 無線裝置的類型,當 resourceWirelessDevice 時,可以是 LoRaWANSidewalk
wirelessGatewayId - 無線閘道的識別符,當 resourceWirelessGateway 時。
wirelessDeviceId - 無線裝置的識別符,當 resourceWirelessDevice 時。
event JoinRejoinRegistrationUplink_dataDownlink_dataCUPS_RequestCertificate 記錄的事件類型,取決於您所記錄的資源是無線裝置還是無線閘道。如需詳細資訊,請參閱檢視 CloudWatch AWS IoT Wireless 日誌項目

AWS IoT Wireless 記錄 API

您可以使用下列 API 動作來設定資源的記錄。此表格也會顯示您必須為了使用 API 動作而建立的範例 IAM 政策。下節描述如何使用 API 來設定資源的日誌層級。

記錄 API 動作
API 名稱 描述 範例 IAM 政策

GetLogLevelsByResourceTypes

傳回目前的預設日誌層級,或依資源類型傳回日誌層級,其中可包含無線裝置或無線閘道的記錄選項。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:GetLogLevelsByResourceTypes" ], "Resource": [ "*" ] } ] }

GetResourceLogLevel

傳回特定資源識別符和資源類型的日誌層級覆寫。資源可以是無線裝置或無線閘道。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:GetResourceLogLevel" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a", ] } ] }

PutResourceLogLevel

設定特定資源識別符和資源類型的日誌層級覆寫。資源可以是無線閘道或無線裝置。

注意

此 API 每個帳戶的日誌層級覆寫限制為 200 個。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:PutResourceLogLevel" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a", ] } ] }

ResetAllResourceLogLevels

移除所有資源 (包括無線閘道和無線裝置) 的日誌層級覆寫。

注意

此 API 不會影響使用 UpdateLogLevelsByResourceTypes API 所設定的日誌層級。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:ResetAllResourceLogLevels" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/*", "arn:aws:iotwireless:us-east-1:123456789012:WirelessGateway/* ] } ] }

ResetResourceLogLevel

移除特定資源識別符和資源類型的日誌層級覆寫。資源可以是無線閘道或無線裝置。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:ResetResourceLogLevel" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a", ] } ] }

UpdateLogLevelsByResourceTypes

設定預設日誌層級或依資源類型設定日誌層級。您可以將此 API 用於無線裝置或無線閘道的記錄選項,並控制將在 CloudWatch 中顯示的記錄訊息。

注意

事件是選用的,而且事件類型繫結至資源類型。如需詳細資訊,請參閱事件和資源類型

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:UpdateLogLevelsByResourceTypes" ], "Resource": [ "*" ] } ] }

使用 CLI 設定資源的日誌層級

本節描述如何使用 API 或 AWS CLI 設定 AWS IoT Wireless 的日誌層級。

在使用 CLI 之前:
  • 確定您已針對要執行 CLI 命令的 API 建立 IAM 政策,如先前所述。

  • 您需要您想要使用的角色的 Amazon 資源名稱 (ARN)。如果您需要建立要用於記錄的角色,請參閱 建立 AWS IoT Wireless 的記錄角色和政策

為什麼要使用 AWS CLI

依預設,如果建立 IAM 角色 IoTWirelessLogsRole (如 建立 AWS IoT Wireless 的記錄角色和政策 所述),您會在 AWS Management Console 中看到預設日誌層級為 ERROR 的 CloudWatch 記錄。若要變更所有資源或特定資源的預設日誌層級,請使用 AWS IoT Wireless 記錄 API 或 CLI。

如何使用 AWS CLI

API 動作可以分類為下列類型,取決於您想要設定所有資源還是特定資源的日誌層級:

  • API 動作 GetLogLevelsByResourceTypesUpdateLogLevelsByResourceTypes 可以擷取並更新您帳戶中屬於特定類型 (例如無線閘道或 LoRaWAN 或 Sidewalk 裝置) 之所有資源的日誌層級。

  • API 動作 GetResourceLogLevelPutResourceLogLevelResetResourceLogLevel 可以擷取、更新和重設您使用資源識別符指定之個別資源的日誌層級。

  • 對於您已使用 PutResourceLogLevel API 為其指定日誌層級覆寫的所有資源,API 動作 ResetAllResourceLogLevels 可將其日誌層級覆寫重設為 null

使用 CLI 設定 AWS IoT 的資源特定記錄
注意

您也可以使用 API 中對應於此處顯示的 CLI 命令的方法,在 AWS API 中執行此程序。

  1. 依預設,所有資源的日誌層級都設定為 ERROR。若要為您帳戶中的所有資源設定預設日誌層級,或依資源類型設定日誌層級,請使用 update-log-levels-by-resource-types 命令。下列範例顯示如何建立 JSON 檔案 Input.json,並提供此檔案作為 CLI 命令的輸入。您可以使用此命令來選擇性地停用記錄,或覆寫特定類型的資源和事件的預設日誌層級。

    { "DefaultLogLevel": "INFO", "WirelessDeviceLogOptions": [ { "Type": "Sidewalk", "LogLevel": "INFO", "Events": [ { "Event": "Registration", "LogLevel": "DISABLED" } ] }, { "Type": "LoRaWAN", "LogLevel": "INFO", "Events": [ { "Event": "Join", "LogLevel": "DISABLED" }, { "Event": "Rejoin", "LogLevel": "ERROR" } ] } ] "WirelessGatewayLogOptions": [ { "Type": "LoRaWAN", "LogLevel": "INFO", "Events": [ { "Event": "CUPS_Request", "LogLevel": "DISABLED" }, { "Event": "Certificate", "LogLevel": "ERROR" } ] } ] }

    其中:

    WirelessDeviceLogOptions

    無線裝置的記錄選項清單。每個記錄選項都包含無線裝置類型 (Sidewalk 或 LoRaWAN),以及無線裝置事件記錄選項的清單。每個無線裝置事件記錄選項都可以選擇性地包含事件類型及其日誌層級。

    WirelessGatewayLogOptions

    無線閘道的記錄選項清單。每個記錄選項都包含無線閘道類型 (LoRaWAN),以及無線閘道事件記錄選項的清單。每個無線閘道事件記錄選項都可以選擇性地包含事件類型及其日誌層級。

    DefaultLogLevel

    用於所有資源的日誌層級。有效值為:ERRORINFODISABLED。預設值為 INFO

    LogLevel

    您要用於個別資源類型和事件的日誌層級。這些日誌層級會覆寫預設日誌層級,例如 LoRaWAN 閘道的日誌層級 INFO,以及兩種事件類型的日誌層級 DISABLEDERROR

    請執行下列命令來提供 Input.json 檔案,作為命令的輸入。此命令不會產生任何輸出。

    aws iotwireless update-log-levels-by-resource-types \ --cli-input-json Input.json

    如果您想要移除無線裝置和無線閘道的記錄選項,請執行下列命令。

    { "DefaultLogLevel":"DISABLED", "WirelessDeviceLogOptions": [], "WireslessGatewayLogOptions":[] }
  2. update-log-levels-by-resource-types 命令不會傳回任何輸出。使用 get-log-levels-by-resource-types 命令來擷取資源特定的記錄資訊。此命令會傳回預設日誌層級,以及無線裝置和無線閘道記錄選項。

    注意

    get-log-levels-by-resource-types 命令無法直接擷取 CloudWatch 主控台中的日誌層級。您可以使用 get-log-levels-by-resource-types 命令,來取得您已使用 update-log-levels-by-resource-types 命令,為資源指定的最新日誌層級資訊。

    aws iotwireless get-log-levels-by-resource-types

    當您執行下列命令時,它會傳回您已使用 update-log-levels-by-resource-types 指定的最新記錄資訊。例如,如果您移除無線裝置記錄選項,則執行 get-log-levels-by-resource-types 將傳回此值作為 null

    { "DefaultLogLevel": "INFO", "WirelessDeviceLogOptions": null, "WirelessGatewayLogOptions": [ { "Type": "LoRaWAN", "LogLevel": "INFO", "Events": [ { "Event": "CUPS_Request", "LogLevel": "DISABLED" }, { "Event": "Certificate", "LogLevel": "ERROR" } ] } ] }
  3. 若要控制個別無線閘道或無線裝置資源的日誌層級,請使用下列 CLI 指令:

    舉例來說,使用這些 CLI 的時機,假設您的帳戶中有大量正在記錄的無線裝置或閘道。如果只想要針對某些無線裝置進行疑難排解,您可以將 DefaultLogLevel 設定為 DISABLED 來停用所有無線裝置的記錄,然後使用 put-resource-log-level,只針對您帳戶中的那些裝置將 LogLevel 設定為 ERROR

    aws iotwireless put-resource-log-level \ --resource-identifier --resource-type WirelessDevice --log-level ERROR

    在此範例中,命令只會針對指定的無線裝置資源將日誌層級設定為 ERROR,而且所有其他資源的記錄都會停用。此命令不會產生任何輸出。若要擷取此資訊並驗證是否已設定日誌層級,請使用 get-resource-log-level 命令。

  4. 在上一個步驟中,您已偵錯問題並解決了錯誤,因此您可以執行 reset-resource-log-level 命令,將該資源的日誌層級重設為 null。如果您已使用 put-resource-log-level 命令來設定多個無線裝置或閘道資源的日誌層級覆寫 (例如疑難排解多個裝置的錯誤),則可以使用 reset-all-resource-log-levels 命令,將所有這些資源的日誌層級覆寫重設回 null

    aws iotwireless reset-all-resource-log-levels

    此命令不會產生任何輸出。若要擷取資源的記錄資訊,請執行 get-resource-log-level 命令。

後續步驟

您已了解如何建立記錄角色,以及使用 AWS IoT Wireless API 來設定 AWS IoT Core for LoRaWAN 資源的記錄。接下來,若要了解如何監控記錄項目,請移至 使用 CloudWatch Logs 監控 AWS IoT Wireless