

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 監控 AWS IoT
<a name="monitoring_overview"></a>

監控是維護 和 AWS 解決方案的可靠性、可用性 AWS IoT 和效能的重要部分。

我們強烈建議您從 AWS 解決方案的所有部分收集監控資料，以便在發生多點故障時更輕鬆地偵錯。請在一開始先建立可回答下列問題的監視計劃。如果您不確定如何回答這些問題，您仍然可以繼續[啟用記錄](configure-logging.md)並建立效能基準。
+ 監控目標是什麼？
+ 監控哪些資源？
+ 監控這些資源的頻率為何？
+ 將使用哪些監控工具？
+ 誰將執行監控任務？
+ 發生問題時應該通知誰？

您的下一個步驟是[啟用記錄](configure-logging.md)，並在不同的負載條件下測量各種時間 AWS IoT 的效能，以建立環境中正常效能的基準。進行監控時 AWS IoT，請保留歷史監控資料，以便與目前的效能資料進行比較。這可協助您識別正常效能模式和效能異常情況，並策劃解決這些情況的方法。

若要建立 的基準效能 AWS IoT，您應該監控這些指標以開始。您可以隨時監控更多度量。
+  [`PublishIn.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`PublishOut.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Subscribe.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Ping.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Connect.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`GetThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`UpdateThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`DeleteThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`RulesExecuted`](metrics_dimensions.md#iot-metrics) 

本節中的主題可協助您開始記錄和監視 AWS IoT。

**Topics**
+ [設定 AWS IoT 記錄](configure-logging.md)
+ [使用 Amazon CloudWatch 監控 AWS IoT 警示和指標](monitoring-cloudwatch.md)
+ [AWS IoT 使用 CloudWatch Logs 進行監控](cloud-watch-logs.md)
+ [將裝置端日誌上傳到 Amazon CloudWatch](upload-device-logs-to-cloudwatch.md)
+ [使用 記錄 AWS IoT API 呼叫 AWS CloudTrail](iot-using-cloudtrail.md)

# 設定 AWS IoT 記錄
<a name="configure-logging"></a>

您必須使用 AWS IoT 主控台、CLI 或 API 啟用記錄，才能監控和記錄 AWS IoT 活動。您可以在 AWS IoT 三個層級設定 的記錄：帳戶層級、事件層級或資源特定層級。事件層級和資源特定的記錄僅適用於 V2 記錄。使用 V1 記錄的客戶必須執行 V2 遷移，才能存取這些功能。請參閱[詳細資訊](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#migration-v1-v2)。

考慮如何設定 AWS IoT 記錄時，帳戶層級記錄組態會決定記錄 AWS IoT 活動的方式，除非另有指定。從一開始，您可能想要取得預設日誌[層級為 INFO 或 DEBUG 的詳細日誌](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)。檢閱初始日誌之後，您可以將預設日誌層級變更為較不詳細的層級，例如帳戶或事件層級的 WARN 或 ERROR，並針對可能需要更多關注的資源設定更詳細的資源特定日誌層級。您可以隨時更改日誌層級。

本主題涵蓋雲端登入 AWS IoT。如需裝置端日誌和監控的相關資訊，請參閱[將裝置端日誌上傳至 CloudWatch](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html)。

如需記錄和監控的資訊 AWS IoT Greengrass，請參閱 [中的記錄和監控 AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/logging-and-monitoring.html)。

## 設定 V2 登入 AWS IoT
<a name="configuring-v2-logging"></a>

### 判斷您的記錄版本
<a name="determing-your-logging-version"></a>

如果未啟用 V2[GetV2LoggingOptions API](https://docs.aws.amazon.com/iot/latest/apireference/API_GetV2LoggingOptions.html) 會傳回 NotConfiguredException。當 V1 記錄正在使用，或未設定記錄時，就會發生此錯誤。

### 了解 V2 記錄功能
<a name="understanding-v2-logging-features"></a>

V2 記錄提供兩個關鍵功能：事件層級記錄和資源特定的記錄。事件層級記錄可透過可自訂的日誌層級和 CloudWatch 日誌群組目的地來啟用目標記錄組態。資源特定的記錄可讓您依物件群組、來源 IP、用戶端 ID 或主體 ID 篩選日誌。這些功能共同提供 IoT 操作的精細控制和全面可見性，透過消除不必要的記錄活動來改善日誌可搜尋性並降低成本。

### 從 V1 移轉至 V2
<a name="migration-v1-v2"></a>

您可以透過 AWS [CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html) 或 SDK，使用 SetV2LoggingOptions API 遷移至 V2 記錄。 SetV2LoggingOptions 遷移後， AWS IoT 會自動將所有日誌路由到 CloudWatch 日誌群組 'AWSIotLogsV2'。重要：如果您的下游應用程式或資源使用來自「AWSIotLogs」的資訊，請更新它們以使用對應的日誌群組路徑。

## 設定記錄角色和政策
<a name="configure-logging-role-and-policy"></a>

 在啟用登入之前 AWS IoT，您必須建立 IAM 角色和政策，以授予代表您將 AWS IoT 日誌活動寫入 CloudWatch 日誌群組的 AWS IoT 許可。您也可以使用[AWS IoT 主控台的日誌區段](https://console.aws.amazon.com/iot/home#/settings/logging)中所需的政策來產生 IAM 角色。

**注意**  
啟用 AWS IoT 記錄之前，請確定您了解 CloudWatch Logs 存取許可。具有 CloudWatch Logs 存取權限的使用者可從您的裝置查看除錯資訊。如需更多資訊，請參閱 [Amazon CloudWatch Logs 的驗證與存取控制](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html)。  
如果您 AWS IoT Core 預期 因為負載測試而有高流量模式，請考慮停用 IoT 記錄，以防止限流。若偵測到高流量，我們的服務可能會停用您的帳戶登入。

以下說明如何為 AWS IoT Core 資源建立記錄角色和政策。

### 建立記錄角色
<a name="create-logging-role"></a>

若要建立記錄角色，請開啟 [IAM 主控台的角色中樞](https://console.aws.amazon.com/iam/home#/roles)，然後選擇 **Create role** (建立角色)。

1. 在 **Select trusted entity** (選取信任的實體) 下，選取 **AWS service** (服務)。然後在 **Use case** (使用案例) 下選擇 **IoT**。如果未顯示 **IoT**，請從 Use cases for other AWS services: (其他 服務的使用案例：) 下拉式清單中輸入並搜尋 **IoT**。選取**下一步**。

1. 在 **Add permissions** (新增許可) 頁面上，您會看到自動連接到服務角色的政策。選擇**下一步**。

1. 在 **Name, review, and create** (命名、檢閱和建立) 頁面上，輸入角色的 **Role name** (角色名稱) 和 **Role description** (角色描述)，然後選擇 **Create role** (建立角色)。

### 記錄角色政策
<a name="logging-role-policy"></a>

下列政策文件提供了角色政策及信任政策，用以允許 AWS IoT 代表您提交日誌項目至 CloudWatch。如果您使用自訂 CloudWatch 日誌群組設定事件層級記錄，則必須更新角色政策以包含自訂資源 ARN。

如果您也允許 AWS IoT Core for LoRaWAN 提交日誌項目，您會看到為您建立的政策文件，可記錄這兩個活動。

**注意**  
這些文件是在您建立記錄角色時為您建立的。文件具有變數 * `${partition}`、 * * `${region}` *和 * `${accountId}` *，您必須將其取代為值。  
將分割區取代為區域的分割區。
將區域取代為您使用 AWS 的區域。請確定您使用與在裝置上設定 CLI AWS 相同的 AWS 區域。
將 account-id 取代為 AWS 您的帳戶 ID。

角色政策：

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy",
                "iot:GetLoggingOptions",
                "iot:SetLoggingOptions",
                "iot:SetV2LoggingOptions",
                "iot:GetV2LoggingOptions",
                "iot:SetV2LoggingLevel",
                "iot:ListV2LoggingLevels",
                "iot:DeleteV2LoggingLevel"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:AWSIotLogsV2:*"
            ]
        }
    ]
}
```

僅記錄 AWS IoT Core 活動的信任政策：

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

AWS IoT 由於 IAM 角色許可不足，記錄可能無法發佈記錄到 CloudWatch Logs。發生這種情況時，請檢查 [ CloudWatch 記錄指標](https://docs.aws.amazon.com/iot/latest/developerguide/metrics_dimensions.html#logging-metrics)以調查故障並進行疑難排解。

## 在 AWS IoT （主控台） 中設定記錄
<a name="configure-logging-console"></a>

本節說明如何使用 AWS IoT 主控台設定 AWS IoT 記錄。您可以設定帳戶層級、事件層級和資源特定的記錄。

**若要設定 AWS IoT 記錄：**

1. 登入 AWS IoT 主控台。如需詳細資訊，請參閱[開啟 AWS IoT 主控台](setting-up.md#iot-console-signin)。

1. 在左側導覽窗格中，選擇**日誌 **（先前是設定下的區段）。

1. 設定帳戶層級記錄：帳戶層級記錄會套用至所有 AWS IoT 機群 （裝置或端點），除非被事件層級或資源特定設定覆寫。

   1. 在帳戶層級記錄下，選取**管理帳戶層級記錄**以進行更新。

   1. 選取「啟用記錄」核取方塊，開始將日誌傳送至 CloudWatch。取消勾選「啟用記錄」時， AWS IoT 不會將任何日誌傳送至 CloudWatch 日誌群組，無論事件層級或資源層級記錄組態為何。

   1. 在 **IAM 日誌角色**下，從下拉式清單中選取現有角色。您可以**檢視角色詳細資訊**來檢查角色許可。或者，選取**建立新角色**以設定新的 IAM 角色。記錄角色提供允許 代表您 AWS IoT 將日誌項目提交至 CloudWatch 的政策。如果您使用自訂 CloudWatch 日誌群組設定事件層級記錄，則必須更新角色政策，以包含此日誌群組的 ARN。

   1. 選擇對應至您要顯示在 CloudWatch Logs 中日誌項目[詳細資訊層級](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)**的預設**日誌層級。注意：日誌層級「DEBUG」提供最詳細的資訊，但會增加 CloudWatch 成本。無法在帳戶層級設定 CloudWatch 日誌群組目的地。不過，您可以為個別事件類型指定自訂日誌群組，如下節所述。

   1. 選擇**更新記錄**以儲存您的變更。

1. 事件層級記錄可讓您選擇性地擷取相關事件的日誌，並將其導向至專用的 CloudWatch 日誌群組。這可讓您靈活地依使用案例組織日誌，以獲得更佳的可探索性、與不同的對象共用日誌，以及啟用日誌並根據事件重要性設定日誌層級，以降低 CloudWatch 成本。

   設定**事件層級記錄**：事件層級記錄會擷取特定 AWS IoT 事件，例如用戶端身分驗證嘗試。這些設定會覆寫帳戶層級記錄。

   1. 在**事件層級記錄**區段下，選取**管理事件層級記錄**以進行更新。

   1. 根據預設，事件類型會繼承帳戶層級的記錄組態。注意：設定資源特定的記錄時，它會覆寫帳戶和事件層級設定。

   1. 若要修改個別事件的設定，請按一下對應事件列中的值。您可以同時調整日誌層級和 CloudWatch 日誌群組目的地。指定自訂 CloudWatch 日誌群組目的地時，您必須驗證 IAM 角色政策是否包含新日誌群組的許可。未更新角色政策將 AWS IoT 阻止 將日誌寫入自訂日誌群組。進行選擇後，請按一下核取記號以確認您的選擇。**「已修改」**欄會顯示「是」，指出待定的變更。

   1. 按一下**更新記錄**以套用您的變更，或選擇**取消**以捨棄。

1. 設定資源特定覆寫：資源特定覆寫會將記錄設定套用至選取的資源。資源可以是物件群組、來源 IP、用戶端 ID 或主體 ID。資源特定的記錄組態會覆寫帳戶層級和事件層級設定。啟用時，它會在指定資源的已設定記錄層級產生所有事件類型的日誌。例如，您可以為特定物件設定偵錯層級記錄，同時保留所有其他物件的資訊層級記錄。

   1. 在**資源特定覆寫區段中選取新增**資源特定覆寫。

   1. 選擇日誌目標：物件群組、來源 IP、用戶端 ID 或主體 ID。

   1. 輸入所選目標類型的對應日誌目標值。

   1. 從資源特定日誌層級區段的下拉式功能表中選取所需的日誌層級。

   1. 按一下**提交**以新增覆寫，或按一下**取消**以捨棄變更。

   1. 若要修改現有的資源特定覆寫，請選取資源旁的核取方塊，然後按一下「移除」來刪除覆寫，或按一下「編輯」來修改。

啟用記錄之後，請造訪 [在 CloudWatch 主控台中檢視 AWS IoT 日誌](cloud-watch-logs.md#viewing-logs) 以進一步了解檢視記錄項目。

## 在 AWS IoT (CLI) 中設定帳戶和事件層級登入
<a name="global-logging-cli"></a>

本節說明如何使用 AWS IoT CLI 設定 的全域記錄。

您可以選擇性地設定事件層級記錄。事件層級記錄會在事件層級擷取記錄資訊，例如身分驗證和授權或憑證建立事件。您可以在事件層級自訂日誌層級和 CloudWatch 日誌群組目的地。相較於帳戶層級記錄，事件層級記錄在更目標層級運作，因此會覆寫帳戶層級記錄設定。這種階層式方法可讓您根據不同類型的事件的操作重要性和成本考量來維護不同的記錄策略。

**注意**  
您需要您想要使用的角色的 Amazon Resource Name (ARN)。如果您需要建立用於記錄的角色，請在繼續前參閱 [建立記錄角色](#create-logging-role)。為任何事件類型指定自訂 CloudWatch 日誌群組時，請確定您的記錄角色具有目標日誌群組的必要許可。  
 用於進行 API 呼叫的委託人必須擁有您記錄角色的 [傳遞角色許可](pass-role.md)。

您也可以使用 API 中對應至此處所示 CLI 命令的方法來使用 AWS API 執行此程序。

**使用 CLI 設定 的預設記錄 AWS IoT**

1. 請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html) 命令來設定您的帳戶的記錄選項。

   ```
   aws iot set-v2-logging-options \
       --event-configurations event-configuration-list \
       --role-arn logging-role-arn \
       --default-log-level log-level
   ```

   其中：  
**--role-arn**  
角色 ARN，授予在 CloudWatch Logs 中寫入日誌的 AWS IoT 許可。初始設定需要 Role-arn 組態。  
**--default-log-level**  
欲使用的[日誌層級](#log-level)。有效值為：`ERROR`、`WARN`、`DEBUG`、 `INFO`或 `DISABLED`。初始設定需要Default-log-level組態。  
**--no-disable-all-logs**  
啟用所有 AWS IoT 記錄的選用參數。使用此參數可在目前該參數停用時啟用記錄功能。  
 **--disable-all-logs**   
選用參數，可停用所有 AWS IoT 記錄。使用此參數可在該參數目前啟用時停用記錄功能。  
**--event-configurations**  
此參數是選用的，可讓您自訂個別事件類型的記錄設定：  
   + eventType：覆寫帳戶層級設定的事件類型
   + logLevel：使用 DEBUG、INFO、 ERROR、WARN 或 DISABLED 覆寫帳戶層級設定
   + logDestination：指定用於日誌交付的自訂 CloudWatch 日誌群組

   您可以為每個事件類型分別設定記錄層級和日誌目的地。如果未指定，事件會繼承帳戶層級設定

   ```
   aws iot set-v2-logging-options \
       --event-configurations "[{\"eventType\":\"Publish-In\",\"logLevel\":\"INFO\",\"logDestination\":\"examplePublishInLogGroup\"}]"
   ```

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-v2-logging-options.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-v2-logging-options.html) 命令取得目前的記錄選項。

   ```
   aws iot get-v2-logging-options \
       --verbose
   ```

   其中：  
**--verbose**  
選用參數，可讓您擷取所有 eventTypes 及其組態。

啟用記錄之後，請造訪 [在 CloudWatch 主控台中檢視 AWS IoT 日誌](cloud-watch-logs.md#viewing-logs) 以進一步了解檢視記錄項目。

**注意**  
AWS IoT 繼續支援較舊的命令 (**set-logging-options** 和 **get-logging-options**) 來設定和取得您帳戶的全域記錄。請注意，這些指令在使用時所產生的記錄包含純文字，而非 JSON 有效承載，且記錄延遲通常會更高。這些較舊指令的實施將不會進一步改進。我們建議您使用[「v2」版本](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#migration-v1-v2)來設定記錄選項，並盡可能變更使用舊版的舊版應用程式。

## 在 AWS IoT (CLI) 中設定資源特定覆寫
<a name="fine-logging-cli"></a>

本節說明如何 AWS IoT 使用 CLI 設定 的資源特定覆寫。資源特定覆寫可讓您為物件群組、用戶端 ID、來源 IP 或主體 ID 識別的特定資源指定記錄層級。啟用資源特定記錄時，它會覆寫帳戶層級和事件層級設定。所有事件類型都會在設定的日誌層級為指定的資源產生日誌，即使這些事件在事件層級組態中已停用。

物件群組可以包含其他物件群組來建立階層關係。此程序說明如何設定單一物件群組的記錄。您可以將此程序套用至階層中的父項物件群組，以設定階層中所有物件群組的記錄。您也可以將此過程應用於子事件組，以覆蓋其父項的記錄組態。

物件可以是物件群組的成員。此成員資格允許物件繼承套用至物件群組的組態、政策和設定。物件群組用於管理和套用設定到多個物件，而不是個別處理每個物件。當您的用戶端 ID 符合物件名稱時， AWS IoT Core 會自動將用戶端工作階段與對應的物件資源建立關聯。這可讓用戶端工作階段繼承套用至物件所屬物件群組的組態和設定，包括記錄層級。如果您的用戶端 ID 與物件名稱不相符，您可以啟用獨佔物件附件來建立關聯。如需詳細資訊，請參閱 [將 AWS IoT 物件與 MQTT 用戶端連線建立關聯](exclusive-thing.md)。

除物件群組之外，您還可以記錄目標，如裝置的用戶端 ID、來源 IP 和主體 ID。

**注意**  
您需要您想要使用的角色的 Amazon Resource Name (ARN)。如果您需要建立用於記錄的角色，請在繼續前參閱 [建立記錄角色](#create-logging-role)。  
用於進行 API 呼叫的委託人必須擁有您記錄角色的 [傳遞角色許可](pass-role.md)。

您也可以使用 API 中對應至此處所示 CLI 命令的方法來使用 AWS API 執行此程序。

**使用 CLI 設定 的資源特定覆寫 AWS IoT**

1. 使用下列命令設定資源特定記錄之前，請先啟用帳戶層級記錄：aws iot set-v2-logging-options 命令

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-level.html)命令來設定資源特定的覆寫。如需物件群組組態，請參閱下列範例：

   ```
   aws iot set-v2-logging-level \
                 --log-target targetType=THING_GROUP,targetName=thing_group_name \
                 --log-level log_level
   ```  
**--log-target**  
您設定欲記錄的資源類型與名稱。`targetType` 值必須是以下其中之一：`THING_GROUP` \$1 `CLIENT_ID` \$1 `SOURCE_IP` \$1 `PRINCIPAL_ID`。log-target 參數值可以是文字，如前面的命令範例所示，也可以是 JSON 字串，例如下列範例。  

   ```
   aws iot set-v2-logging-level \
                 --log-target '{"targetType": "THING_GROUP","targetName": "thing_group_name"}' \
                 --log-level log_level
   ```  
**--log-level**  
為指定資源產生日誌時所用的日誌層級。有效值為：**DEBUG**、**INFO**、**ERROR**、**WARN** 和 **DISABLED**。

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-v2-logging-levels.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-v2-logging-levels.html) 命令列出目前設定的日誌層級。

   ```
   aws iot list-v2-logging-levels
   ```

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/delete-v2-logging-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/delete-v2-logging-level.html) 命令可刪除特定資源的日誌層級，如下列範例所示：

   ```
   aws iot delete-v2-logging-level \
                 --target-type "THING_GROUP" \
                 --target-name "thing_group_name"
   ```

   ```
   aws iot delete-v2-logging-level \
                 --target-type=CLIENT_ID 
                 --target-name=ClientId1
   ```  
**--target-type**  
`target-type` 值必須是以下其中之一：`THING_GROUP` \$1 `CLIENT_ID` \$1 `SOURCE_IP` \$1 `PRINCIPAL_ID`。  
**--target-name**  
要移除日誌層級之物件群組的名稱。

## 日誌層級
<a name="log-level"></a>

這些日誌層級會決定記錄的事件，並套用至預設和資源特定的日誌層級。

ERROR  
導致操作失敗的錯誤。  
範例：由於憑證過期而無法驗證裝置。  
日誌內僅含 ERROR 資訊。

WARN  
會導致系統內出現不一致，但可能不會造成操作失敗的情況。  
範例：接近訊息速率限制。  
日誌內僅含 ERROR 和 WARN 資訊。

INFO  
物件流的高層級資訊。  
範例：用戶端已成功訂閱 MQTT 主題。  
日誌包含 INFO、ERROR、WARN 資訊。

DEBUG  
可能有助於偵錯問題的資訊。  
範例：IoT 規則引擎偵測到發佈至規則主題「規則/測試」的訊息，並成功開始執行。規則是使用 RepublishAction 設定。  
日誌包含 DEBUG、INFO、ERROR、WARN 資訊。

DISABLED  
已停用所有記錄功能。

# 使用 Amazon CloudWatch 監控 AWS IoT 警示和指標
<a name="monitoring-cloudwatch"></a>

您可以使用 AWS IoT CloudWatch 監控 ，該 CloudWatch 會收集原始資料並將其處理 AWS IoT 為可讀且近乎即時的指標。這些統計資料會保存兩週的期間，以便您存取歷史資訊，並更清楚 web 應用程式或服務的執行方式。依預設， AWS IoT 指標資料會以一分鐘的間隔自動傳送至 CloudWatch。如需詳細資訊，請參閱《Amazon CloudWatch 使用者指南》**中的[什麼是 Amazon CloudWatch、Amazon CloudWatch Events 及 Amazon CloudWatch Logs？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html)。

## 使用 AWS IoT 指標
<a name="how_to_use_metrics"></a>

報告的指標 AWS IoT 提供您可以以不同方式分析的資訊。以下使用案例是根據案例，您有十個項目，每天連接到網際網路。每個天：
+ 十個物件大約同時連接到 AWS IoT 。
+ 每個真的訂閱主題篩選，然後等待一小時才能中斷。在此期間，事與其他應用程式通訊和進一步了解世界各地的狀態。
+ 每個動作會根據其新發現有一些感知發佈資料 `UpdateThingShadow`。
+ 每個物件都會中斷連線 AWS IoT。

為了協助您開始使用，這些主題會探索可能遇到的一些問題。
+  [如何每天都在我的物件連線失敗時收到通知？](creating_alarms.md#how_to_detect_connection_failures) 
+  [如何每天都在我的物件並未推送資料時收到通知？](creating_alarms.md#how_to_detect_publish_failures) 
+  [如何每天都在我的物件的影子更新遭拒時收到通知？](creating_alarms.md#detect_rejected_updates) 
+  [如何為任務建立 CloudWatch 警示？](creating_alarms.md#cw-jobs-alarms) 

**Topics**
+ [使用 AWS IoT 指標](#how_to_use_metrics)
+ [建立 CloudWatch 警示以監控 AWS IoT](creating_alarms.md)
+ [AWS IoT 指標和維度](metrics_dimensions.md)

# 建立 CloudWatch 警示以監控 AWS IoT
<a name="creating_alarms"></a>

您可以建立 CloudWatch 警報，在警示變更狀態時傳送 Amazon SNS 訊息。警示會在您指定的期間，監看單一指標。當指標值在數個期間內超過指定的閾值時，會執行一或多個動作。此動作可為傳送至 Amazon SNS 主題或 Auto Scaling 政策的通知。警示僅會觸發持續狀態變更的動作。CloudWatch 警示不會只因處於特定狀態就觸發動作，狀態必須已遭變更且已維持了一段指定的時間。

**Topics**
+ [如何每天都在我的物件連線失敗時收到通知？](#how_to_detect_connection_failures)
+ [如何每天都在我的物件並未推送資料時收到通知？](#how_to_detect_publish_failures)
+ [如何每天都在我的物件的影子更新遭拒時收到通知？](#detect_rejected_updates)
+ [如何為任務建立 CloudWatch 警示？](#cw-jobs-alarms)

 您可以在 看到 CloudWatch [AWS IoT 指標和維度](metrics_dimensions.md) 警示可以監控的所有指標。

## 如何每天都在我的物件連線失敗時收到通知？
<a name="how_to_detect_connection_failures"></a>

1. 建立名為 `things-not-connecting-successfully` 的 Amazon SNS 主題，並記錄其 Amazon 資源名稱 (ARN)。此程序會將您主題的 ARN 稱為 ` sns-topic-arn `。

   如需如何建立 Amazon SNS 通知的詳細資訊，請參閱 [Amazon SNS 入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. 建立警示。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name ConnectSuccessAlarm \
       --alarm-description "Alarm when my Things don't connect successfully" \
       --namespace AWS/IoT \
       --metric-name Connect.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 測試警示。

   ```
   aws cloudwatch set-alarm-state --alarm-name ConnectSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name ConnectSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. 確認警示顯示於 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)中。

## 如何每天都在我的物件並未推送資料時收到通知？
<a name="how_to_detect_publish_failures"></a>

1. 建立名為 `things-not-publishing-data` 的 Amazon SNS 主題，並記錄其 Amazon 資源名稱 (ARN)。此程序會將您主題的 ARN 稱為 ` sns-topic-arn `。

   如需如何建立 Amazon SNS 通知的詳細資訊，請參閱 [Amazon SNS 入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. 建立警示。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name PublishInSuccessAlarm\
       --alarm-description "Alarm when my Things don't publish their data \
       --namespace AWS/IoT \
       --metric-name PublishIn.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 測試警示。

   ```
   aws cloudwatch set-alarm-state --alarm-name PublishInSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name PublishInSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. 確認警示顯示於 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)中。

## 如何每天都在我的物件的影子更新遭拒時收到通知？
<a name="detect_rejected_updates"></a>

1. 建立名為 `things-shadow-updates-rejected` 的 Amazon SNS 主題，並記錄其 Amazon 資源名稱 (ARN)。此程序會將您主題的 ARN 稱為 ` sns-topic-arn `。

   如需如何建立 Amazon SNS 通知的詳細資訊，請參閱 [Amazon SNS 入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. 建立警示。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name UpdateThingShadowSuccessAlarm \
       --alarm-description "Alarm when my Things Shadow updates are getting rejected" \
       --namespace AWS/IoT \
       --metric-name UpdateThingShadow.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --unit Count \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 測試警示。

   ```
   aws cloudwatch set-alarm-state --alarm-name UpdateThingShadowSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name UpdateThingShadowSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. 確認警示顯示於 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)中。

## 如何為任務建立 CloudWatch 警示？
<a name="cw-jobs-alarms"></a>

任務服務提供 CloudWatch 指標，以供您監控任務。您可以建立 CloudWatch 警示來監控任何 [任務指標](metrics_dimensions.md#jobs-metrics) 。

下列命令會建立 CloudWatch 警示，以監控任務 *SampleOTAJob* 的任務執行失敗次數總計，並會在超過 20 個任務執行失敗時，通知您。警示每 300 秒會檢查報告的值，以監控任務指標 `FailedJobExecutionTotalCount`。當單一報告值大於 20 時，便會啟動警示，表示自任務啟動以來，失敗的任務執行次數超過 20 次。當警示關閉時，會傳送通知給所提供的 Amazon SNS 主題。

```
aws cloudwatch put-metric-alarm \
    --alarm-name TotalFailedJobExecution-SampleOTAJob \
    --alarm-description "Alarm when total number of failed job execution exceeds the threshold for SampleOTAJob" \
    --namespace AWS/IoT \
    --metric-name FailedJobExecutionTotalCount \
    --dimensions Name=JobId,Value=SampleOTAJob \
    --statistic Sum \
    --threshold 20 \
    --comparison-operator GreaterThanThreshold \
    --period 300 \
    --unit Count \
    --evaluation-periods 1 \
    --alarm-actions arn:aws:sns:<AWS_REGION>:<AWS_ACCOUNT_ID>:SampleOTAJob-has-too-many-failed-job-ececutions
```

下列命令會建立 CloudWatch 警示，以監控在指定期間內任務 *SampleOTAJob* 失敗的任務執行次數。然後，當在此期間有超過五個任務執行失敗時，會通知您。警示每 3600 秒會檢查報告的值，以監控任務指標 `FailedJobExecutionCount`。當單一報告值大於 5 時，便會啟動警示，表示在過去一小時內，失敗的任務執行次數超過 5 次。當警示關閉時，會傳送通知給所提供的 Amazon SNS 主題。

```
aws cloudwatch put-metric-alarm \
    --alarm-name FailedJobExecution-SampleOTAJob \
    --alarm-description "Alarm when number of failed job execution per hour exceeds the threshold for SampleOTAJob" \
    --namespace AWS/IoT \
    --metric-name FailedJobExecutionCount \
    --dimensions Name=JobId,Value=SampleOTAJob \
    --statistic Sum \
    --threshold 5 \
    --comparison-operator GreaterThanThreshold \
    --period 3600 \
    --unit Count \
    --evaluation-periods 1 \
    --alarm-actions arn:aws:sns:<AWS_REGION>:<AWS_ACCOUNT_ID>:SampleOTAJob-has-too-many-failed-job-ececutions-per-hour
```

# AWS IoT 指標和維度
<a name="metrics_dimensions"></a>

當您與 互動時 AWS IoT，服務每分鐘都會將指標和維度傳送至 CloudWatch。您可以使用 AWS IoT、使用 CloudWatch 主控台或 AWS CLI 來檢視這些指標。

若要使用 CloudWatch 主控台檢視指標，請開啟 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)。在導覽窗格中，選擇 **Metrics** (指標)，然後選擇 **All metrics** (所有指標)。在**瀏覽**索引標籤中，搜尋 AWS IoT 以檢視指標清單。指標會先依服務命名空間分組，再依各命名空間內不同的維度組合分類。

若要使用 檢視指標 AWS CLI，請執行下列命令。

```
1. aws cloudwatch list-metrics --namespace "AWS/IoT"
```

**Topics**
+ [AWS IoT 指標](#iot-metrics)
+ [AWS IoT Core 登入資料提供者指標](#credential-provider-metrics)
+ [身分驗證指標](#authentication-metrics)
+ [伺服器憑證 OCSP 堆疊指標](#server-ocsp-metrics)
+ [規則指標](#rulemetrics)
+ [規則動作指標](#rule-action-metrics)
+ [HTTP 動作特定指標](#http-action-metrics)
+ [訊息代理程式指標](#message-broker-metrics)
+ [Device Shadow 指標](#shadow-metrics)
+ [記錄指標](#logging-metrics)
+ [任務指標](#jobs-metrics)
+ [Device Defender Audit 指標](#device-defender-audit-metrics)
+ [Device Defender Detect 指標](#device-defender-detect-metrics)
+ [裝置佈建指標](#provisioning-metrics)
+ [LoRaWAN 指標](#lorawan-metrics)
+ [機群索引指標](#fleet-indexing-metrics)
+ [指標的維度](#aws-iot-metricdimensions)

## AWS IoT 指標
<a name="iot-metrics"></a>


| 指標 | Description | 
| --- | --- | 
|   `AddThingToDynamicThingGroupsFailed`   |  與將物件新增至動態物件群組相關聯的失敗物件數量。此 `DynamicThingGroupName` 維度包含無法新增項目的動態群組名稱。  | 
|   `NumLogBatchesFailedToPublishThrottled`   |  因調節錯誤而無法發佈的單批日誌事件。  | 
|   `NumLogEventsFailedToPublishThrottled`   |  批次中因調節錯誤而無法發佈的日誌事件數。  | 

## AWS IoT Core 登入資料提供者指標
<a name="credential-provider-metrics"></a>


| 指標 | Description | 
| --- | --- | 
|   `CredentialExchangeSuccess`   |  對 AWS IoT Core 憑證提供者提出成功的 `AssumeRoleWithCertificate` 請求數。  | 

## 身分驗證指標
<a name="authentication-metrics"></a>

**注意**  
身分驗證指標會顯示在 CloudWatch 主控台的**通訊協定指標**下。


| 指標 | Description | 
| --- | --- | 
|   `Connection.AuthNError`   | 由於身分驗證失敗而 AWS IoT Core 拒絕的連線嘗試次數。此指標只會考慮傳送符合 端點之伺服器名稱指示 (SNI) 字串的連線 AWS 帳戶。此指標包括來自外部來源的連線嘗試，例如網際網路掃描工具或探測活動。Protocol 維度包含用於傳送連線嘗試的通訊協定。 | 

## 伺服器憑證 OCSP 堆疊指標
<a name="server-ocsp-metrics"></a>


| 指標 | Description | 
| --- | --- | 
| RetrieveOCSPStapleData.Success | OCSP 回應已成功接收和處理。此回應將包含在已設定網域的 TLS 交握期間。DomainConfigurationName 維度包含已啟用伺服器憑證 OCSP 堆疊的已設定網域名稱。 | 

## 規則指標
<a name="rulemetrics"></a>


| 指標 | Description | 
| --- | --- | 
|   `ParseError`   |  JSON 剖析錯誤數目，發生於對規則所接聽主題發佈的訊息中。`RuleName` 維度會包含規則的名稱。  | 
|   `RuleExecutionThrottled`   |  由於惡意行為或訊息數量超過規則引擎調節限制，而被規則引擎調節的訊息數量。`RuleName` 維度包含欲觸發規則的名稱。  | 
|   `RuleNotFound`   |  找不到欲觸發的規則。`RuleName` 維度會包含規則的名稱。  | 
|   `RulesExecuted`   |  執行的 AWS IoT 規則數目。  | 
|   `TopicMatch`   |  對規則所接聽主題發佈的傳入訊息數目。`RuleName` 維度會包含規則的名稱。  | 

## 規則動作指標
<a name="rule-action-metrics"></a>


| 指標 | Description | 
| --- | --- | 
|   `Failure`   |  失敗規則動作呼叫次數。`RuleName` 維度包含可指定動作之規則的名稱。`ActionType` 維度包含已呼叫動作的類型。  | 
|   `Success`   |  成功規則動作呼叫次數。`RuleName` 維度包含可指定動作之規則的名稱。`ActionType` 維度包含已呼叫動作的類型。  | 
|  ErrorActionFailure  | 失敗的錯誤動作數量。RuleName 維度包含可指定動作之規則的名稱。ActionType 維度包含已呼叫動作的類型。 | 
|  ErrorActionSuccess  | 成功的錯誤動作數量。RuleName 維度包含可指定動作之規則的名稱。ActionType 維度包含已呼叫動作的類型。 | 

## HTTP 動作特定指標
<a name="http-action-metrics"></a>


| 指標 | 描述 | 
| --- | --- | 
|   `HttpCode_Other`   |  如果來自下游 Web 服務/應用程式的回應狀態碼不是 2xx、4xx 或 5xx，則會產生此指標。  | 
|   `HttpCode_4XX`   |  如果來自下游 Web 服務/應用程式的回應狀態碼介於 400 到 499 之間，則會產生此指標。  | 
|   `HttpCode_5XX`   |  如果來自下游 Web 服務/應用程式的回應狀態碼介於 500 到 599 之間，則會產生此指標。  | 
|   `HttpInvalidUrl`   |  在取代替換範本之後，如果端點 URL 未以 `https://` 開頭，則會產生此指標。  | 
|   `HttpRequestTimeout`   |  如果下游 Web 服務/應用程式未在請求逾時限制內傳回回應，則會產生此指標。如需詳細資訊，請參閱 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#limits_iot)。  | 
|   `HttpUnknownHost`   |  如果 URL 有效，但服務不存在或無法連線，則會產生此指標。  | 

## 訊息代理程式指標
<a name="message-broker-metrics"></a>

**注意**  
訊息代理程式指標會顯示於 CloudWatch 主控台的 **Protocol Metrics** (通訊協定指標) 之下。


| 指標 | Description | 
| --- | --- | 
|   `Connect.AuthError`   |  訊息代理程式無法授權的連線要求數目。`Protocol` 維度包含用來傳送 `CONNECT` 訊息的協定。  | 
|   `Connect.ClientError`   |  由於 MQTT 訊息不符合 [AWS IoT 配額](limits-iot.md) 中定義的需求，連線請求已拒絕的數量。`Protocol` 維度包含用來傳送 `CONNECT` 訊息的協定。  | 
|   `Connect.ClientIDThrottle`   |  由於用戶端超過特定用戶端 ID 所允許之連線要求率而調節的連線要求數目。`Protocol` 維度包含用來傳送 `CONNECT` 訊息的協定。  | 
|   `Connect.ServerError`   |  因發生內部錯誤而失敗的連線要求數目。`Protocol` 維度包含用來傳送 `CONNECT` 訊息的協定。  | 
|   `Connect.Success`   |  訊息代理程式成功的連線次數。`Protocol` 維度包含用來傳送 `CONNECT` 訊息的協定。  | 
|   `Connect.Throttle`   |  因帳戶超過允許連線要求率而調節的連線要求數目。`Protocol` 維度包含用來傳送 `CONNECT` 訊息的協定。  | 
|   `Ping.Success`   |  訊息代理程式收到的 ping 訊息數目。`Protocol` 維度包含用來傳送 ping 訊息的協定。  | 
|   `PublishIn.AuthError`   |  訊息代理程式無法授權的發佈要求數目。`Protocol` 維度包含用來發佈訊息的協定。HTTP 發佈不支援此指標。  | 
|   `PublishIn.ClientError`   |  訊息中介裝置拒絕的發佈請求數量，因為訊息不符合 [AWS IoT 配額](limits-iot.md) 中定義的要求。`Protocol` 維度包含用來發佈訊息的協定。  | 
|   `PublishIn.ServerError`   |  訊息代理程式因發生內部錯誤而無法處理的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `PublishIn.Success`   |  訊息代理程式成功處理的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `PublishIn.Throttle`   |  因用戶端超過允許傳入訊息率而調節的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。HTTP 發佈不支援此指標。  | 
|   `PublishOut.AuthError`   |   AWS IoT無法授權之訊息代理程式所提出的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `PublishOut.ClientError`   |  訊息中介裝置提出的發佈請求數量遭到拒絕，因為訊息不符合 [AWS IoT 配額](limits-iot.md) 中定義的要求。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `PublishOut.Success`   |  訊息代理程式成功發出的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|  PublishOut.Throttle  |  因用戶端超過所允許之傳出訊息率而調節的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `PublishRetained.AuthError`   |  訊息代理程式無法授權帶 `RETAIN` 旗標集的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|  PublishRetained.ServerError  |  訊息代理程式因發生內部錯誤而無法處理的保留發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `PublishRetained.Success`   |  訊息代理程式成功處理帶 `RETAIN` 旗標集的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `PublishRetained.Throttle`   |  因用戶端超過允許傳入訊息率而調節的帶 `RETAIN` 旗標集的發佈要求數目。`Protocol` 維度包含用來傳送 `PUBLISH` 訊息的協定。  | 
|   `Queued.Success`   |  訊息代理程式與其中斷持久性工作階段連線的用戶端成功處理的儲存訊息數目。具有持久性工作階段的用戶端中斷連線時，會儲存 QoS 為 1 的訊息。  | 
|   `Queued.Throttle`   |  具有持久性工作階段的用戶端中斷連線時，無法儲存和限流的訊息數目。當用戶端超過[每個帳戶每秒的佇列訊息數](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#genref_queued_messages_per_second_per_account)限制時，就會發生這種情況。具有持久性工作階段的用戶端中斷連線時，會儲存 QoS 為 1 的訊息。  | 
|   `Queued.ServerError`   |  因為內部錯誤而未針對持久性工作階段儲存的訊息數目。當具有持久性工作階段的用戶端中斷連線時，會儲存服務品質 (QoS) 為 1 的訊息。  | 
|   `Subscribe.AuthError`   |  由用戶端提出且無法授權的訂閱要求數目。`Protocol` 維度包含用來傳送 `SUBSCRIBE` 訊息的協定。  | 
|   `Subscribe.ClientError`   |  由於`SUBSCRIBE`訊息不符合 [AWS IoT 配額](limits-iot.md) 中定義的需求而拒絕的訂閱請求數量。`Protocol` 維度包含用來傳送 `SUBSCRIBE` 訊息的協定。  | 
|   `Subscribe.ServerError`   |  因發生內部錯誤而拒絕的訂閱要求數目。`Protocol` 維度包含用來傳送 `SUBSCRIBE` 訊息的協定。  | 
|   `Subscribe.Success`   |  訊息代理程式成功處理的訂閱要求數目。`Protocol` 維度包含用來傳送 `SUBSCRIBE` 訊息的協定。  | 
|   `Subscribe.Throttle`   |  由於您的 超過允許的訂閱請求率限制而調節的訂閱請求數量 AWS 帳戶。這些限制包括每個帳戶的每秒訂閱數、每個帳戶的訂閱數，以及[AWS IoT Core 訊息中介裝置和通訊協定限制和配額](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#message-broker-limits)中所述的每個連線訂閱數。`Protocol` 維度包含用來傳送 `SUBSCRIBE` 訊息的協定。  | 
|  Throttle.Exceeded  | 當 MQTT 用戶端在[每個連線層級限制上每秒](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#message-broker-limits)封包受到調節時，此指標會顯示在 CloudWatch 中。此指標不適用於 HTTP 連線。 | 
|   `Unsubscribe.ClientError`   |  由於`UNSUBSCRIBE`訊息不符合 [AWS IoT 配額](limits-iot.md) 中定義的要求而拒絕的取消訂閱請求數量。`Protocol` 維度包含用來傳送 `UNSUBSCRIBE` 訊息的協定。  | 
|   `Unsubscribe.ServerError`   |  因發生內部錯誤而拒絕的取消訂閱要求數目。`Protocol` 維度包含用來傳送 `UNSUBSCRIBE` 訊息的協定。  | 
|   `Unsubscribe.Success`   |  訊息代理程式成功處理的取消訂閱要求數目。`Protocol` 維度包含用來傳送 `UNSUBSCRIBE` 訊息的協定。  | 
|   `Unsubscribe.Throttle`   |  因用戶端超過允許取消訂閱要求率而拒絕的取消訂閱要求數目。`Protocol` 維度包含用來傳送 `UNSUBSCRIBE` 訊息的協定。  | 

## Device Shadow 指標
<a name="shadow-metrics"></a>

**注意**  
裝置影子指標會顯示在 CloudWatch 主控台的 **Protocol Metrics** (通訊協定指標) 之下。


| 指標 | Description | 
| --- | --- | 
|   `DeleteThingShadow.Accepted`   |  成功處理的 `DeleteThingShadow` 要求數目。`Protocol` 維度包含用來提出要求的協定。  | 
|   `GetThingShadow.Accepted`   |  成功處理的 `GetThingShadow` 要求數目。`Protocol` 維度包含用來提出要求的協定。  | 
|   `ListThingShadow.Accepted`   |  成功處理的 `ListThingShadow` 要求數目。`Protocol` 維度包含用來提出要求的協定。  | 
|   `UpdateThingShadow.Accepted`   |  成功處理的 `UpdateThingShadow` 要求數目。`Protocol` 維度包含用來提出要求的協定。  | 

## 記錄指標
<a name="logging-metrics"></a>


| 指標 | Description | 
| --- | --- | 
|  `CloudwatchLogs:LogGroupCreationFailed`  |  `CreateLogGroup` 請求失敗的數量。如果不存在，AWS IoT Logging 會建立 CloudWatch 日誌群組。`LogGroup` 維度包含用於提出請求的日誌群組。  | 
|  `CloudwatchLogs:LogStreamCreationFailed`  |  `CreateLogStream` 請求失敗的數量。AWS IoT Logging 會建立 CloudWatch 日誌串流來推送日誌事件。`LogGroup` 維度包含用於提出請求的日誌群組。  | 
|  `CloudwatchLogs:PutRetentionPolicyFailed`  |  `PutRetentionPolicy` 請求失敗的數量。如果不存在，AWS IoT Logging 會建立 CloudWatch 日誌群組，並將保留政策設定為 30 天。`LogGroup` 維度包含用於提出請求的日誌群組。  | 
|  `CloudwatchLogs:PutLogEventsFailed`  |  `PutLogEvents` 請求失敗的數量。`LogGroup` 維度包含用於提出請求的 CloudWatch 日誌群組。  | 

## 任務指標
<a name="jobs-metrics"></a>


| 指標 | Description | 
| --- | --- | 
|  `CanceledJobExecutionCount`  |  其狀態已在 CloudWatch 決定的期間內變更為 `CANCELED` 之任務執行的數量。(如需有關 CloudWatch 指標的詳細資訊，請參閱 [Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。) `JobId` 維度包含任務的 ID。  | 
|   `CanceledJobExecutionTotalCount`   |  針對指定任務，狀態為 `CANCELED` 的任務執行總數。`JobId` 維度包含任務的 ID。  | 
|   `ClientErrorCount`   |  執行任務時產生的用戶端錯誤數目。`JobId` 維度包含任務的 ID。  | 
|   `FailedJobExecutionCount`   |  其狀態已在 CloudWatch 決定的期間內變更為 `FAILED` 之任務執行的數量。(如需有關 CloudWatch 指標的詳細資訊，請參閱 [Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。) `JobId` 維度包含任務的 ID。  | 
|   `FailedJobExecutionTotalCount`   |  針對指定任務，狀態為 `FAILED` 的任務執行總數。`JobId` 維度包含任務的 ID。  | 
|   `InProgressJobExecutionCount`   |  其狀態已在 CloudWatch 決定的期間內變更為 `IN_PROGRESS` 之任務執行的數量。(如需有關 CloudWatch 指標的詳細資訊，請參閱 [Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。) `JobId` 維度包含任務的 ID。  | 
|   `InProgressJobExecutionTotalCount`   |  針對指定任務，狀態為 `IN_PROGRESS` 的任務執行總數。`JobId` 維度包含任務的 ID。  | 
|   `RejectedJobExecutionTotalCount`   |  針對指定任務，狀態為 `REJECTED` 的任務執行總數。`JobId` 維度包含任務的 ID。  | 
|   `RemovedJobExecutionTotalCount`   |  針對指定任務，狀態為 `REMOVED` 的任務執行總數。`JobId` 維度包含任務的 ID。  | 
|   `QueuedJobExecutionCount`   |  其狀態已在 CloudWatch 決定的期間內變更為 `QUEUED` 之任務執行的數量。(如需有關 CloudWatch 指標的詳細資訊，請參閱 [Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。) `JobId` 維度包含任務的 ID。  | 
|   `QueuedJobExecutionTotalCount`   |  針對指定任務，狀態為 `QUEUED` 的任務執行總數。`JobId` 維度包含任務的 ID。  | 
|   `RejectedJobExecutionCount`   |  其狀態已在 CloudWatch 決定的期間內變更為 `REJECTED` 之任務執行的數量。(如需有關 CloudWatch 指標的詳細資訊，請參閱 [Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。) `JobId` 維度包含任務的 ID。  | 
|   `RemovedJobExecutionCount`   |  其狀態已在 CloudWatch 決定的期間內變更為 `REMOVED` 之任務執行的數量。(如需有關 CloudWatch 指標的詳細資訊，請參閱 [Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。) `JobId` 維度包含任務的 ID。  | 
|   `ServerErrorCount`   |  執行任務時產生的伺服器錯誤數目。`JobId` 維度包含任務的 ID。  | 
|   `SuccededJobExecutionCount`   |  其狀態已在 CloudWatch 決定的期間內變更為 `SUCCESS` 之任務執行的數量。(如需有關 CloudWatch 指標的詳細資訊，請參閱 [Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。) `JobId` 維度包含任務的 ID。  | 
|   `SuccededJobExecutionTotalCount`   |  針對指定任務，狀態為 `SUCCESS` 的任務執行總數。`JobId` 維度包含任務的 ID。  | 

## Device Defender Audit 指標
<a name="device-defender-audit-metrics"></a>


| 指標 | Description | 
| --- | --- | 
|   `NonCompliantResources`   |  在檢查中發現不相容的資源數量。在每次稽核執行的檢查時，系統都會回報不合規的資源數量。  | 
|   `ResourcesEvaluated`   |  評估符合的資源數目。系統會為每次執行的稽核檢查報告評估的資源數量。  | 
|   `MisconfiguredDeviceDefenderNotification`   |  當您的 SNS AWS IoT Device Defender 組態設定錯誤時， 會通知您。  [Dimensions (尺寸)](#aws-iot-metricdimensions)   | 

## Device Defender Detect 指標
<a name="device-defender-detect-metrics"></a>


| 指標 | Description | 
| --- | --- | 
|   `NumOfMetricsExported`    |  針對雲端、裝置端或自訂指標匯出的指標數量。系統會針對特定指標報告為帳戶匯出的指標數量。此指標僅適用於使用指標匯出的客戶。  | 
|   `NumOfMetricsSkipped`   |  針對雲端、裝置端或自訂指標略過的指標數量。由於提供給 Device Defender Detect 發佈至 mqtt 主題的許可不足，系統針對特定指標報告為帳戶略過的指標數量。此指標僅適用於使用指標匯出的客戶。  | 
|   `NumOfMetricsExceedingSizeLimit`   |  由於大小超過 MQTT 訊息大小限制，略過匯出雲端、裝置端或自訂指標的指標數量。系統會報告因為大小超過 MQTT 訊息大小限制，而針對特定指標略過匯出的指標數量。此指標僅適用於使用指標匯出的客戶。  | 
|   `Violations`   |  自從上次執行評估起，發現新違反安全性描述檔行為的數目。系統會回報帳戶、特定安全性設定檔，以及特定安全性設定檔特定行為的新違規次數。  | 
|   `ViolationsCleared`   |  自上次評估執行以來已解決的安全性設定檔行為的違規次數。系統會報告已解決的帳戶、特定安全性設定檔以及特定安全性設定檔特定行為的違規次數。  | 
|   `ViolationsInvalidated`   |  自上次執行評估起，資訊不再可用的安全性描述檔行為違反之數目 (因為報告裝置停止報告，或因為某些原因不再受到監控)。系統會報告整個帳戶，特定安全性設定檔以及特定安全性設定檔特定行為的無效違規次數。  | 
|   `MisconfiguredDeviceDefenderNotification`   |  當您的 SNS AWS IoT Device Defender 組態設定錯誤時， 會通知您。  [Dimensions (尺寸)](#aws-iot-metricdimensions)   | 

## 裝置佈建指標
<a name="provisioning-metrics"></a>


**AWS IoT 機群佈建指標**  

| 指標 | Description | 
| --- | --- | 
|   `ApproximateNumberOfThingsRegistered`   |  已由機群佈建註冊的事項計數。 雖然計數通常相當準確，但 AWS IoT Core 的分配式架構將會很難保持已註冊事項的精確計數。 此指標使用的統計數字為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/metrics_dimensions.html)  維度：[ClaimCertificateId](#aws-iot-metricdimensions)   | 
|   `CreateKeysAndCertificateFailed`   |  呼叫 `CreateKeysAndCertificate` MQTT API 時發生的失敗次數。 在成功 (值 = 0) 和失敗 (值 = 1) 兩種情況下，皆會發出指標。此指標可用來追蹤於 CloudWatch 支援的彙總視窗期間 (例如 5 分鐘或 1 小時) 建立及註冊的憑證數量。 此指標可用的統計數字為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/metrics_dimensions.html)  | 
|   `CreateCertificateFromCsrFailed`   |  呼叫 `CreateCertificateFromCsr` MQTT API 時發生的失敗次數。 在成功 (值 = 0) 和失敗 (值 = 1) 兩種情況下，皆會發出指標。此指標可用來追蹤於 CloudWatch 支援的彙總視窗期間 (例如 5 分鐘或 1 小時) 註冊的事項數量。 此指標可用的統計數字為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/metrics_dimensions.html)  | 
|   `RegisterThingFailed`   |  呼叫 `RegisterThing` MQTT API 時發生的失敗次數。 在成功 (值 = 0) 和失敗 (值 = 1) 兩種情況下，皆會發出指標。此指標可用來追蹤於 CloudWatch 支援的彙總視窗期間 (例如 5 分鐘或 1 小時) 註冊的事項數量。如需註冊事項的總數，請參閱 `ApproximateNumberOfThingsRegistered` 指標。 此指標可用的統計數字為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/metrics_dimensions.html) 維度：[TemplateName](#aws-iot-metricdimensions)   | 


**即時佈建指標**  

| 指標 | Description | 
| --- | --- | 
|   `ProvisionThing.ClientError`   |  裝置因用戶端錯誤而無法佈建的次數。例如，指定於範本中的政策不存在。  | 
|  ProvisionThing.ServerError  |  裝置因伺服器錯誤而無法佈建的次數。客戶可在等待後重試佈建裝置，而若問題仍然存在，其可聯絡 AWS IoT 。  | 
|  ProvisionThing.Success  |  成功佈建的裝置的次數。  | 

## LoRaWAN 指標
<a name="lorawan-metrics"></a>

下表顯示 的指標 AWS IoT Core for LoRaWAN。如需詳細資訊，請參閱 [AWS IoT Core for LoRaWAN 指標](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-metrics.html)。


**AWS IoT Core for LoRaWAN 指標**  

| 指標 | Description | 
| --- | --- | 
|  作用中裝置/閘道  |  您帳戶中作用中 LoRaWAN 裝置和閘道的數量。  | 
|  上行訊息計數  |  您 中所有作用中閘道和裝置在指定期間內傳送的上行訊息數量 AWS 帳戶。上行訊息是從您的裝置傳送到 的訊息 AWS IoT Core for LoRaWAN。  | 
|  下行訊息計數  |  您 中所有作用中閘道和裝置在指定期間內傳送的下行訊息數量 AWS 帳戶。下行訊息是從 傳送到 AWS IoT Core for LoRaWAN 您裝置的訊息。  | 
|  訊息損失率  |  新增裝置並連線至 後 AWS IoT Core for LoRaWAN，您的裝置可以啟動上行訊息，以開始與雲端交換訊息。接著您可以使用此指標來追蹤上行訊息損失率。  | 
|  聯結指標  |  新增裝置和閘道之後，您可以執行聯結程序，讓裝置可以傳送上行資料並與之通訊 AWS IoT Core for LoRaWAN。您可以使用此指標取得您 AWS 帳戶中所有作用中裝置的聯結指標相關資訊。  | 
|  平均接收訊號強度指示器 (RSSI)  |  您可以使用此指標來監控一段指定期間內的 RSSI (接收的訊號強度指示器) 平均數。RSSI 是一種測量方式，會指出訊號強度是否足以提供良好的無線連線。此值為負值，且強式連線必須更接近零。  | 
|  平均訊號雜訊比 (SNR)  |  您可以使用此指標來監控一段指定期間內的 SNR (訊號雜訊比) 平均數。SNR 是一種測量方式，會指出與雜訊程度相比，收到的訊號強度是否足以提供良好的無線連線。SNR 值為正數，且必須大於零，以表示訊號功率比雜訊功率強。  | 
|  閘道可用性  |  您可以使用此指標來取得一段指定期間內，此閘道的可用性相關資訊。此指標會顯示一段指定期間內，此閘道的 Websocket 連線時間。  | 


**即時佈建指標**  

| 指標 | Description | 
| --- | --- | 
|   `ProvisionThing.ClientError`   |  裝置因用戶端錯誤而無法佈建的次數。例如，指定於範本中的政策不存在。  | 
|  ProvisionThing.ServerError  |  裝置因伺服器錯誤而無法佈建的次數。客戶可在等待後重試佈建裝置，而若問題仍然存在，其可聯絡 AWS IoT 。  | 
|  ProvisionThing.Success  |  成功佈建的裝置的次數。  | 

## 機群索引指標
<a name="fleet-indexing-metrics"></a>


**AWS IoT 機群索引指標**  

| 指標 | Description | 
| --- | --- | 
|   `NamedShadowCountForDynamicGroupQueryLimitExceeded`   |  對於動態物件群組中並非特定於資料來源的查詢術語，每個物件最多處理 25 個已命名影子。當物件違反此限制時，會發出 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 事件類型。  | 

## 指標的維度
<a name="aws-iot-metricdimensions"></a>


**指標使用命名空間，並提供下列維度的指標。**  

| 維度 | Description | 
| --- | --- | 
|  ActionType  |  觸發請求，並由規則指定的[動作類型](iot-rule-actions.md)。  | 
|   `BehaviorName`   |  被監控的 Device Defender Detect 安全性設定檔行為名稱。  | 
|   `ClaimCertificateId`   |  用來佈建裝置的 `certificateId` 宣告。  | 
|   `CheckName`   |  其結果正受到監控的 Device Defender 稽核檢查的名稱。  | 
|   `JobId`   |  正在監控其進度或訊息連線成功/失敗的任務 ID。  | 
|   `Protocol`   |  用來提出要求的協定。有效值為：MQTT 或 HTTP  | 
|   `RuleName`   |  要求所觸發規則的名稱。  | 
|   `ScheduledAuditName`   |  其檢查結果正受到監控之 Device Defender 排程稽核的名稱。若回報的結果是依隨需執行的稽核結果，則此值為 `OnDemand`。  | 
|   `SecurityProfileName`   |  其行為正受到監控之 Device Defender Detect 安全性描述檔的名稱。  | 
|   `TemplateName`   |  佈建範本的名稱。  | 
|  SourceArn  | 參考用於偵測的安全設定檔或用於稽核的帳戶。 | 
|   `RoleArn`   |  是指 Device Defender 嘗試擔任的角色。  | 
|   `TopicArn`   |  參考嘗試發佈至 的 SNS 主題 Device Defender。  | 
|   `Error`   | 簡短說明嘗試發佈至 SNS 主題時收到的錯誤。可能值為：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/metrics_dimensions.html)  | 

# AWS IoT 使用 CloudWatch Logs 進行監控
<a name="cloud-watch-logs"></a>

[AWS IoT 啟用記錄](configure-logging.md)功能時， 會透過訊息代理程式和規則引擎，在從您的裝置傳遞每個訊息時 AWS IoT 傳送有關訊息的進度事件。在 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)中，CloudWatch 日誌會顯示於名為 **AWSIotLogs** 的日誌群組中。

如需 CloudWatch Logs 的詳細資訊，請參閱 [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)。如需 Support AWS IoT CloudWatch Logs 的相關資訊，請參閱 [CloudWatch Logs AWS IoT 日誌項目](cwl-format.md) 。

## 在 CloudWatch 主控台中檢視 AWS IoT 日誌
<a name="viewing-logs"></a>

**注意**  
`AWSIotLogsV2` 日誌群組於下列狀況下才會顯示於 CloudWatch 主控台中：  
您已啟用登入 AWS IoT。如需如何啟用登入的詳細資訊 AWS IoT，請參閱 [設定 AWS IoT 記錄](configure-logging.md) 
有些日誌項目已由 AWS IoT 操作寫入。

**在 CloudWatch 主控台中檢視您的 AWS IoT 日誌**

1.  請瀏覽 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。在導覽窗格中，選擇 **Log groups** (日誌群組)。

1. 在 **Filter (篩選條件)** 文字方塊中，輸入 **AWSIotLogsV2**，然後按下 Enter 鍵。

1. 請按兩下 `AWSIotLogsV2` 日誌群組。

1. 選擇 **Search All** (全部搜尋)。系統會顯示為您的帳戶產生的 AWS IoT 日誌完整清單。

1. 選擇展開圖示可觀看個別的串流。

您也可以在 **Filter events (篩選條件事件)** 中輸入一個查詢。以下是一些可以試試看的有趣查詢：
+  `{ $.logLevel = "INFO" }` 

   尋找日誌層級為 `INFO` 的所有日誌。
+  `{ $.status = "Success" }` 

   尋找日誌狀態為 `Success` 的所有日誌。
+  `{ $.status = "Success" && $.eventType = "GetThingShadow" }` 

   尋找狀態為 `Success` 且事件類型為 `GetThingShadow` 的所有日誌。

如需有關建立篩選條件表達式的詳細資訊，請參閱 [CloudWatch Logs 查詢](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)。

# CloudWatch Logs AWS IoT 日誌項目
<a name="cwl-format"></a>

的每個元件都會 AWS IoT 產生自己的日誌項目。每個日誌項目都有 `eventType` 指定造成日誌項目產生的作業。本節旨在說明下列 AWS IoT 元件所產生的記錄項目。

**Topics**
+ [Message broker 日誌項目](#message-broker-logs)
+ [伺服器憑證 OCSP 日誌項目](#server-ocsp-logs)
+ [Device Shadow 日誌項目](#device-shadow-logs)
+ [Rules engine 日誌項目](#rule-engine-logs)
+ [任務日誌項目](#job-logs)
+ [裝置佈建日誌項目](#provision-logs)
+ [動態物件群組日誌項目](#dynamic-group-logs)
+ [機群索引日誌項目](#fleet-indexing-logs)
+ [常用 CloudWatch Logs 屬性](#cwl-common-attributes)

## Message broker 日誌項目
<a name="message-broker-logs"></a>

 AWS IoT 訊息中介裝置會產生下列事件的日誌項目：

**Topics**
+ [Connect 記錄項目](#log-mb-connect)
+ [Disconnect 日誌輸入項](#log-mb-disconnect)
+ [DeleteConnection 日誌項目](#log-mb-delete-connection)
+ [GetRetainedMessage 日誌項目](#log-mb-get-retain)
+ [ListRetainedMessage 日誌項目](#log-mb-list-retain)
+ [Publish-In 日誌項目](#log-mb-publish-in)
+ [Publish-Out 日誌項目](#log-mb-publish-out)
+ [佇列日誌項目](#log-mb-queued)
+ [訂閱日誌項目](#log-mb-subscribe)
+ [取消訂閱日誌項目](#log-mb-unsubscribe)

### Connect 記錄項目
<a name="log-mb-connect"></a>

當 MQTT 用戶端連線`Connect`時， AWS IoT 訊息中介裝置會使用 `eventType` 的 產生日誌項目。

#### Connect 日誌項目範例
<a name="log-mb-connect.example"></a>

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Connect",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Connect`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

sourceIp  
請求來源所在的 IP 地址。

sourcePort  
請求來源所在的埠口。

### Disconnect 日誌輸入項
<a name="log-mb-disconnect"></a>

當 MQTT 用戶端中斷連線`Disconnect`時， AWS IoT 訊息中介裝置會使用 `eventType` 的 產生日誌項目。

#### Disconnect 日誌項目的連線範例
<a name="log-mb-disconnect.example"></a>

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Disconnect",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490,
    "reason": "DUPLICATE_CLIENT_ID",
    "details": "A new connection was established with the same client ID",
    "disconnectReason": "CLIENT_INITIATED_DISCONNECT"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Disconnect`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

sourceIp  
請求來源所在的 IP 地址。

sourcePort  
請求來源所在的埠口。

reason  
用戶端中斷連線的原因。

詳細資訊  
錯誤的簡要說明。

disconnectReason  
用戶端中斷連線的原因。

### DeleteConnection 日誌項目
<a name="log-mb-delete-connection"></a>

訊息 AWS IoT 中介裝置會在刪除 MQTT 用戶端連線`DeleteConnection`時，使用 `eventType` 的 產生日誌項目。

#### DeleteConnection 日誌項目範例
<a name="log-mb-delete-connection.example"></a>

```
{
    "timestamp": "2025-08-09 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DeleteConnection",
    "protocol": "HTTP",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`DeleteConnection`日誌項目還包含下列屬性：

clientId  
將中斷連線的用戶端 ID。

principalId  
提出請求的委託人 ID。如需有關如何使用委託人 ID 識別委託人的資訊，請參閱《[IAM 使用者指南》中的比較 IAM 身分和登入](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html)資料。 **

protocol  
用來提出要求的協定。有效值為 `HTTP`。

sourceIp  
請求來源所在的 IP 地址。

sourcePort  
請求來源所在的埠口。

### GetRetainedMessage 日誌項目
<a name="log-mb-get-retain"></a>

 AWS IoT 訊息中介裝置會在[https://docs.aws.amazon.com//iot/latest/developerguide/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/developerguide/API_iotdata_GetRetainedMessage.html)呼叫 `GetRetainedMessage`時產生具有 `eventType` 的日誌項目。

#### GetRetainedMessage 日誌項目範例
<a name="log-mb-get-retain-example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664", 
    "logLevel": "INFO", 
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f", 
    "accountId": "123456789012", 
    "status": "Success", 
    "eventType": "GetRetainedMessage", 
    "protocol": "HTTP",
    "topicName": "a/b/c",
    "qos": "1",
    "lastModifiedDate": "2017-08-07 18:47:56.664"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`GetRetainedMessage`日誌項目還包含下列屬性：

lastModifiedDate  
儲存保留訊息的 Epoch 日期和時間，以毫秒為單位 AWS IoT。

protocol  
用來提出要求的協定。有效值：`HTTP`。

qos  
發佈請求中使用的服務品質 (QoS) 等級。有效值為 `0` 或 `1`。

topicName  
訂閱主題的名稱。

### ListRetainedMessage 日誌項目
<a name="log-mb-list-retain"></a>

 AWS IoT 訊息中介裝置會在[/iot/latest/developerguide/API_iotdata_ListRetainedMessages.html](/iot/latest/developerguide/API_iotdata_ListRetainedMessages.html)呼叫 `ListRetainedMessage`時產生具有 `eventType` 的日誌項目。

#### ListRetainedMessage 日誌項目範例
<a name="log-mb-list-retain-example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664", 
    "logLevel": "INFO", 
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f", 
    "accountId": "123456789012", 
    "status": "Success", 
    "eventType": "ListRetainedMessage", 
    "protocol": "HTTP"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`ListRetainedMessage`日誌項目還包含下列屬性：

protocol  
用來提出要求的協定。有效值：`HTTP`。

### Publish-In 日誌項目
<a name="log-mb-publish-in"></a>

當 AWS IoT 訊息中介裝置收到 MQTT 訊息時，它會產生具有 之 `eventType`的日誌項目`Publish-In`。

#### Publish-In 日誌項目範例
<a name="log-mb-publish-in.example"></a>

```
{
        "timestamp": "2017-08-10 15:39:30.961",
        "logLevel": "INFO",
        "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
        "accountId": "123456789012",
        "status": "Success",
        "eventType": "Publish-In",
        "protocol": "MQTT",
        "topicName": "$aws/things/MyThing/shadow/get",
        "clientId": "abf27092886e49a8a5c1922749736453",
        "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
        "sourceIp": "205.251.233.181",
        "sourcePort": 13490,
        "retain": "True"
    }
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Publish-In`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

保留  
當「保留」旗標訊息的值設定為 `True` 時所使用的屬性。如果訊息沒有設定「保留」旗標，則此屬性不會顯示在日誌條目中。如需詳細資訊，請參閱 [MQTT 保留訊息](mqtt.md#mqtt-retain)。

sourceIp  
請求來源所在的 IP 地址。

sourcePort  
請求來源所在的埠口。

topicName  
訂閱主題的名稱。

### Publish-Out 日誌項目
<a name="log-mb-publish-out"></a>

當訊息代理程式發佈 MQTT 訊息時，會產生 `eventType` 為 `Publish-Out` 的日誌項目。

#### Publish-Out 日誌項目範例
<a name="log-mb-publish-out.example"></a>

```
{
    "timestamp": "2017-08-10 15:39:30.961",
    "logLevel": "INFO",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Publish-Out",
    "protocol": "MQTT",
    "topicName": "$aws/things/MyThing/shadow/get",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Publish-Out`日誌項目還包含下列屬性：

clientId  
接收有關該 MQTT 主題之訊息的訂閱用戶端的 ID。

principalId  
提出請求的委託人 ID。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

sourceIp  
請求來源所在的 IP 地址。

sourcePort  
請求來源所在的埠口。

topicName  
訂閱主題的名稱。

### 佇列日誌項目
<a name="log-mb-queued"></a>

當具有持久性工作階段的裝置中斷連線時，MQTT 訊息代理程式會儲存裝置的訊息，並 AWS IoT 產生 eventType 為 的日誌項目`Queued`。如需 MQTT 持久性工作階段的詳細資訊，請參閱 [MQTT 持久性工作階段](mqtt.md#mqtt-persistent-sessions) 。

#### 佇列的伺服器錯誤日誌項目範例
<a name="log-mb-queued.server-error.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "ERROR",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Failure",
    "details": "Server Error"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Queued`伺服器錯誤日誌項目還包含下列屬性：

clientId  
訊息排入佇列的用戶端 ID。

詳細資訊  
**`Server Error`**  
伺服器錯誤會造成訊息無法儲存。

protocol  
用來提出要求的協定。這個值將永遠為 `MQTT`。

qos  
請求的服務品質 (QoS) 等級。該值將始終為 1，因為具有 QoS 為 0 的訊息不會儲存。

topicName  
訂閱主題的名稱。

#### 佇列成功日誌項目範例
<a name="log-mb-queued.success.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "INFO",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Success"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Queued`成功日誌項目還包含下列屬性：

clientId  
訊息排入佇列的用戶端 ID。

protocol  
用來提出要求的協定。這個值將永遠為 `MQTT`。

qos  
請求的服務品質 (QoS) 等級。該值將始終為 1，因為具有 QoS 為 0 的訊息不會儲存。

topicName  
訂閱主題的名稱。

#### 佇列限流日誌項目範例
<a name="log-mb-queued.throttled.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "ERROR",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Failure",
    "details": "Throttled while queueing offline message"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Queued`限流日誌項目還包含下列屬性：

clientId  
訊息排入佇列的用戶端 ID。

詳細資訊  
**`Throttled while queueing offline message`**  
用戶端超出 ` [Queued messages per second per account](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#genref_queued_messages_per_second_per_account) ` 限制，因此訊息不會儲存。

protocol  
用來提出要求的協定。這個值將永遠為 `MQTT`。

qos  
請求的服務品質 (QoS) 等級。該值將始終為 1，因為具有 QoS 為 0 的訊息不會儲存。

topicName  
訂閱主題的名稱。

### 訂閱日誌項目
<a name="log-mb-subscribe"></a>

當 MQTT 用戶端訂閱主題`Subscribe`時， AWS IoT 訊息中介裝置會產生具有 `eventType` 之 的日誌項目。

#### MQTT 3 訂閱日誌項目範例
<a name="log-mb-connect.example.subscribe"></a>

```
{
    "timestamp": "2017-08-10 15:39:04.413",
    "logLevel": "INFO",
    "traceId": "7aa5c38d-1b49-3753-15dc-513ce4ab9fa6",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Subscribe",
    "protocol": "MQTT",
    "topicName": "$aws/things/MyThing/shadow/#",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Subscribe`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

protocol  
用來提出要求的協定。這個值將永遠為 `MQTT`。

sourceIp  
請求來源所在的 IP 地址。

sourcePort  
請求來源所在的埠口。

topicName  
訂閱主題的名稱。

#### MQTT 5 訂閱日誌項目範例
<a name="log-mb-connect.example.subscribe.mqtt5"></a>

```
{
	"timestamp": "2022-11-30 16:24:15.628",
	"logLevel": "INFO",
	"traceId": "7aa5c38d-1b49-3753-15dc-513ce4ab9fa6",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "Subscribe",
	"protocol": "MQTT",
	"topicName": "test/topic1,$invalid/reserved/topic",
	"subscriptions": [
		{
			"topicName": "test/topic1",
			"reasonCode": 1
		},
		{
			"topicName": "$invalid/reserved/topic",
			"reasonCode": 143
		}
	],
	"clientId": "abf27092886e49a8a5c1922749736453",
	"principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
	"sourceIp": "205.251.233.181",
	"sourcePort": 13490
}
```

針對 MQTT 5 訂閱操作，除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 和 [MQTT 3 訂閱日誌項目屬性](#log-mb-connect.example.subscribe)之外，MQTT 5 `Subscribe` 日誌項目還包含下列屬性：

訂閱  
「訂閱」請求中所要求主題與個別 MQTT 5 原因代碼之間的對應清單。如需更多詳細資訊，請參閱 [MQTT 原因代碼](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html#mqtt5-reason-codes)。

### 取消訂閱日誌項目
<a name="log-mb-unsubscribe"></a>

當 MQTT 用戶端取消訂閱 MQTT 主題`Unsubscribe`時， AWS IoT 訊息中介裝置會產生具有 `eventType` 的 日誌項目。

#### MQTT 取消訂閱日誌項目範例
<a name="log-mb-connect.example.unsubscribe"></a>

```
{
    "timestamp": "2024-08-20 22:53:32.844",
    "logLevel": "INFO",
    "traceId": "db6bd09a-2c3f-1cd2-27cc-fd6b1ce03b58",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Unsubscribe",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`Unsubscribe`日誌項目還包含下列屬性：

protocol  
用來提出要求的協定。這個值將永遠為 `MQTT`。

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

sourceIp  
請求來源所在的 IP 地址。

sourcePort  
請求來源所在的埠口。

## 伺服器憑證 OCSP 日誌項目
<a name="server-ocsp-logs"></a>

AWS IoT Core 會為下列事件產生日誌項目：

**Topics**
+ [RetrieveOCSPStapleData 日誌項目](#log-retrieve-ocsp-staple)
+ [私有端點的 RetrieveOCSPStapleData 日誌項目](#log-retrieve-ocsp-staple-private-endpoint)

### RetrieveOCSPStapleData 日誌項目
<a name="log-retrieve-ocsp-staple"></a>

AWS IoT Core 當伺服器擷取 OCSP 基本資料`RetrieveOCSPStapleData`時， 會產生具有 `eventType` 的 日誌項目。

#### RetrieveOCSPStapleData 日誌項目範例
<a name="log-retrieve-ocsp-staple.example"></a>

以下是 的日誌項目範例`Success`。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "INFO",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
	"connectionDetails": {
		"httpStatusCode": "200",
		"ocspResponderUri": "http://ocsp.example.com",
		"sourceIp": "205.251.233.181",
		"targetIp": "250.15.5.3"
	},
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	},
	"ocspResponseDetails": {
		"responseCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01",
		"ocspResponseStatus": "successful",
		"certStatus": "good",
		"signature": "4C:6F:63:61:6C:20:52:65:73:70:6F:6E:64:65:72:20:53:69:67:6E:61:74:75:72:65",
		"thisUpdateTime": "Jan 31 01:21:02 2024 UTC",
		"nextUpdateTime": "Feb 02 00:21:02 2024 UTC",
		"producedAtTime": "Jan 31 01:37:03 2024 UTC",
		"stapledDataPayloadSize": "XXX"
	}
}
```

以下是 的日誌項目範例`Failure`。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "ERROR",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Failure",
	"reason": "A non 2xx HTTP response was received from the OCSP responder.",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
	"connectionDetails": {
		"httpStatusCode": "444",
		"ocspResponderUri": "http://ocsp.example.com",
		"sourceIp": "205.251.233.181",
		"targetIp": "250.15.5.3"
	},
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	}
}
```

對於 `RetrieveOCSPStaple`操作，除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，日誌項目還包含下列屬性：

reason  
操作失敗的原因。

domainConfigName  
網域組態的名稱。

connectionDetails  
連線詳細資訊的簡短說明。  
+ httpStatusCode

  OCSP 回應程式傳回的 HTTP 狀態碼，以回應用戶端對伺服器提出的請求。
+ ocspResponderUri

  從伺服器憑證擷取的 OCSP AWS IoT Core 回應程式 URI。
+ sourceIp

   AWS IoT Core 伺服器的來源 IP 地址。
+ targetIp

  OCSP 回應程式的目標 IP 地址。

ocspRequestDetails  
OCSP 請求的詳細資訊。  
+ requesterName

  將請求傳送至 OCSP 回應程式之 AWS IoT Core 伺服器的識別符。
+ requestCertId

  請求的憑證 ID。這是請求 OCSP 回應的憑證 ID。

ocspResponseDetails  
OCSP 回應的詳細資訊。  
+ responseCertId

  OCSP 回應的憑證 ID。
+ ocspResponseStatus

  OCSP 回應的狀態。
+ certStatus

  憑證的狀態。
+ signature

  由信任實體套用至回應的簽章。
+ thisUpdateTime

  指出狀態的時間已知正確。
+ nextUpdateTime

  提供憑證狀態的更新資訊時或之前的時間。
+ producedAtTime

  OCSP 回應者簽署此回應的時間。
+ stapledDataPayloadSize

  主控資料的承載大小。

### 私有端點的 RetrieveOCSPStapleData 日誌項目
<a name="log-retrieve-ocsp-staple-private-endpoint"></a>

AWS IoT Core 當伺服器擷取 OCSP 基本資料`RetrieveOCSPStapleData`時， 會使用 `eventType` 的 產生日誌項目。

#### 私有端點的 RetrieveOCSPStapleData 日誌項目範例
<a name="log-retrieve-ocsp-staple-private-endpoint.example"></a>

以下是 的日誌項目範例`Success`。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "INFO",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
        "lambdaDetails": {
        "lambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
        "sourceArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/testDomainConfigure/6bzfg"
      },
        "authorizedResponderArn": "arn:aws:acm:us-west-2:123456789012:certificate/certificate_ID",
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	},
	"ocspResponseDetails": {
		"responderId": "04:C1:3F:8F:27:D6:49:13:F8:DE:B2:36:9D:85:8E:F8:31:3B:A6:D0"
               "responseCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01",
		"ocspResponseStatus": "successful",
		"certStatus": "good",
		"signature": "4C:6F:63:61:6C:20:52:65:73:70:6F:6E:64:65:72:20:53:69:67:6E:61:74:75:72:65",
		"thisUpdateTime": "Jan 31 01:21:02 2024 UTC",
		"nextUpdateTime": "Feb 02 00:21:02 2024 UTC",
		"producedAtTime": "Jan 31 01:37:03 2024 UTC",
		"stapledDataPayloadSize": "XXX"
	}
}
```

以下是 的日誌項目範例`Failure`。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "ERROR",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Failure",
	"reason": "The payload returned by the Lambda function exceeds the maximum response size of 7 kilobytes.",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
        "lambdaDetails": {
        "lambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
        "sourceArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/testDomainConfigure/6bzfg"
      },
        "authorizedResponderArn": "arn:aws:acm:us-west-2:123456789012:certificate/certificate_ID",
	 "ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	}
}
```

對於 `RetrieveOCSPStaple`操作，除了 [RetrieveOCSPStapleData 日誌項目](https://docs.aws.amazon.com//iot/latest/developerguide/cwl-format.html#log-retrieve-ocsp-staple)中的 [常用 CloudWatch Logs 屬性](#cwl-common-attributes)和 屬性之外，私有端點的日誌項目還包含下列屬性：

lambdaDetails  
Lambda 函數的詳細資訊。  
+ lambdaArn

  Lambda 函數的 ARN。
+ sourceArn

  網域組態的 ARN。

authorizedResponderArn  
如果在網域組態中設定了授權方回應程式的 ARN。

## Device Shadow 日誌項目
<a name="device-shadow-logs"></a>

 AWS IoT Device Shadow 服務會產生下列事件的日誌項目：

**Topics**
+ [DeleteThingShadow 日誌項目](#log-shadow-delete-thing-shadow)
+ [GetThingShadow 日誌項目](#log-shadow-get-thing-shadow)
+ [UpdateThingShadow 日誌項目](#log-shadow-update-thing-shadow)

### DeleteThingShadow 日誌項目
<a name="log-shadow-delete-thing-shadow"></a>

當收到刪除 Device Shadow 的要求時，Device Shadow 服務會產生 `eventType` 為 `DeleteThingShadow` 的日誌項目。

#### DeleteThingShadow 日誌項目範例
<a name="log-shadow-delete-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664",
    "logLevel": "INFO",
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DeleteThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "Jack",
    "topicName": "$aws/things/Jack/shadow/delete"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`DeleteThingShadow`日誌項目還包含下列屬性：

deviceShadowName  
要更新的影子名稱。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

topicName  
請求所發布的主題名稱。

### GetThingShadow 日誌項目
<a name="log-shadow-get-thing-shadow"></a>

當收到影子的 get 要求時，Device Shadow 服務會產生 `eventType` 為 `GetThingShadow` 的日誌項目。

#### GetThingShadow 日誌項目範例
<a name="log-shadow-get-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-09 17:56:30.941",
    "logLevel": "INFO",
    "traceId": "b575f19a-97a2-cf72-0ed0-c64a783a2504",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "GetThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "MyThing",
    "topicName": "$aws/things/MyThing/shadow/get"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`GetThingShadow`日誌項目還包含下列屬性：

deviceShadowName  
所要求影子的名稱。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

topicName  
請求所發布的主題名稱。

### UpdateThingShadow 日誌項目
<a name="log-shadow-update-thing-shadow"></a>

當收到更新 Device Shadow 的要求時，Device Shadow 服務會產生 `eventType` 為 `UpdateThingShadow` 的日誌項目。

#### UpdateThingShadow 日誌項目範例
<a name="log-shadow-update-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-07 18:43:59.436",
    "logLevel": "INFO",
    "traceId": "d0074ba8-0c4b-a400-69df-76326d414c28",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "UpdateThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "Jack",
    "topicName": "$aws/things/Jack/shadow/update"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`UpdateThingShadow`日誌項目還包含下列屬性：

deviceShadowName  
要更新的影子名稱。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

topicName  
請求所發布的主題名稱。

## Rules engine 日誌項目
<a name="rule-engine-logs"></a>

 AWS IoT 規則引擎會產生下列事件的日誌：

**Topics**
+ [FunctionExecution 日誌項目](#log-rules-fn-exec)
+ [RuleExecution 日誌項目](#log-rules-rule-ex)
+ [RuleMatch 日誌項目](#log-rules-rule-match)
+ [RuleExecutionThrottled 日誌項目](#log-rules-rule-msg-throttled)
+ [RuleNotFound 日誌項目](#log-rules-rule-not-found)
+ [StartingRuleExecution 日誌項目](#log-rules-start-rule-ex)

### FunctionExecution 日誌項目
<a name="log-rules-fn-exec"></a>

當規則的 SQL 查詢呼叫外部函數時，規則引擎會產生 `eventType` 為 `FunctionExecution` 的日誌項目。當規則的動作向 AWS IoT 或其他 Web 服務提出 HTTP 請求 （例如呼叫 `get_thing_shadow`或 `machinelearning_predict`) 時，會呼叫外部 函數。

#### FunctionExecution 日誌項目範例
<a name="log-rules-fn-exec.example"></a>

```
{
    "timestamp": "2017-07-13 18:33:51.903",
    "logLevel": "DEBUG",
    "traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
    "status": "Success",
    "eventType": "FunctionExecution",
    "clientId": "N/A",
    "topicName":"rules/test",
    "ruleName": "ruleTestPredict",
    "ruleAction": "MachinelearningPredict",
    "resources": {
        "ModelId": "predict-model"
    },
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`FunctionExecution`日誌項目還包含下列屬性：

clientId  
 `N/A` 適用於 `FunctionExecution` 日誌。

principalId  
提出請求的委託人 ID。

resources  
該規則動作所使用的資源集合。

ruleName  
符合的規則名稱。

topicName  
訂閱主題的名稱。

### RuleExecution 日誌項目
<a name="log-rules-rule-ex"></a>

當 AWS IoT 規則引擎觸發規則的動作時，會產生`RuleExecution`日誌項目。

#### RuleExecution 日誌項目範例
<a name="log-rules-rule-ex.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.070",
    "logLevel": "INFO",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleExecution",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "ruleAction": "RepublishAction",
    "resources": {
        "RepublishTopic": "rules/republish"
    },
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

#### RuleExecution 搭配批次處理日誌項目範例
<a name="log-rules-rule-ex-batching.example"></a>

```
{
    "logLevel": "INFO",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleExecution",
    "ruleName": "rule_test",
    "ruleAction": "HttpAction",
    "resources": {
        "Url": "https://example.com",
        "ConfirmationUrl": "https://example.com"
    },
    "details": "HttpAction made a request to the specified endpoint",
    "batchDetails": {
        "timestamps": [
            "1234567890123",
            "1234567890123",
            "1234567890123"
        ],
        "traceIds": [
            "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
            "30aa7ccc-1d23-0b97-aa7b-76196d83537c",
            "30aa7ccc-1d23-0b97-aa7b-76196d83537d"
        ],
        "clientIds": [
            "N/A",
            "N/A",
            "N/A"
        ],
        "topicNames": [
            "topic/ruletest",
            "topic/ruletest",
            "topic/ruletest"
        ],
        "principalIds": [
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
        ],
        "batchSize": 3,
        "batchSizeInBytes": 114
    }
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes)，`RuleExecution` 記錄項目包含下列屬性：

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

resources  
該規則動作所使用的資源集合。

ruleAction  
受到觸發的動作名稱。

ruleName  
符合的規則名稱。

topicName  
訂閱主題的名稱。

### RuleMatch 日誌項目
<a name="log-rules-rule-match"></a>

當訊息中介裝置收到符合規則的訊息`RuleMatch`時， AWS IoT 規則引擎會產生具有 `eventType` 之 的日誌項目。

#### RuleMatch 日誌項目範例
<a name="log-rules-rule-match.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.002",
    "logLevel": "INFO",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleMatch",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`RuleMatch`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

ruleName  
符合的規則名稱。

topicName  
訂閱主題的名稱。

### RuleExecutionThrottled 日誌項目
<a name="log-rules-rule-msg-throttled"></a>

調節執行時， AWS IoT 規則引擎會使用 `eventType`的 產生日誌項目`RuleExecutionThrottled`。

#### RuleExecutionThrottled 日誌項目範例
<a name="log-rules-rule-msg-throttled.example"></a>

```
{
    "timestamp": "2017-10-04 19:25:46.070",
    "logLevel": "ERROR",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "RuleExecutionThrottled",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "$aws/rules/example_rule",
    "ruleName": "example_rule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "reason": "RuleExecutionThrottled",
    "details": "Exection of Rule example_rule throttled"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`RuleExecutionThrottled`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

詳細資訊  
錯誤的簡要說明。

principalId  
提出請求的委託人 ID。

reason  
字串「RuleExecutionThrottled」。

ruleName  
欲觸發的規則名稱。

topicName  
已發佈的主題名稱。

### RuleNotFound 日誌項目
<a name="log-rules-rule-not-found"></a>

當 AWS IoT 規則引擎找不到具有指定名稱的規則時，會產生具有 之 `eventType`的日誌項目`RuleNotFound`。

#### RuleNotFound 日誌項目範例
<a name="log-rules-rule-not-found.example"></a>

```
{
    "timestamp": "2017-10-04 19:25:46.070",
    "logLevel": "ERROR",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "RuleNotFound",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "$aws/rules/example_rule",
    "ruleName": "example_rule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "reason": "RuleNotFound",
    "details": "Rule example_rule not found"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`RuleNotFound`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

詳細資訊  
錯誤的簡要說明。

principalId  
提出請求的委託人 ID。

reason  
"RuleNotFound" 字串。

ruleName  
找不到的規則名稱。

topicName  
已發佈的主題名稱。

### StartingRuleExecution 日誌項目
<a name="log-rules-start-rule-ex"></a>

當 AWS IoT 規則引擎開始觸發規則的動作時，會產生具有 之 `eventType`的日誌項目`StartingRuleExecution`。

#### StartingRuleExecution 日誌項目範例
<a name="log-rules-start-rule-ex.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.002",
    "logLevel": "DEBUG",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "StartingRuleExecution",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "ruleAction": "RepublishAction",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`rule-`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

principalId  
提出請求的委託人 ID。

ruleAction  
受到觸發的動作名稱。

ruleName  
符合的規則名稱。

topicName  
訂閱主題的名稱。

## 任務日誌項目
<a name="job-logs"></a>

 AWS IoT 任務服務會產生下列事件的日誌項目。從裝置收到 MQTT 或 HTTP 請求時系統會產生日誌項目。

**Topics**
+ [DescribeJobExecution 日誌項目](#log-job-describe-job-ex)
+ [GetPendingJobExecution 日誌項目](#log-job-get-pending-job-ex)
+ [ReportFinalJobExecutionCount 日誌項目](#log-job-report-final-job-ex-count)
+ [StartNextPendingJobExecution 日誌項目](#log-job-start-next-pending-job-ex)
+ [UpdateJobExecution 日誌項目](#log-job-update-job-ex)

### DescribeJobExecution 日誌項目
<a name="log-job-describe-job-ex"></a>

 AWS IoT Jobs 服務會在服務收到描述任務執行的請求`DescribeJobExecution`時，使用 `eventType` 的 產生日誌項目。

#### DescribeJobExecution 日誌項目範例
<a name="log-job-describe-job-ex.example"></a>

```
{
    "timestamp": "2017-08-10 19:13:22.841",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DescribeJobExecution",
    "protocol": "MQTT",
    "clientId": "thingOne",
    "jobId": "002",
    "topicName": "$aws/things/thingOne/jobs/002/get",
    "clientToken": "myToken",
    "details": "The request status is SUCCESS."
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`GetJobExecution`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

clientToken  
用來確保請求冪等的，是一個唯一、區分大小寫的識別符。如需詳細資訊，請參閱[如何確保冪等](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

詳細資訊  
任務裝置的其他資訊。

jobId  
任務執行的任務 ID。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

topicName  
用來提出請求的主題。

### GetPendingJobExecution 日誌項目
<a name="log-job-get-pending-job-ex"></a>

 AWS IoT Jobs 服務會在服務收到任務執行請求`GetPendingJobExecution`時，使用 `eventType` 的 產生日誌項目。

#### GetPendingJobExecution 日誌項目範例
<a name="log-job-get-pending-job-ex.example"></a>

```
{
    "timestamp": "2018-06-13 17:45:17.197",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "GetPendingJobExecution",
    "protocol": "MQTT",
    "clientId": "299966ad-54de-40b4-99d3-4fc8b52da0c5",
    "topicName": "$aws/things/299966ad-54de-40b4-99d3-4fc8b52da0c5/jobs/get",
    "clientToken": "24b9a741-15a7-44fc-bd3c-1ff2e34e5e82",
    "details": "The request status is SUCCESS."
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`GetPendingJobExecution`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

clientToken  
用以確保請求冪等的，是一個唯一、區分大小寫的識別符。如需詳細資訊，請參閱[如何確保冪等](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

詳細資訊  
任務裝置的其他資訊。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

topicName  
訂閱主題的名稱。

### ReportFinalJobExecutionCount 日誌項目
<a name="log-job-report-final-job-ex-count"></a>

 AWS IoT Jobs 服務會在任務完成`ReportFinalJobExecutionCount`時，使用 `entryType` 的 產生日誌項目。

#### ReportFinalJobExecutionCount 日誌項目範例
<a name="log-job-report-final-job-ex-count.example"></a>

```
{
    "timestamp": "2017-08-10 19:44:16.776",
    "logLevel": "INFO",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "ReportFinalJobExecutionCount",
    "jobId": "002",
    "details": "Job 002 completed. QUEUED job execution count: 0 IN_PROGRESS job execution count: 0 FAILED job execution count: 0 SUCCEEDED job execution count: 1 CANCELED job execution count: 0 REJECTED job execution count: 0 REMOVED job execution count: 0"
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`ReportFinalJobExecutionCount`日誌項目還包含下列屬性：

詳細資訊  
任務裝置的其他資訊。

jobId  
任務執行的任務 ID。

### StartNextPendingJobExecution 日誌項目
<a name="log-job-start-next-pending-job-ex"></a>

當它收到啟動下一個待定任務執行的請求時， AWS IoT 任務服務會產生具有 之 `eventType`的日誌項目`StartNextPendingJobExecution`。

#### StartNextPendingJobExecution 日誌項目範例
<a name="log-job-start-next-pending-job-ex.example"></a>

```
{
    "timestamp": "2018-06-13 17:49:51.036",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "StartNextPendingJobExecution",
    "protocol": "MQTT",
    "clientId": "95c47808-b1ca-4794-bc68-a588d6d9216c",
    "topicName": "$aws/things/95c47808-b1ca-4794-bc68-a588d6d9216c/jobs/start-next",
    "clientToken": "bd7447c4-3a05-49f4-8517-dd89b2c68d94",
    "details": "The request status is SUCCESS."
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`StartNextPendingJobExecution`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

clientToken  
用以確保請求冪等的，是一個唯一、區分大小寫的識別符。如需詳細資訊，請參閱[如何確保冪等](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

詳細資訊  
任務裝置的其他資訊。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

topicName  
用來提出請求的主題。

### UpdateJobExecution 日誌項目
<a name="log-job-update-job-ex"></a>

 AWS IoT Jobs 服務會在服務收到更新任務執行的請求`UpdateJobExecution`時，使用 `eventType` 的 產生日誌項目。

#### UpdateJobExecution 日誌項目範例
<a name="log-job-update-job-ex.example"></a>

```
{
    "timestamp": "2017-08-10 19:25:14.758",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "UpdateJobExecution",
    "protocol": "MQTT",
    "clientId": "thingOne",
    "jobId": "002",
    "topicName": "$aws/things/thingOne/jobs/002/update",
    "clientToken": "myClientToken",
    "versionNumber": "1",
    "details": "The destination status is IN_PROGRESS. The request status is SUCCESS."
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`UpdateJobExecution`日誌項目還包含下列屬性：

clientId  
提出請求的用戶端 ID。

clientToken  
用以確保請求冪等的，是一個唯一、區分大小寫的識別符。如需詳細資訊，請參閱[如何確保冪等](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

詳細資訊  
任務裝置的其他資訊。

jobId  
任務執行的任務 ID。

protocol  
用來提出要求的協定。有效值為 `MQTT` 或 `HTTP`。

topicName  
用來提出請求的主題。

versionNumber  
任務執行的版本。

## 裝置佈建日誌項目
<a name="provision-logs"></a>

 AWS IoT 裝置佈建服務會產生下列事件的日誌。

**Topics**
+ [GetDeviceCredentials 日誌項目](#log-provision-get-device-credentials)
+ [ProvisionDevice 日誌項目](#log-provision-provision-device)

### GetDeviceCredentials 日誌項目
<a name="log-provision-get-device-credentials"></a>

 AWS IoT 裝置佈建服務會在用戶端呼叫 `GetDeviceCredential`時，使用 `eventType` 的 產生日誌項目`GetDeviceCredential`。



#### GetDeviceCredentials 日誌項目範例
<a name="log-provision-get-device-credentials.example"></a>

```
{
  "timestamp" : "2019-02-20 20:31:22.932",
  "logLevel" : "INFO",
  "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405",
  "accountId" : "123456789101",
  "status" : "Success",
  "eventType" : "GetDeviceCredentials",
  "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "details" : "Additional details about this log."
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`GetDeviceCredentials`日誌項目還包含下列屬性：

詳細資訊  
錯誤的簡要說明。

deviceCertificateId  
裝置憑證的 ID。

### ProvisionDevice 日誌項目
<a name="log-provision-provision-device"></a>

 AWS IoT 裝置佈建服務會在用戶端呼叫 `ProvisionDevice`時，使用 `eventType` 的 產生日誌項目`ProvisionDevice`。

#### ProvisionDevice 日誌項目範例
<a name="log-provision-provision-device.example"></a>

```
{
  "timestamp" : "2019-02-20 20:31:22.932",
  "logLevel" : "INFO",
  "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405",
  "accountId" : "123456789101",
  "status" : "Success",
  "eventType" : "ProvisionDevice",
  "provisioningTemplateName" : "myTemplate",
  "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "details" : "Additional details about this log."
 }
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`ProvisionDevice`日誌項目還包含下列屬性：

詳細資訊  
錯誤的簡要說明。

deviceCertificateId  
裝置憑證的 ID。

provisioningTemplateName  
佈建範本的名稱。

## 動態物件群組日誌項目
<a name="dynamic-group-logs"></a>

AWS IoT 動態物件群組會為下列事件產生日誌。

**Topics**
+ [AddThingToDynamicThingGroupsFailed 日誌項目](#log-dynthing-add-thing-to-dynamic-thing-groups-failed)

### AddThingToDynamicThingGroupsFailed 日誌項目
<a name="log-dynthing-add-thing-to-dynamic-thing-groups-failed"></a>

當 AWS IoT 無法將物件新增至指定的動態群組時，會產生具有 之 `eventType`的日誌項目`AddThingToDynamicThingGroupsFailed`。這會在物件符合要在動態物件群組中的準則時發生；不過，它無法加入至動態群組，或從動態群組中移除。發生這種情況的原因是：
+ 事情已經屬於群組的最大數量。
+ **--override-dynamic-groups** 選項用於將物件新增到靜態物件群組。它已經從動態物件群組中移除，使之成為可能。

如需詳細資訊，請參閱[動態物件群組限制與衝突](dynamic-thing-groups.md#dynamic-thing-group-limitations)。

#### AddThingToDynamicThingGroupsFailed 日誌項目範例
<a name="log-dynthing-add-thing-to-dynamic-thing-groups-failed.example"></a>

此範例顯示 `AddThingToDynamicThingGroupsFailed` 錯誤的日誌項目。在此範例中，*TestThing* 符合 `dynamicThingGroupNames` 中列出的動態物件群組中的準則，但無法加入到那些動態群組中，如 `reason` 所述。

```
{
 "timestamp": "2020-03-16 22:24:43.804",
 "logLevel": "ERROR",
 "traceId": "70b1f2f5-d95e-f897-9dcc-31e68c3e1a30",
 "accountId": "57EXAMPLE833",
 "status": "Failure",
 "eventType": "AddThingToDynamicThingGroupsFailed",
 "thingName": "TestThing",
 "dynamicThingGroupNames": [
  "DynamicThingGroup11",
  "DynamicThingGroup12",
  "DynamicThingGroup13",
  "DynamicThingGroup14"
 ],
 "reason": "The thing failed to be added to the given dynamic thing group(s) because the thing already belongs to the maximum allowed number of groups."
}
```

除了 [常用 CloudWatch Logs 屬性](#cwl-common-attributes) 之外，`AddThingToDynamicThingGroupsFailed`日誌項目還包含下列屬性：

dynamicThingGroupNames  
無法新增物件的動態物件群組的陣列。

reason  
物件無法新增到動態物件群組的原因。

thingName  
無法新增至動態物件群組的物件名稱。

## 機群索引日誌項目
<a name="fleet-indexing-logs"></a>

AWS IoT 機群索引會為下列事件產生日誌項目。

**Topics**
+ [NamedShadowCountForDynamicGroupQueryLimitExceeded 日誌項目](#log-named-shadow-dynamic-group)

### NamedShadowCountForDynamicGroupQueryLimitExceeded 日誌項目
<a name="log-named-shadow-dynamic-group"></a>

對於動態群組中並非特定於資料來源的查詢術語，每個物件最多處理 25 個已命名影子。當物件違反此限制時，會發出 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 事件類型。

#### NamedShadowCountForDynamicGroupQueryLimitExceeded 日誌項目範例
<a name="log-named-shadow-dynamic-group.example"></a>

此範例顯示 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 錯誤的日誌項目。在此範例中，基於 `DynamicGroup` 的所有值結果可能不正確，如 `reason` 欄位中所述。

```
{
"timestamp": "2020-03-16 22:24:43.804",
"logLevel": "ERROR",
"traceId": "70b1f2f5-d95e-f897-9dcc-31e68c3e1a30",
"accountId": "571032923833",
"status": "Failure",
"eventType": "NamedShadowCountForDynamicGroupQueryLimitExceeded",
"thingName": "TestThing",
"reason": "A maximum of 25 named shadows per thing are processed for non-data source specific query terms in dynamic groups."
}
```

## 常用 CloudWatch Logs 屬性
<a name="cwl-common-attributes"></a>

所有 CloudWatch Logs 記錄項目皆包含下列這些屬性：

accountId  
您的 AWS 帳戶 ID。

eventType  
產生日誌的事件類型。事件類型的值會根據產生該日誌項目的事件而定。每個日誌項目說明都包含該 `eventType` 日誌項目的值。

logLevel  
使用的日誌層級。如需詳細資訊，請參閱 [日誌層級](configure-logging.md#log-level)。

status  
請求的狀態。

timestamp  
用戶端連線至 AWS IoT 訊息代理程式時，人類看得懂的 UTC 時間戳記。

traceId  
隨機產生的識別符，可用於建立某個特定請求的所有日誌的關聯性。

# 將裝置端日誌上傳到 Amazon CloudWatch
<a name="upload-device-logs-to-cloudwatch"></a>

您可以將裝置端的歷史日誌上傳到 Amazon CloudWatch，以現場監控和分析裝置的活動。設備端日誌可以包括系統、應用程式和裝置日誌檔案。此程序使用 CloudWatch Logs 規則動作參數，將裝置端日誌發佈至客戶定義的[日誌群組](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

## 運作方式
<a name="upload-process-overview"></a>

當 AWS IoT 裝置傳送包含格式化日誌檔案的 MQTT 訊息至 AWS IoT 主題時，程序就會開始。 AWS IoT 規則會監控訊息主題，並將日誌檔案傳送至您定義的 CloudWatch Logs 群組。然後，您可以檢閱和分析資訊。

**Topics**
+ [MQTT 主題](#upload-mqtt-topics-overview)
+ [規則動作](#upload-rule-action-overview)

### MQTT 主題
<a name="upload-mqtt-topics-overview"></a>

選擇您將用來發佈日誌的 MQTT 主題名稱空間。我們建議將此格式用於共同主題空間 `$aws/rules/things/thing_name/logs`，並將此格式用於錯誤主題 `$aws/rules/things/thing_name/logs/errors`。建議使用日誌和錯誤主題的命名結構，但並非必要。如需詳細資訊，請參閱[設計 AWS IoT Core的 MQTT 主題](https://docs.aws.amazon.com/whitepapers/latest/designing-mqtt-topics-aws-iot-core/designing-mqtt-topics-aws-iot-core.html)。

透過使用建議的常見主題空間，您可以使用 AWS IoT 基本擷取預留主題。 AWS IoT 基本擷取會將裝置資料安全地傳送至 AWS IoT 規則動作支援 AWS 的服務。基本擷取會從擷取路徑移除發佈/訂閱訊息代理程式，因此更具成本效益。如需詳細資訊，請參閱[使用基本擷取減少簡訊費](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)。

如果您使用批次模式來上傳日誌檔案，您的訊息必須遵循包含 UNIX 時間戳記和訊息的特定格式。如需詳細資訊，請參閱 [CloudWatch Logs 規則動作](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html)中的[批次模式 MQTT 訊息格式要求](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html#cloudwatch-logs-rule-action-message-format)主題。

### 規則動作
<a name="upload-rule-action-overview"></a>

當 從用戶端裝置 AWS IoT 接收 MQTT 訊息時， AWS IoT 規則會監控客戶定義的主題，並將內容發佈至您定義的 CloudWatch 日誌群組。此程序使用 CloudWatch Logs 檔規則動作來監控 MQTT 是否有日誌檔案批次。如需詳細資訊，請參閱 [CloudWatch Logs](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html) AWS IoT 規則動作。

#### 批次模式
<a name="upload-batch-mode-overview"></a>

 `batchMode` 是 AWS IoT CloudWatch Logs 規則動作中的布林值參數。這個參數是可選的，預設情況下是 off (`false`)。若要批次上傳裝置端日誌檔案，您必須在建立 AWS IoT 規則時開啟此參數 (`true`)。如需詳細資訊，請參閱 [AWS IoT 規則動作](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html)區段中的 [CloudWatch Logs](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html)。

# 使用 AWS IoT 規則上傳裝置端日誌
<a name="uploading-logs-rules-action-procedure"></a>

您可以使用 AWS IoT 規則引擎，將現有裝置端日誌檔案 （系統、應用程式和裝置用戶端日誌） 的日誌記錄上傳至 Amazon CloudWatch。當裝置端日誌發佈到 MQTT 主題時，CloudWatch Logs 規則動作會將訊息傳輸到 CloudWatch Logs。此程序概述如何使用規則動作 `batchMode` 參數開啟 (設定為 `true`) 來批次上傳裝置日誌。

若要開始將裝置端日誌上傳到 CloudWatch，請完成下列先決條件。

## 先決條件
<a name="uploading-logs-rules-prerequisites"></a>

開始之前，請執行以下動作：
+ 建立至少一個向 註冊 AWS IoT Core 為 AWS IoT 物件的目標 IoT 裝置。如需詳細資訊，請參閱[建立物件](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing)。
+ 判斷用於擷取和錯誤的 MQTT 主題空間。如需 MQTT 主題和建議命名慣例的詳細資訊，請參閱[將裝置端日誌上傳到 Amazon CloudWatch](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html) 中的 [MQTT 主題](upload-device-logs-to-cloudwatch.md#upload-mqtt-topics-overview) [MQTT 主題](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html#upload-mqtt-topics-overview)一節。

如需這些先決條件的詳細資訊，請參閱[將裝置端日誌上傳至 CloudWatch](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch)。

## 建立 CloudWatch 日誌群組
<a name="uploading-logs-rules-setup-log-group"></a>

若要建立 CloudWatch 日誌群組，請完成以下步驟。根據您偏好透過 AWS 管理主控台 或 AWS Command Line Interface () 執行步驟，選擇適當的索引標籤AWS CLI。

------
#### [ AWS 管理主控台 ]

**使用 建立 CloudWatch 日誌群組 AWS 管理主控台**

1. 開啟 AWS 管理主控台 並導覽至 [CloudWatch](https://console.aws.amazon.com//cloudwatch)。

1. 在導覽列上，選擇 **Logs** (日誌)，然後選擇 **Log groups** (日誌群組)。

1. 選擇 **Create log group** (建立日誌群組)。

1. 更新 **Log group name** (日誌群組名稱)，並選擇性地更新 **Retention settings** (保留設定) 欄位。

1. 選擇**建立**。

------
#### [ AWS CLI ]

**使用 建立 CloudWatch 日誌群組 AWS CLI**

1. 若要建立日誌群組，請執行以下命令。如需詳細資訊，請參閱 AWS CLI v2 命令參考` [create-log-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/create-log-group.html) `中的 。

   將範例 (`uploadLogsGroup`) 中的日誌群組名稱取代為您偏好的名稱。

   ```
   aws logs create-log-group --log-group-name uploadLogsGroup
   ```

1. 若要確認日誌群組已正確建立，請執行下列命令。

   ```
   aws logs describe-log-groups --log-group-name-prefix uploadLogsGroup
   ```

   輸出範例：

   ```
   {
       "logGroups": [
           {
               "logGroupName": "uploadLogsGroup",
               "creationTime": 1674521804657,
               "metricFilterCount": 0,
               "arn": "arn:aws:logs:us-east-1:111122223333:log-group:uploadLogsGroup:*",
               "storedBytes": 0
           }
       ]
   }
   ```

------

## 建立主題規則
<a name="uploading-logs-rules-setup-topic-rule"></a>

若要建立 AWS IoT 規則，請完成下列步驟。根據您偏好透過 AWS 管理主控台 或 AWS Command Line Interface () 執行步驟，選擇適當的索引標籤AWS CLI。

------
#### [ AWS 管理主控台 ]

**使用 建立主題規則 AWS 管理主控台**

1. 開啟規則中樞。

   1. 開啟 AWS 管理主控台 並導覽至 [AWS IoT](https://console.aws.amazon.com/iot)。

   1. 在導覽列上，選擇 **Message routing** (訊息路由)，然後選擇 **Rules** (規則)。

   1. 選擇**建立規則**。

1. 輸入規則屬性。

   1. 輸入英數字元的 **Rule name** (規則名稱)。

   1. (選擇性) 輸入 **Rule description** (規則描述) 和 **Tags** (標籤)。

   1. 選擇**下一步**。

1. 輸入 SQL 陳述式。

   1. 使用您為擷取定義的 MQTT 主題輸入 SQL 敘述句。

      例如 `SELECT * FROM '$aws/rules/things/thing_name/logs' ` 

   1. 選擇**下一步**。

1. 輸入規則動作。

   1. 在 **Action 1** (動作 1) 選單中，選擇 **CloudWatch logs** (CloudWatch 日誌)。

   1. 選擇 **Log group name** (日誌群組名稱)，然後選擇您建立的日誌群組。

   1. 選取 **Use batch mode** (使用批次模式)。

   1. 指定規則的 IAM 角色。

      如果您擁有規則的 IAM 角色，請執行下列動作。

      1. 在 **IAM role** (IAM 角色) 選單上，選擇您的 IAM 角色。

      如果您沒有規則的 IAM 角色，請執行下列動作。

      1. 選擇 **Create new role** (建立新角色)。

      1. 在 **Role name** (角色名稱) 中，輸入唯一的名稱，然後選擇 **Create** (建立)。

      1. 確認 **IMA role** (IAM 角色) 欄位中的 IAM 角色 名稱是否正確。

   1. 選擇**下一步**。

1. 檢閱範本組態。

   1. 檢閱 Job 範本的設定，以確認其正確無誤。

   1. 完成時，選擇 **Create (建立)**。

------
#### [ AWS CLI ]

**使用 建立 IAM 角色和主題規則 AWS CLI**

1. 建立授予 AWS IoT 規則權限的 IAM 角色。

   1. 建立 IAM 政策。

      若要建立 IAM 政策，請執行下列命令。請務必更新 `policy-name` 參數值。如需詳細資訊，請參閱 AWS CLI v2 命令參考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html)中的 。
**注意**  
如果您使用的是 Microsoft Windows 作業系統，您可能需要將行尾標記 (\$1) 取代為勾號 (`) 或其他字元。

      ```
      aws iam create-policy \
          --policy-name uploadLogsPolicy \
          --policy-document \
      '{
          "Version": "2012-10-17",		 	 	 
          "Statement": {
              "Effect": "Allow",
              "Action": [
                  "iot:CreateTopicRule",
                  "iot:Publish",
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents",
                  "logs:GetLogEvents"
              ],
              "Resource": "*"
          }
      }'
      ```

   1. 將政策 ARN 從輸出複製到文字編輯器中。

      輸出範例：

      ```
      {
          "Policy": {
              "PolicyName": "uploadLogsPolicy",
              "PermissionsBoundaryUsageCount": 0,
              "CreateDate": "2023-01-23T18:30:10Z",
              "AttachmentCount": 0,
              "IsAttachable": true,
              "PolicyId": "AAABBBCCCDDDEEEFFFGGG",
              "DefaultVersionId": "v1",
              "Path": "/",
              "Arn": "arn:aws:iam::111122223333:policy/uploadLogsPolicy",
              "UpdateDate": "2023-01-23T18:30:10Z"
          }
      }
      ```

   1. 建立 IAM 角色和信任政策。

      若要建立 IAM 政策，請執行下列命令。請務必更新 `role-name` 參數值。如需詳細資訊，請參閱 AWS CLI v2 命令參考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html)中的 。

      ```
      aws iam create-role \
      --role-name uploadLogsRole \
      --assume-role-policy-document \
      '{
          "Version": "2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "iot.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }'
      ```

   1. 將 IAM 政策連接至角色。

      若要建立 IAM 政策，請執行下列命令。請務必更新 `role-name` 和 `policy-arn` 參數值。如需詳細資訊，請參閱 AWS CLI v2 命令參考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)中的 。

      ```
      aws iam attach-role-policy \
      --role-name uploadLogsRole \
      --policy-arn arn:aws:iam::111122223333:policy/uploadLogsPolicy
      ```

   1. 檢閱角色。

      若要確認 IAM 角色已正確建立，請執行下列命令。請務必更新 `role-name` 參數值。如需詳細資訊，請參閱 AWS CLI v2 命令參考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-role.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-role.html)中的 。

      ```
      aws iam get-role --role-name uploadLogsRole
      ```

      輸出範例：

      ```
      {
          "Role": {
              "Path": "/",
              "RoleName": "uploadLogsRole",
              "RoleId": "AAABBBCCCDDDEEEFFFGGG",
              "Arn": "arn:aws:iam::111122223333:role/uploadLogsRole",
              "CreateDate": "2023-01-23T19:17:15+00:00",
              "AssumeRolePolicyDocument": {
                  "Version": "2012-10-17",		 	 	 
                  "Statement": [
                      {
                          "Sid": "Statement1",
                          "Effect": "Allow",
                          "Principal": {
                              "Service": "iot.amazonaws.com"
                          },
                          "Action": "sts:AssumeRole"
                      }
                  ]
              },
              "Description": "",
              "MaxSessionDuration": 3600,
              "RoleLastUsed": {}
          }
      }
      ```

1. 在 中建立 AWS IoT 主題規則 AWS CLI。

   1. 若要建立 AWS IoT 主題規則，請執行下列命令。請務必更新 `--rule-name`、`sql` 陳述式`description``roleARN `、 和 `logGroupName` 參數值。如需詳細資訊，請參閱 AWS CLI v2 命令參考中的 [create-topic-rule](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/iot/create-topic-rule.html)。

      ```
      aws iot create-topic-rule \
      --rule-name uploadLogsRule \
      --topic-rule-payload \
      	'{
      		"sql":"SELECT * FROM 'rules/things/thing_name/logs'",
      		"description":"Upload logs test rule",
      		"ruleDisabled":false,
      		"awsIotSqlVersion":"2016-03-23",
      		"actions":[
      			{"cloudwatchLogs":
      				{"roleArn":"arn:aws:iam::111122223333:role/uploadLogsRole",
      				"logGroupName":"uploadLogsGroup",
      				"batchMode":true}
      				}
      			]
      }'
      ```

   1. 若要確認規則已正確建立，請執行下列命令。請務必更新 `role-name` 參數值。如需詳細資訊，請參閱 AWS CLI v2 命令參考中的 [get-topic-rule](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/iot/get-topic-rule.html)。

      ```
      aws iot get-topic-rule --rule-name uploadLogsRule
      ```

      輸出範例：

      ```
      {
          "ruleArn": "arn:aws:iot:us-east-1:111122223333:rule/uploadLogsRule",
          "rule": {
              "ruleName": "uploadLogsRule",
              "sql": "SELECT * FROM rules/things/thing_name/logs",
              "description": "Upload logs test rule",
              "createdAt": "2023-01-24T16:28:15+00:00",
              "actions": [
                  {
                      "cloudwatchLogs": {
                          "roleArn": "arn:aws:iam::111122223333:role/uploadLogsRole",
                          "logGroupName": "uploadLogsGroup",
                          "batchMode": true
                      }
                  }
              ],
              "ruleDisabled": false,
              "awsIotSqlVersion": "2016-03-23"
          }
      }
      ```

------

## 將裝置端日誌傳送至 AWS IoT
<a name="uploading-logs-rules-start-messages"></a>

**將裝置端日誌傳送至 AWS IoT**

1. 若要將歷史日誌傳送到 AWS IoT，請與您的裝置通訊，以確保下列事項。
   + 日誌資訊會傳送至此程序的 *Prerequisites* (必要條件) 區段中所指定的正確主題命名空間。

     例如 `$aws/rules/things/thing_name/logs` 
   + MQTT 訊息承載已正確格式化。如需 MQTT 主題和建議命名慣例的詳細資訊，請參閱 中的[MQTT 主題](upload-device-logs-to-cloudwatch.md#upload-mqtt-topics-overview)一節[將裝置端日誌上傳到 Amazon CloudWatch](upload-device-logs-to-cloudwatch.md)。

1. 確認 MQTT 訊息已在 AWS IoT MQTT 用戶端內接收。

   1. 開啟 AWS 管理主控台 並導覽至 [AWS IoT](https://console.aws.amazon.com/iot/home)。

   1. 若要檢視 **MQTT 測試用戶端**，請在導覽列上選擇**測試**、**MQTT 測試用戶端**。

   1. 對於**訂閱主題****主題主題篩選條件**，輸入*主題命名空間*。

   1. 選擇 **Subscribe (訂閱)**。

      MQTT 訊息會顯示在 **Subscriptions** (訂閱) 與 **Topic** (主題) 表格中，如下所示。這些訊息可能需要 5 分鐘才會顯示。  
![\[MQTT 訊息會出現在訂閱和主題表格中。\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/images/uploading-logs-rules-start-messages-sample-mqtt.png)

## 檢視日誌資料
<a name="uploading-logs-rules-review-cloudwatch"></a>

**檢閱 CloudWatch Logs 中的日誌紀錄**

1. 開啟 AWS 管理主控台，然後導覽至 [CloudWatch](https://console.aws.amazon.com/cloudwatch)。

1. 在導覽列上，選擇 **Logs**、**Logs Insights**。

1. 在**選取日誌群組 (Select log group) **功能表中，選擇您在 AWS IoT 規則中指定的日誌群組。

1. 在 **Logs insights** (日誌深入解析) 頁面上，選擇 **Run query** (執行查詢)。

# 使用 記錄 AWS IoT API 呼叫 AWS CloudTrail
<a name="iot-using-cloudtrail"></a>

AWS IoT 已與 服務整合 AWS CloudTrail，此服務可提供使用者、角色或 AWS 服務在其中採取之動作的記錄 AWS IoT。CloudTrail 會將 的所有 API 呼叫擷取 AWS IoT 為事件，包括來自 AWS IoT 主控台的呼叫，以及來自對 AWS IoT APIs的程式碼呼叫。如果您建立線索，您可以將 CloudTrail 事件持續交付至 Amazon S3 儲存貯體，包括 的事件 AWS IoT。即使您未設定追蹤，依然可以透過 CloudTrail 主控台中的**事件歷史記錄**檢視最新事件。您可以使用 CloudTrail 所收集的資訊來判斷提出的請求 AWS IoT、提出請求的 IP 地址、提出請求的人員、提出請求的時間，以及其他詳細資訊。

若要進一步了解 CloudTrail，請參閱[AWS CloudTrail 《使用者指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## AWS IoT CloudTrail 中的資訊
<a name="aws-iot-info-in-cloudtrail"></a>

當您建立帳戶 AWS 帳戶 時，您的 上會啟用 CloudTrail。當活動在 中發生時 AWS IoT，該活動會與**事件歷史記錄**中的其他 AWS 服務事件一起記錄在 CloudTrail 事件中。您可以在 中檢視、搜尋和下載最近的事件 AWS 帳戶。如需詳細資訊，請參閱《使用 CloudTrail 事件歷史記錄檢視事件》[https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

如需您 AWS 帳戶帳戶中正在進行事件的記錄 (包含 AWS IoT的事件)，請建立追蹤。線索能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。根據預設，當您在主控台中建立線索時，線索會套用至所有 AWS 區域。線索會記錄 AWS 分割區中所有 AWS 區域的事件，並將日誌檔案傳送到您指定的 Amazon S3 儲存貯體。您可以設定其他 AWS 服務，以進一步分析和處理 CloudTrail 日誌中收集的事件資料。如需詳細資訊，請參閱：
+  [建立追蹤的概觀](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) 
+  [CloudTrail 支援的服務和整合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations) 
+  [設定 CloudTrail 的 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html) 
+  [從多個區域接收 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)，以及[從多個帳戶接收 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html) 

**注意**  
AWS IoT CloudTrail 不會記錄資料平面動作 （裝置端）。使用 CloudWatch 監控這些動作。

一般而言，CloudTrail 會記錄進行變更的 AWS IoT 控制平面動作。**CreateThing**、**CreateKeysAndCertificate** 和 **UpdateCertificate** 等呼叫會離開 CloudTrail 項目，而 **ListThings** 和 **ListTopicRules** 等呼叫則不會。

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項：
+ 該請求是否使用根或 IAM 使用者憑證提出。
+ 提出該請求時，是否使用了特定角色或聯合身分使用者的暫時安全憑證。
+ 請求是否由其他 AWS 服務提出。

如需詳細資訊，請參閱 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

AWS IoT 動作記錄在 [AWS IoT API 參考](https://docs.aws.amazon.com/iot/latest/apireference/)中。 AWS IoT Wireless 動作記錄在 [AWS IoT Wireless API 參考](https://docs.aws.amazon.com/iot-wireless/latest/apireference/welcome.html)中。

## 了解 AWS IoT 日誌檔案項目
<a name="understanding-aws-iot-entries"></a>

追蹤是一種組態，能讓事件以日誌檔案的形式交付到您指定的 Amazon S3 儲存貯體。CloudTrail 日誌檔案包含一或多個日誌專案。一個事件為任何來源提出的單一請求，並包含請求動作、請求的日期和時間、請求參數等資訊。CloudTrail 日誌檔案並非依公有 API 呼叫追蹤記錄的堆疊排序，因此不會以任何特定順序出現。

以下範例顯示的是展示 `AttachPolicy` 動作的 CloudTrail 日誌項目。

```
{
    "timestamp":"1460159496",
    "AdditionalEventData":"",
    "Annotation":"",
    "ApiVersion":"",
    "ErrorCode":"",
    "ErrorMessage":"",
    "EventID":"8bff4fed-c229-4d2d-8264-4ab28a487505",
    "EventName":"AttachPolicy",
    "EventTime":"2016-04-08T23:51:36Z",
    "EventType":"AwsApiCall",
    "ReadOnly":"",
    "RecipientAccountList":"",
    "RequestID":"d4875df2-fde4-11e5-b829-23bf9b56cbcd",
    "RequestParamters":{
        "principal":"arn:aws:iot:us-east-1:123456789012:cert/528ce36e8047f6a75ee51ab7beddb4eb268ad41d2ea881a10b67e8e76924d894",
        "policyName":"ExamplePolicyForIoT"
    },
    "Resources":"",
    "ResponseElements":"",
    "SourceIpAddress":"52.90.213.26",
    "UserAgent":"aws-internal/3",
    "UserIdentity":{
        "type":"AssumedRole",
        "principalId":"AKIAI44QH8DHBEXAMPLE",
        "arn":"arn:aws:sts::12345678912:assumed-role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT/i-35d0a4b6",
        "accountId":"222222222222",
        "accessKeyId":"access-key-id",
        "sessionContext":{
            "attributes":{
                "mfaAuthenticated":"false",
                "creationDate":"Fri Apr 08 23:51:10 UTC 2016"
            },
            "sessionIssuer":{
                "type":"Role",
                "principalId":"AKIAI44QH8DHBEXAMPLE",
                "arn":"arn:aws:iam::123456789012:role/executionServiceEC2Role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT",
                "accountId":"222222222222",
                "userName":"iotmonitor-us-east-1-InstanceRole-1C5T1YCYMHPYT"
            }
        },
        "invokedBy":{
            "serviceAccountId":"111111111111"
        }
    },
    "VpcEndpointId":""
}
```