

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

# AWS IoT SiteWise Edge 閘道的 OPC UA 資料來源
<a name="configure-sources-opcua"></a>

設定 AWS IoT SiteWise Edge 閘道之後，您可以設定資料來源，以便 SiteWise Edge 閘道可以從本機工業設備擷取資料 AWS IoT SiteWise。每個來源都代表本機伺服器，例如您的 SiteWise Edge 閘道連線和擷取工業資料串流的 OPC UA 伺服器。如需設定 SiteWise Edge 閘道的詳細資訊，請參閱 [建立自我託管 SiteWise Edge 閘道](create-gateway-ggv2.md)。

閘道類型、啟用 MQTT 的 V3 閘道與 Classic 串流、V2 閘道，會影響 OPC UA 資料的處理方式。在 Classic 串流中，V2 閘道會將 OPC UA 資料來源直接新增至閘道 IoT SiteWise 發佈者組態。每個資料來源都會與閘道結合，並針對每個來源個別設定資料路由。相反地，使用啟用 MQTT 的 V3 閘道，OPC UA 資料來源會轉換為 MQTT 主題，並透過集中式目的地進行管理。如需每種類型的詳細資訊，請參閱 [啟用 MQTT 的 AWS IoT SiteWise Edge V3 閘道](mqtt-enabled-v3-gateway.md)和 [傳統串流、適用於 AWS IoT SiteWise Edge 的 V2 閘道](classic-streams-v2-gateway.md)。

**注意**  
AWS IoT SiteWise 每次新增或編輯來源時， 都會重新啟動 SiteWise Edge 閘道。更新來源組態時，您的 SiteWise Edge 閘道不會擷取資料。重新啟動 SiteWise Edge 閘道的時間取決於 SiteWise Edge 閘道來源上的標籤數量。重新啟動時間的範圍可以從幾秒鐘 （對於具有幾個標籤的 SiteWise Edge 閘道） 到幾分鐘 （對於具有許多標籤的 SiteWise Edge 閘道）。

建立來源之後，您可以將資料串流與資產屬性建立關聯。如需建立和使用運作資產的詳細資訊，請參閱[模型工業資產](industrial-asset-models.md)。

您可以檢視 CloudWatch 指標，以驗證資料來源是否已連線 AWS IoT SiteWise。如需詳細資訊，請參閱[AWS IoT Greengrass Version 2 閘道指標](monitor-cloudwatch-metrics.md#gateway-metrics-ggv2)。

目前， AWS IoT SiteWise 支援下列資料來源通訊協定：
+ [OPC UA](https://en.wikipedia.org/wiki/OPC_Unified_Architecture) – 用於工業自動化的machine-to-machine(M2M) 通訊協定。

## 支援其他工業通訊協定
<a name="additional-protocols"></a>

SiteWise Edge 透過與資料來源合作夥伴整合，支援各種工業通訊協定。這些合作夥伴關係可與超過 200 種不同的通訊協定連線，以容納各種工業系統和裝置。

如需可用資料來源合作夥伴的清單，請參閱 [SiteWise Edge 閘道合作夥伴資料來源選項](connect-partner-data-source.md)。

# 在 SiteWise Edge 中設定 OPC UA 來源
<a name="configure-opcua-source"></a>

您可以使用 AWS IoT SiteWise 主控台或 SiteWise Edge 閘道功能來定義 OPC UA 來源，並將其新增至 SiteWise Edge 閘道，以代表本機 OPC UA 伺服器。

**Topics**
+ [設定 OPC UA 來源 （主控台）](#config-opcua-source-console)
+ [設定 OPC UA 來源 (AWS CLI)](#configure-opc-ua-source-cli)

## 設定 OPC UA 來源 （主控台）
<a name="config-opcua-source-console"></a>

您可以使用 主控台，透過下列程序設定 OPC UA 來源。

**注意**  
警告：重複TQVs 可能會導致重複充電。

**使用 AWS IoT SiteWise 主控台設定 OPC UA 來源**

1. 導覽至 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. 在左側導覽中，選擇 **Edge 區段中的 Edge 閘道**。 ****

1. 選取 SiteWise Edge 閘道以新增 OPC UA 來源。

1. 選擇**新增資料來源**。

1. 輸入來源的名稱。

1. 輸入資料來源伺服器的 **Local endpoint (本機端點)**。端點可以是 IP 地址或主機名稱。您也可以將連接埠號碼新增至本機端點。例如，您的本機端點可能如下所示： **opc.tcp://203.0.113.0:49320**

1. （選用） 對於**用於選取的節點 ID**，請新增節點篩選條件，以限制要擷取至 AWS 雲端的資料串流。根據預設，SiteWise Edge 閘道會使用伺服器的根節點來擷取所有資料串流。您可以使用節點篩選條件來減少 SiteWise Edge 閘道的啟動時間和 CPU 使用量，方法是只包含您建模資料的路徑 AWS IoT SiteWise。根據預設，SiteWise Edge 閘道會上傳所有 OPC UA 路徑，但以 開頭的路徑除外`/Server/`。若要定義 OPC UA 節點篩選條件，您可以使用節點路徑和 `*`和 `**` 萬用字元。如需詳細資訊，請參閱[在 SiteWise Edge 中使用 OPC UA 節點篩選條件](opc-ua-node-filters.md)。

1. **目的地**會因啟用 MQTT 的 V3 閘道和 Classic 串流、V2 閘道而有所不同。
   + **傳統蒸汽、V2 閘道目的地**與來源有 1：1 的關係。每個來源都會將資料傳送至特定目的地。
   + **啟用 MQTT 的 V3 閘道目的地**會分別設定，因為中樞和輻條模型可讓您集中設定和管理不同閘道的多個資料來源。若要在 V3 閘道中設定目的地，請參閱 [了解 AWS IoT SiteWise Edge 目的地](gw-destinations.md#source-destination)。

------
#### [ Classic steams, V2 gateway destinations ]
   + **AWS IoT SiteWise 即時** – 選擇此選項以直接將資料傳送至 AWS IoT SiteWise 儲存體。在邊緣即時擷取和監控資料。
   + **AWS IoT SiteWise 使用 Amazon S3 緩衝** – 將 Parquet 格式的資料傳送至 Amazon S3，然後匯入儲存 AWS IoT SiteWise 體。選擇此選項以批次擷取資料，並以經濟實惠的方式存放歷史資料。您可以設定偏好的 Amazon S3 儲存貯體位置，以及您希望將資料上傳至 Amazon S3 的頻率。您也可以選擇在擷取資料之後如何處理資料 AWS IoT SiteWise。您可以選擇在 AWS IoT SiteWise 和 Amazon S3 中同時提供資料，也可以選擇在匯入 Amazon S3 之後自動將其刪除 AWS IoT SiteWise。
     + Amazon S3 儲存貯體是一種預備和緩衝機制，並支援 Parquet 格式的檔案。
     + 如果您選取核取方塊**將 AWS IoT SiteWise 資料匯入儲存**，資料會先上傳到 Amazon S3，然後再上傳到 AWS IoT SiteWise 儲存。
       + 如果您選取核取方塊**從 Amazon S3 刪除資料**，資料會在匯入 SiteWise 儲存體後從 Amazon S3 刪除。
       + 如果您清除核取方塊**從 Amazon S3 刪除資料**，資料會同時儲存在 Amazon S3 和 SiteWise 儲存中。
     + 如果您清除核取方塊**將 AWS IoT SiteWise 資料匯入儲存**，資料只會儲存在 Amazon S3 中。它不會匯入 SiteWise 儲存體。

     [管理資料儲存](manage-data-storage.md) 如需各種儲存選項 AWS IoT SiteWise 的詳細資訊，請造訪 。若要進一步了解定價選項，請參閱[AWS IoT SiteWise 定價](https://aws.amazon.com/iot-sitewise/pricing/)。

      
   + **AWS IoT Greengrass 串流管理員** – AWS IoT Greengrass 使用串流管理員將資料傳送至下列 AWS 雲端目的地： 中的頻道 AWS IoT Analytics、Amazon Kinesis Data Streams 中的串流、 中的資產屬性 AWS IoT SiteWise，或 Amazon Simple Storage Service (Amazon S3) 中的物件。如需詳細資訊，請參閱[《 開發人員指南》中的管理 AWS IoT Greengrass 核心上的資料串流](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-data-streams.html)。 *AWS IoT Greengrass Version 2 *

     輸入 AWS IoT Greengrass 串流的名稱。

------
#### [ MQTT-enabled, V3 gateway destinations ]

   1. [啟用 MQTT 的 AWS IoT SiteWise Edge V3 閘道](mqtt-enabled-v3-gateway.md) 如需新增相關目的地的資訊，請參閱 。

   1. 新增來源目的地後，請返回此程序。

------

1. 在**進階組態**窗格中，您可以執行下列動作：

   1. 針對來源伺服器和 SiteWise Edge 閘道之間的連線和傳輸中的資料，選擇**訊息安全模式**。此欄位是 OPC UA 安全政策和訊息安全模式的組合。選擇您為 OPC UA 伺服器指定的相同安全政策和訊息安全模式。

   1. 如果您的來源需要身分驗證，請從身分**驗證組態**清單中選擇 AWS Secrets Manager 秘密。SiteWise Edge 閘道會在連線至此資料來源時，使用此秘密中的身分驗證憑證。您必須將秘密連接至 SiteWise Edge 閘道的 AWS IoT Greengrass 元件，以將其用於資料來源身分驗證。如需詳細資訊，請參閱[設定 SiteWise Edge 的資料來源身分驗證](configure-source-authentication-ggv2.md)。
**提示**  
您的資料伺服器可能具有稱為 **Allow anonymous login (允許匿名登入)** 的選項。如果此選項為 **Yes (是)**，則您的來源不需要身分驗證。

   1. （選用） 您可以選取啟用資料串流字首 **- *選用*，以啟用資料串流字首**。

      1. 輸入**資料串流字首**。SiteWise Edge 閘道會將此字首新增至來自此來源的所有資料串流。使用資料流前置詞以區分來自不同來源但具有相同名稱的資料串流。您帳戶中的每個資料串流應該都有唯一的名稱。

   1. （選用） 選擇**資料類型轉換**選項，將不支援的 OPC UA 資料類型轉換為字串，然後再將其擷取至 AWS IoT SiteWise。將具有簡單資料類型的陣列值轉換為 JSON 字串，並將 DateTime 資料類型轉換為 ISO 8601 字串。如需詳細資訊，請參閱[轉換不支援的資料類型](string-conversion.md)。

   1. 針對未包含在使用者定義屬性群組中的節點，選擇**預設資料變更觸發**條件。預設資料變更觸發會決定 OPC UA 伺服器何時將更新的值傳送至閘道。您可以選擇下列其中一個選項：
      + **狀態** – 僅在狀態變更時接收資料。
      + **StatusValue** – 在狀態或值變更時接收資料。
      + **StatusValueTimestamp** – 在狀態、值或時間戳記變更時接收資料。

   1. （選用） 在啟用 MQTT 的 V3 閘道上，您可以使用**探索組態**來設定 OPC UA 節點探索程序。探索組態會以主控台型設定取代這些選項的先前組態覆寫檔案系統，這些設定會動態更新，而不需要重新啟動閘道。
**注意**  
**預設資料變更觸發**需要 3.1.0 版或更新版本的 IoT SiteWise OPC UA 收集器元件。如需詳細資訊，請參閱[更新 AWS IoT SiteWise 元件的版本](manage-gateways-ggv2.md#update-component-version)。

      1. 針對**並行瀏覽請求計數上限**，輸入 OPC UA 伺服器可同時處理的瀏覽請求數目上限。每個資料來源最多可設定 500 個並行瀏覽請求。

      1. 針對**每個瀏覽請求的節點計數上限**，輸入每個瀏覽請求中傳送至 OPC UA 伺服器的節點數目上限。每個瀏覽請求最多可以傳送 1，000 個節點。

      1. 選擇**避免節點樹狀結構迴圈**，以防止閘道在瀏覽 OPC UA 伺服器結構時卡在循環參考中。選取時，閘道會追蹤造訪的位置，以避免伺服器節點以循環模式互相參考時發生無限迴圈。

      1. 選擇**啟用節點周遊**，以允許閘道探索 OPC UA 伺服器的完整結構，從設備和裝置探索所有可用的資料點。選取時，閘道會在根層級之外導覽設備的資料組織，以自動尋找所有感應器、控制項和測量點。

      1. 選擇**啟用定期探索**以定期自動執行探索操作，以偵測 OPC UA 伺服器結構中的變更。選取後，閘道會持續監控新新增的設備或資料點，確保自動偵測並可供資料收集使用。

         1. 針對**定期探索間隔**，設定執行定期探索時自動探索操作之間的時間間隔。最小定期探索間隔為 30 秒，最長為 30 天。

         1. 針對**每個間隔探索的節點數量上限**，設定每個探索間隔應探索的節點數量上限。這有助於在探索操作期間控制閘道和 OPC UA 伺服器的負載。

   1. （選用） 對於**屬性群組**，選擇**新增群組**。

      1. 輸入屬性群組**的名稱**。

      1. 對於**屬性**：

         1. 對於**節點路徑**，新增 OPC UA 節點篩選條件以限制要上傳哪些 OPC UA 路徑 AWS IoT SiteWise。格式類似於**用於選取的節點 ID**。

      1. 對於**群組設定**，請執行下列動作：

         1. 針對**資料品質設定**，選擇您希望 AWS IoT SiteWise 收集器擷取的資料品質類型。

         1. 對於**掃描模式設定**，使用**掃描模式**設定標準訂閱屬性。您可以選取**訂閱**或**輪詢**。如需掃描模式的詳細資訊，請參閱 [使用 OPC UA 篩選資料擷取範圍](opcua-data-acquisition.md)。

------
#### [ Subscribe ]

**傳送每個資料點**

            1. 選擇**訂閱**並設定下列項目：

               1. **[資料變更觸發](https://reference.opcfoundation.org/v104/Core/docs/Part4/7.17.2/)** – 啟動資料變更提醒的條件。

               1. **[訂閱佇列大小](https://reference.opcfoundation.org/v104/Core/docs/Part4/7.16/)** – OPC UA 伺服器上特定指標的佇列深度，其中監控項目的通知會排入佇列。

               1. **[訂閱發佈間隔](https://reference.opcfoundation.org/v104/Core/docs/Part4/5.13.2/)** – 建立訂閱時指定的發佈週期間隔 （以毫秒為單位）。

               1. **快照間隔 - *選用*** - 快照頻率逾時設定，以確保 AWS IoT SiteWise Edge 擷取穩定的資料串流。

               1. **掃描速率** – 您希望 SiteWise Edge 閘道讀取暫存器的速率。 AWS IoT SiteWise 會自動計算 SiteWise Edge 閘道允許的最小掃描速率。

               1. **時間戳記** – 要包含在 OPC UA 資料點中的時間戳記。您可以使用伺服器時間戳記或裝置的時間戳記。
**注意**  
使用 IoT SiteWise OPC UA 收集器元件的 2.5.0 版或更新版本。如果您搭配舊版使用時間戳記功能，組態更新會失敗。如需詳細資訊，請參閱[更新 AWS IoT SiteWise 元件的版本](manage-gateways-ggv2.md#update-component-version)。

            1. 在**無效頻帶設定**中，設定**無效頻帶類型**。無效頻帶類型會控制來源傳送至 的資料 AWS IoT SiteWise，以及其捨棄的資料。如需無效頻帶設定的詳細資訊，請參閱 [使用 OPC UA 篩選資料擷取範圍](opcua-data-acquisition.md)。
               + **無** – 關聯的伺服器會傳送此屬性群組的所有資料點。
               + **百分比** – 關聯的伺服器只會傳送超出資料範圍指定百分比的資料。此範圍是由伺服器根據為每個節點定義的工程單位最小值和最大值來計算。如果伺服器不支援百分比無效頻帶或缺少定義的工程單位，閘道會使用下列提供的最小值和最大值來計算範圍。
               + **絕對** – 相關聯的伺服器只會傳送超出特定範圍的資料。

               1. 將 **Deadband 值**設定為 Deadband 的資料範圍百分比。

               1. （選用） 使用最小範圍 **- *選用*和最大範圍 - 選用，指定無效頻帶範圍的最小值****和最大值****。

------
#### [ Poll ]

**在特定間隔傳送資料點**
            + 選擇**輪詢**並設定下列項目：

              1. **掃描速率** – 您希望 SiteWise Edge 閘道讀取 registers 的速率。 AWS IoT SiteWise 會自動計算 SiteWise Edge 閘道的最低允許掃描速率。

              1. **時間戳記** – 要包含在 OPC UA 資料點中的時間戳記。您可以使用伺服器時間戳記或裝置的時間戳記。
**注意**  
使用 IoT SiteWise OPC UA 收集器元件的 3.1.0 版或更新版本。如果您搭配舊版使用時間戳記功能，組態更新會失敗。如需詳細資訊，請參閱[更新 AWS IoT SiteWise 元件的版本](manage-gateways-ggv2.md#update-component-version)。

**注意**  
當您在掃描模式**設定中選取訂閱時，就會套用無效頻帶**設定。 **** ****

------

1. 選擇**儲存**。

## 設定 OPC UA 來源 (AWS CLI)
<a name="configure-opc-ua-source-cli"></a>

您可以使用 為 SiteWise Edge 閘道定義 OPC UA 資料來源 AWS CLI。若要這樣做，請建立 OPC UA 功能組態 JSON 檔案，並使用 [ update-gateway-capability-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotsitewise/update-gateway-capability-configuration.html#) 命令來更新 SiteWise Edge 閘道組態。您必須在單一功能組態中定義所有 OPC UA 來源。

------
#### [ MQTT-enabled, V3 gateway ]

此功能具有下列命名空間。
+ `iotsitewise:opcuacollector:3`

```
{
  "sources": [
    {
      "name": "string",
      "endpoint": {
        "certificateTrust": {
          "type": "TrustAny" | "X509",
          "certificateBody": "string",
          "certificateChain": "string",
        },
        "endpointUri": "string",
        "securityPolicy": "NONE" | "BASIC128_RSA15" | "BASIC256" | "BASIC256_SHA256" | "AES128_SHA256_RSAOAEP" | "AES256_SHA256_RSAPSS",
        "messageSecurityMode": "NONE" | "SIGN" | "SIGN_AND_ENCRYPT",
        "identityProvider": {
          "type": "Anonymous" | "Username",
          "usernameSecretArn": "string"
        },
        "nodeFilterRules": [
          {
            "action": "INCLUDE",
            "definition": {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          }
        ]
      },
      "measurementDataStreamPrefix": "string",
      "typeConversions": {
        "array": "JsonArray",
        "datetime": "ISO8601String"
        },
      "destination": {
        {
          "type":"MQTT"
        }           
      },
      "defaultPropertyGroupConfig": {
        "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP"
      },
      "discoveryConfig": {
        "enableNodeTraversal": true | false,
        "avoidNodeTreeLoops": true | false,
        "maxConcurrentBrowseRequests": integer,
        "maxNodesPerBrowseRequest": integer,
        "periodicDiscovery": {
          "interval": "string",
          "maxNodesDiscoveredPerInterval": integer
        }
      },
      "propertyGroups": [
        {
          "name": "string",
          "nodeFilterRuleDefinitions": [
            {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          ],
          "deadband": {
            "type": "PERCENT" | "ABSOLUTE",
            "value": double,
            "eguMin": double,
            "eguMax": double,
            "timeoutMilliseconds": integer
          },
          "scanMode": {
            "type": "EXCEPTION" | "POLL",
            "rate": integer,
            "timestampToReturn": "SOURCE_TIME" | "SERVER_TIME"
          },
          "dataQuality": {
            "allowGoodQuality": true | false,
            "allowBadQuality": true | false,
            "allowUncertainQuality": true | false
          },
          "subscription": {
            "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP",
            "queueSize": integer,
            "publishingIntervalMilliseconds": integer,
            "snapshotFrequencyMilliseconds": integer
          }  
        }  
      ]  
    }  
  ]  
}
```

------
#### [ Classic streams, V2 gateway ]

此功能具有下列命名空間。
+ `iotsitewise:opcuacollector:2`

請求語法

```
{
  "sources": [
    {
      "name": "string",
      "endpoint": {
        "certificateTrust": {
          "type": "TrustAny" | "X509",
          "certificateBody": "string",
          "certificateChain": "string",
        },
        "endpointUri": "string",
        "securityPolicy": "NONE" | "BASIC128_RSA15" | "BASIC256" | "BASIC256_SHA256" | "AES128_SHA256_RSAOAEP" | "AES256_SHA256_RSAPSS",
        "messageSecurityMode": "NONE" | "SIGN" | "SIGN_AND_ENCRYPT",
        "identityProvider": {
          "type": "Anonymous" | "Username",
          "usernameSecretArn": "string"
        },
        "nodeFilterRules": [
          {
            "action": "INCLUDE",
            "definition": {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          }
        ]
      },
      "measurementDataStreamPrefix": "string",
      "typeConversions": {
        "array": "JsonArray",
        "datetime": "ISO8601String"
        },
      "destination": {
        "type": "StreamManager",
        "streamName": "string",
        "streamBufferSize": integer,                      
      },
      "propertyGroups": [
        {
          "name": "string",
          "nodeFilterRuleDefinitions": [
            {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          ],
          "deadband": {
            "type": "PERCENT" | "ABSOLUTE",
            "value": double,
            "eguMin": double,
            "eguMax": double,
            "timeoutMilliseconds": integer
          },
          "scanMode": {
            "type": "EXCEPTION" | "POLL",
            "rate": integer,
            "timestampToReturn": "SOURCE_TIME" | "SERVER_TIME"
          },
          "dataQuality": {
            "allowGoodQuality": true | false,
            "allowBadQuality": true | false,
            "allowUncertainQuality": true | false
          },
          "subscription": {
            "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP",
            "queueSize": integer,
            "publishingIntervalMilliseconds": integer,
            "snapshotFrequencyMilliseconds": integer
          }  
        }  
      ]  
    }  
  ]  
}
```

------

### 請求內文
<a name="opcua-request-body"></a>

`sources`  
OPC UA 來源定義結構的清單，每個結構都包含下列資訊：    
`name`  
來源的唯一且易記名稱。  
`endpoint`  
包含下列資訊的端點結構：    
`certificateTrust`  
包含下列資訊的憑證信任政策結構：    
`type`  
來源的憑證信任模式。選擇下列其中一項：  
+ `TrustAny` – SiteWise Edge 閘道會在連線到 OPC UA 來源時信任任何憑證。
+ `X509` – SiteWise Edge 閘道會在連線到 OPC UA 來源時信任 X.509 憑證。如果您選擇此選項，則必須在 `certificateTrust` 中定義 `certificateBody`。您也可以 `certificateTrust` 在中定義 `certificateChain`。  
`certificateBody`  
(選用性) X.509 憑證的主體。  
如果您在 `certificateTrust` 中為 `type` 選擇 `X509`，則此欄位為必要。  
`certificateChain`  
(選用) X.509 憑證的信任鏈。  
僅當您在 `certificateTrust` 中為 `type` 選擇 `X509` 的情況下，才會使用此欄位。  
`endpointUri`  
OPC UA 來源的本機端點。例如，您的本機端點可能看起來會像 `opc.tcp://203.0.113.0:49320`。  
`securityPolicy`  
要使用的安全政策，讓您可以保護從 OPC UA 來源讀取的訊息。選擇下列其中一項：  
+ `NONE` – SiteWise Edge 閘道無法保護來自 OPC UA 來源的訊息。我們建議您選擇不同的安全政策。如果您選擇此選項，您也必須為 `messageSecurityMode` 選擇 `NONE`。
+ `BASIC256_SHA256` – `Basic256Sha256`安全政策。
+ `AES128_SHA256_RSAOAEP` – `Aes128_Sha256_RsaOaep`安全政策。
+ `AES256_SHA256_RSAPSS` – `Aes256_Sha256_RsaPss`安全政策。
+ `BASIC128_RSA15` – （已棄用） OPC UA 規格中的`Basic128Rsa15`安全政策已棄用，因為它不再被視為安全。我們建議您選擇不同的安全政策。如需詳細資訊，請參閱[設定檔 SecurityPolicy – Basic128Rsa15](https://profiles.opcfoundation.org/profile/1532)。
+ `BASIC256` – （已棄用） OPC UA 規格中的`Basic256`安全政策已棄用，因為它不再被視為安全。我們建議您選擇不同的安全政策。如需詳細資訊，請參閱 [SecurityPolicy – Basic256](https://profiles.opcfoundation.org/profile/1536)。
如果您選擇 以外的安全政策`NONE`，您必須`SIGN_AND_ENCRYPT`為 選擇 `SIGN`或 `messageSecurityMode`。您也必須將來源伺服器設定為信任 SiteWise Edge 閘道。如需詳細資訊，請參閱[設定 OPC UA 伺服器以信任 AWS IoT SiteWise Edge 閘道](enable-source-trust.md)。  
`messageSecurityMode`  
用於保護 OPC UA 來源連線的訊息安全模式。選擇下列其中一項：  
+ `NONE` – SiteWise Edge 閘道無法保護與 OPC UA 來源的連線。我們建議您選擇不同的訊息安全模式。如果您選擇此選項，您也必須為 `securityPolicy` 選擇 `NONE`。
+ `SIGN` – SiteWise Edge 閘道與 OPC UA 來源之間傳輸中的資料已簽署但未加密。
+ `SIGN_AND_ENCRYPT` – 閘道與 OPC UA 來源之間傳輸中的資料會經過簽署和加密。
如果您選擇 以外的訊息安全模式`NONE`，則必須選擇 `securityPolicy`以外的 `NONE`。您也必須將來源伺服器設定為信任 SiteWise Edge 閘道。如需詳細資訊，請參閱[設定 OPC UA 伺服器以信任 AWS IoT SiteWise Edge 閘道](enable-source-trust.md)。  
`identityProvider`  
包含下列資訊的身分提供者結構：    
`type`  
來源所需的身分驗證登入資料類型。選擇下列其中一項：  
+ `Anonymous` – 來源不需要身分驗證即可連線。
+ `Username` – 來源需要使用者名稱和密碼才能連線。如果您選擇此選項，則必須在 `identityProvider` 中定義 `usernameSecretArn`。  
`usernameSecretArn`  
（選用） AWS Secrets Manager 秘密的 ARN。SiteWise Edge 閘道會在連線至此來源時，使用此秘密中的身分驗證憑證。您必須將秘密連接到 SiteWise Edge 閘道的 IoT SiteWise 連接器，以將其用於來源身分驗證。如需詳細資訊，請參閱[設定 SiteWise Edge 的資料來源身分驗證](configure-source-authentication-ggv2.md)。  
如果您在 `identityProvider` 中為 `type` 選擇 `Username`，則此欄位為必要。  
`nodeFilterRules`  
定義傳送至 AWS 雲端之 OPC UA 資料串流路徑的節點篩選規則結構清單。您可以使用節點篩選條件來減少 SiteWise Edge 閘道的啟動時間和 CPU 使用量，方法是只包含建立模型的資料路徑 AWS IoT SiteWise。根據預設，SiteWise Edge 閘道會上傳開頭為 的所有 OPC UA 路徑`/Server/`。若要定義 OPC UA 節點篩選條件，您可以使用節點路徑和 `*`和 `**` 萬用字元。如需詳細資訊，請參閱[在 SiteWise Edge 中使用 OPC UA 節點篩選條件](opc-ua-node-filters.md)。  
清單中的每個結構都必須包含下列資訊：    
`action`  
此節點篩選規則的動作。您可以選擇下列選項：  
+ `INCLUDE` – SiteWise Edge 閘道僅包含符合此規則的資料串流。  
`definition`  
包含下列資訊的節點篩選規則結構：    
`type`  
此規則的節點篩選路徑類型。您可以選擇下列選項：  
+ `OpcUaRootPath` – SiteWise Edge 閘道會根據 OPC UA 路徑階層的根目錄評估此節點篩選路徑。  
`rootPath`  
針對 OPC UA 路徑階層的根評估的節點篩選路徑。此路徑必須以 開頭`/`。  
`measurementDataStreamPrefix`  
從來源附加至所有資料串流的字串。SiteWise Edge 閘道會將此字首新增至來自此來源的所有資料串流。使用資料流前置詞以區分來自不同來源但具有相同名稱的資料串流。您帳戶中的每個資料串流應該都有唯一的名稱。  
`typeConversions`  
不支援的 OPC UA 資料類型可用的轉換類型。每個資料類型都會轉換為字串。如需詳細資訊，請參閱[轉換不支援的資料類型](string-conversion.md)。    
`array`  
轉換為字串的簡單陣列資料類型。您可以選擇下列選項：  
+ `JsonArray` – 表示您選擇將簡易陣列資料類型轉換為字串。  
`datetime`  
轉換為字串的 DateTime 資料類型。您可以選擇下列選項：  
+ `ISO8601String` – 表示您選擇將 ISO 8601 資料類型轉換為字串。  
`destination`  
OPC UA 標籤目的地的組態。傳統串流、v2 和啟用 MQTT 的 V3 閘道具有不同的目的地組態。    
`type`  
目的地的類型。  
`streamName` – *僅適用於 Classic 串流、V2 閘道*  
 串流的名稱。串流名稱應該是唯一的。  
`streamBufferSize` – *僅適用於 Classic 串流、V2 閘道*  
串流的緩衝區大小。這對管理來自 OPC UA 來源的資料流程非常重要。  
`defaultPropertyGroupConfig` – *僅啟用 MQTT 的 V3 閘道*  
（選用） 預設屬性群組的組態。預設屬性群組包含使用者定義屬性群組中未包含的所有節點。    
`dataChangeTrigger`  
要在預設屬性群組中使用的預設資料變更觸發條件。有效值為 `STATUS_VALUE_TIMESTAMP`、`STATUS_VALUE` 或 `STATUS`。
`defaultPropertyGroupConfig` 需要 IoT SiteWise OPC UA 收集器元件的 3.1.0 版或更新版本。如需詳細資訊，請參閱[更新 AWS IoT SiteWise 元件的版本](manage-gateways-ggv2.md#update-component-version)。  
`discoveryConfig` – *僅啟用 MQTT 的 V3 閘道*  
（選用） OPC UA 節點探索程序的組態。    
`enableNodeTraversal`  
指定是否繼續周遊資料來源節點篩選條件所定義根節點的子節點。設為 時`false`，探索會在根節點停止。  
`avoidNodeTreeLoops`  
指定是否要在 OPC UA 節點瀏覽程序期間避免無限迴圈。設定為 時`true`，閘道會追蹤造訪的節點，以防止循環參考。  
`maxConcurrentBrowseRequests`  
OPC UA 伺服器可同時處理的並行瀏覽請求數量上限。有效範圍為 1 到 500。  
`maxNodesPerBrowseRequest`  
每次瀏覽請求傳送至 OPC UA 伺服器的節點數量上限。有效範圍為 1 到 1，000。  
`periodicDiscovery`  
以固定間隔定期執行探索的組態。提供此組態時，會啟用定期探索。    
`interval`  
定期探索操作之間的時間量。您可以使用 `m` 分鐘、 `h` 小時和 `d` 天。例如 `90m` 或 `1h`。最小間隔為 30 秒。  
`maxNodesDiscoveredPerInterval`  
每個探索間隔應探索的節點數量上限。這有助於控制閘道和 OPC UA 伺服器的負載。
`periodicDiscovery` 需要 IoT SiteWise OPC UA 收集器元件的 3.1.0 版或更新版本。如需詳細資訊，請參閱[更新 AWS IoT SiteWise 元件的版本](manage-gateways-ggv2.md#update-component-version)。
如果探索無限循環，請啟用 `avoidNodeTreeLoops`。在 `aws.iot.SiteWiseOpcUaCollector`元件下的 CloudWatch 日誌中監控探索進度。

`propertyGroups`  
（選用） 定義通訊協定`scanMode`請求的 `deadband`和 的屬性群組清單。    
`name`  
屬性群組的名稱。這應該是唯一的識別符。  
`deadband`  
`deadband` 值定義資料點值的最小變更，在資料傳送到雲端之前必須發生。其中包含下列資訊：    
`type`  
支援的無效頻帶類型。您可以選擇下列選項：  
+ `ABSOLUTE` – 固定值，指定將資料點視為足夠重要以傳送至雲端所需的最低絕對變更。
+ `PERCENT` – 動態值，以上次傳送資料點值的百分比指定所需的最低變更。當資料值隨時間大幅變化時，這種類型的無效頻帶很有用。  
`value`  
無效頻帶的值。當 `type`為 時`ABSOLUTE`，此值是無單位的兩倍。當 `type`為 時`PERCENT`，此值是介於 `1`和 之間的兩倍`100`。  
`eguMin`  
（選用） 使用`PERCENT`無效頻帶時的工程單位最小值。如果 OPC UA 伺服器未設定工程單位，您可以設定此項目。  
`eguMax`  
（選用） 使用`PERCENT`無效頻帶時的工程單位上限。如果 OPC UA 伺服器未設定工程單位，您可以設定此項目。  
`timeoutMilliseconds`  
逾時前的持續時間，以毫秒為單位。最小值為 `100`。  
`scanMode`  
包含下列資訊的`scanMode`結構：    
`type`  
支援的 類型`scanMode`。接受的值為 `POLL`和 `EXCEPTION`。  
`rate`  
掃描模式的取樣間隔。  
`timestampToReturn`  
時間戳記的來源。您可以選擇下列選項：  
+ `SOURCE_TIME` – 使用您裝置的時間戳記。
+ `SERVER_TIME` – 使用您伺服器的時間戳記。
`TimestampToReturn` 搭配 IoT SiteWise OPC UA 收集器元件的 2.5.0 版或更新版本使用。如果您將此功能與舊版搭配使用，組態更新會失敗。如需詳細資訊，請參閱[更新 AWS IoT SiteWise 元件的版本](manage-gateways-ggv2.md#update-component-version)。  
`nodeFilterRuleDefinitions`  
（選用） 屬性群組中要包含的節點路徑清單。屬性群組無法重疊。如果您未指定此欄位的值，則群組會包含根目錄下的所有路徑，而且您無法建立其他屬性群組。`nodeFilterRuleDefinitions` 結構包含以下資訊：    
`type`  
`OpcUaRootPath` 是唯一支援的類型。這會指定 的值`rootPath`是相對於 OPC UA 瀏覽空間根目錄的路徑。  
`rootPath`  
逗號分隔清單，指定要包含在屬性群組中的路徑 （相對於根）。

### Classic 串流、V2 閘道 (AWS CLI) 的其他功能組態範例
<a name="opc-ua-source-example-cli"></a>

下列範例會從存放在 JSON 檔案中的承載定義 OPC UA SiteWise Edge 閘道功能組態。

```
aws iotsitewise update-gateway-capability-configuration \
--capability-namespace "iotsitewise:opcuacollector:2" \
--capability-configuration file://opc-ua-configuration.json
```

**Example ：OPC UA 來源組態**  
下列`opc-ua-configuration.json`檔案會定義基本、不安全的 OPC UA 來源組態。  

```
{
    "sources": [
        {
            "name": "Wind Farm #1",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://203.0.113.0:49320",
                "securityPolicy": "NONE",
                "messageSecurityMode": "NONE",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": []
            },
            "measurementDataStreamPrefix": ""
        }
    ]
}
```

**Example ：OPC UA 來源組態與定義的屬性群組**  
下列`opc-ua-configuration.json`檔案使用定義的屬性群組來定義基本、不安全的 OPC UA 來源組態。  

```
{
    "sources": [
        {
            "name": "source1",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://10.0.0.9:49320",
                "securityPolicy": "NONE",
                "messageSecurityMode": "NONE",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": [
                    {
                        "action": "INCLUDE",
                        "definition": {
                            "type": "OpcUaRootPath",
                            "rootPath": "/Utilities/Tank"
                        }
                    }
                ]
            },
            "measurementDataStreamPrefix": "propertyGroups",
            "propertyGroups": [
                 {
                     "name": "Deadband_Abs_5",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Temperature/TT-001"
                         },
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Temperature/TT-002"
                         }
                     ],
                     "deadband": {
                         "type":"ABSOLUTE",
                         "value": 5.0,
                         "timeoutMilliseconds": 120000
                     }
                 },
                 {
                     "name": "Polling_10s",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Pressure/PT-001"
                         }
                     ],
                     "scanMode": {
                         "type": "POLL",
                         "rate": 10000
                     }
                 },
                 {
                     "name": "Percent_Deadband_Timeout_90s",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Flow/FT-*"
                         }
                     ],
                     "deadband": {
                         "type":"PERCENT",
                         "value": 5.0,
                         "eguMin": -100,
                         "eguMax": 100,
                         "timeoutMilliseconds": 90000
                     }
                 }
             ]
        }
    ]
}
```

**Example ：OPC UA 來源組態與屬性**  
的下列 JSON 範例`opc-ua-configuration.json`定義具有下列屬性的 OPC UA 來源組態：  
+ 信任任何憑證。
+ 使用`BASIC256`安全政策來保護訊息。
+ 使用 `SIGN_AND_ENCRYPT` 模式來保護連線。
+ 使用存放在 Secrets Manager 秘密中的身分驗證憑證。
+ 篩選資料串流，路徑以 `/WindFarm/2/WindTurbine/` 開頭的資料串流除外。
+ 將 `/Washington` 新增至每個資料串流路徑的開頭，以區分此「風力發電廠 \$12」和另一個區域中的「風力發電廠 \$12」。

```
{
    "sources": [
        {
            "name": "Wind Farm #2",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://203.0.113.1:49320",
                "securityPolicy": "BASIC256",
                "messageSecurityMode": "SIGN_AND_ENCRYPT",
                "identityProvider": {
                    "type": "Username",
                    "usernameSecretArn": "arn:aws:secretsmanager:region:123456789012:secret:greengrass-windfarm2-auth-1ABCDE"
                },
                "nodeFilterRules": [
                  {
                      "action": "INCLUDE",
                      "definition": {
                          "type": "OpcUaRootPath",
                          "rootPath": "/WindFarm/2/WindTurbine/"
                    }
                  }
                ]
            },
            "measurementDataStreamPrefix": "/Washington"
        }
    ]
}
```

**Example ：OPC UA 來源組態與憑證信任**  
的下列 JSON 範例`opc-ua-configuration.json`定義具有下列屬性的 OPC UA 來源組態：  
+ 信任指定的 X.509 憑證。
+ 使用`BASIC256`安全政策來保護訊息。
+ 使用 `SIGN_AND_ENCRYPT` 模式來保護連線。

```
{
    "sources": [
        {
            "name": "Wind Farm #3",
            "endpoint": {
                "certificateTrust": {
                    "type": "X509",
                    "certificateBody": "-----BEGIN CERTIFICATE-----
          MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
 WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
 EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
 MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
 WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
 HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
 BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
 k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
 ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
 AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
 KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
 EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
 3rrszlaEXAMPLE=
          -----END CERTIFICATE-----",
                    "certificateChain": "-----BEGIN CERTIFICATE-----
          MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
 WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
 EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
 MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
 WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
 HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
 BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
 k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
 ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
 AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
 KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
 EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
 3rrszlaEXAMPLE=
          -----END CERTIFICATE-----"
                },
                "endpointUri": "opc.tcp://203.0.113.2:49320",
                "securityPolicy": "BASIC256",
                "messageSecurityMode": "SIGN_AND_ENCRYPT",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": []
              },
            "measurementDataStreamPrefix": ""
              
        }
    ]
}
```

# 設定 OPC UA 伺服器以信任 AWS IoT SiteWise Edge 閘道
<a name="enable-source-trust"></a>

如果您在設定 OPC UA 來源時選擇 **None** `messageSecurityMode`以外的其他 ，則必須啟用來源伺服器來信任 AWS IoT SiteWise Edge 閘道。SiteWise Edge 閘道會產生來源伺服器可能需要的憑證。程序會根據您的來源伺服器而有所不同。如需詳細資訊，請參閱您伺服器的文件。

下列程序概述基本步驟。

**讓 OPC UA 伺服器信任 SiteWise Edge 閘道**

1. 開啟用於設定 OPC UA 伺服器的界面。

1. 輸入 OPC UA 伺服器管理員的使用者名稱和密碼。

1. 在界面中尋找**信任的用戶端**，然後選擇**AWS IoT SiteWise 閘道用戶端**。

1. 選擇 **Trust (信任)**。

## 匯出 OPC UA 用戶端憑證
<a name="export-opc-ua-client-certificate"></a>

有些 OPC UA 伺服器需要存取 OPC UA 用戶端憑證檔案，才能信任 SiteWise Edge 閘道。如果這適用於您的 OPC UA 伺服器，您可以使用下列程序從 SiteWise Edge 閘道匯出 OPC UA 用戶端憑證。然後，您可以在 OPC UA 伺服器上匯入憑證。

**匯出來源的 OPC UA 用戶端憑證檔案**

1. 執行下列命令，以變更至包含憑證檔案的目錄。將 *sitewise-work* 取代為 *aws.iot.SiteWiseEdgeCollectorOpcua* Greengrass 工作資料夾的本機儲存路徑，並將 *source-name* 取代為資料來源的名稱。

   根據預設，Greengrass 工作資料夾在 Linux 上為 */greengrass/v2/work/aws.iot.SiteWiseEdgeCollectorOpcua*，在 上為 *C：/greengrass/v2/work/aws.iot.SiteWiseEdgeCollectorOpcua*Microsoft Windows。

   ```
   cd /sitewise-work/source-name/opcua-certificate-store
   ```

1. 此來源的 SiteWise Edge 閘道 OPC UA 用戶端憑證位於 `aws-iot-opcua-client.pfx` 檔案中。

   執行下列命令，將憑證匯出至名為 `aws-iot-opcua-client-certificate.pem` 的`.pem` 檔案。

   ```
   keytool -exportcert -v -alias aws-iot-opcua-client -keystore aws-iot-opcua-client.pfx -storepass amazon -storetype PKCS12 -rfc > aws-iot-opcua-client-certificate.pem
   ```

1. 將憑證檔案 `aws-iot-opcua-client-certificate.pem`，從 SiteWise Edge 閘道傳輸到 OPC UA 伺服器。

   若要這麼做，您可以使用一般軟體，例如 `scp` 程式來傳輸使用 SSH 通訊協定的檔案。如需詳細資訊，請參閱 *Wikipedia* 上的[安全複製](https://en.wikipedia.org/wiki/Secure_copy)。
**注意**  
如果您的 SiteWise Edge 閘道在 Amazon Elastic Compute Cloud (Amazon EC2) 上執行，而且您第一次連線到它，您必須設定先決條件才能連線。如需詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [Connect to your Linux instance using SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)。

1. 在 OPC UA 伺服器上匯入憑證檔案 `aws-iot-opcua-client-certificate.pem`，以信任 SiteWise Edge 閘道。步驟可能有所不同，取決於您使用的來源伺服器。請參閱伺服器文件。

# 使用 OPC UA 篩選資料擷取範圍
<a name="opcua-data-acquisition"></a>

您可以使用掃描模式和無效頻帶範圍，控制使用 OPC UA 來源擷取資料的方式。這些功能可讓您控制要擷取哪些類型的資料，以及伺服器和 SiteWise Edge 閘道如何和何時交換此資訊。

## 根據品質收集或篩選資料
<a name="opcua-data-quality"></a>

您可以設定資料品質設定，以控制從 OPC UA 來源收集哪些資料。資料來源在傳送時包含品質評分做為中繼資料。您可以選取下列其中一個或所有選項：
+ `Good`
+ `Bad`
+ `Uncertain`

### 處理 NaN 或 null 值
<a name="nan-null"></a>

SiteWise Edge 支援收集和處理 NaN 和 null 值。
+ *NaN （非數字）：*代表未定義或無法表示的數值結果。
+ *Null：*表示遺失資料。

IoT SiteWise OPC UA 收集器會擷取具有 BAD 或 UNCERTAIN 品質的 NaN 和 Null 值。這些特殊值會寫入本機串流，讓資料收集更為完整。

## 使用掃描模式控制資料收集頻率
<a name="opcua-scanmode"></a>

您可以設定 OPC UA 掃描模式，以控制從 OPC UA 來源收集資料的方式。您可以選擇訂閱或輪詢模式。
+ 訂閱模式 – OPC UA 來源會依掃描速率定義的頻率，收集資料以傳送至 SiteWise Edge 閘道。伺服器只會在值變更時傳送資料，因此這是 SiteWise Edge 閘道接收資料的最大頻率。
+ 輪詢模式 – SiteWise Edge 閘道會以掃描速率定義的設定頻率輪詢 OPC UA 來源。無論值是否已變更，伺服器都會傳送資料，因此 SiteWise Edge 閘道一律會在此間隔接收資料。
**注意**  
輪詢模式選項會覆寫此來源的無效頻帶設定。

## 使用無效頻帶範圍篩選 OPC UA 資料擷取
<a name="opcua-deadbanding"></a>

 您可以將無效頻帶套用至 OPC UA 來源屬性群組，以篩選和捨棄特定資料，而不是將其傳送至 AWS 雲端。無效頻帶會指定 OPC UA 來源傳入資料值中預期波動的時段。如果值落在此視窗中，您的 OPC UA 伺服器不會將其傳送至 AWS 雲端。您可以使用無效頻帶篩選來減少您正在處理和傳送至 AWS 雲端的資料量。若要了解如何設定 SiteWise Edge 閘道的 OPC UA 來源，請參閱 [AWS IoT SiteWise Edge 閘道的 OPC UA 資料來源](configure-sources-opcua.md)。

**注意**  
 伺服器會刪除位於無效頻帶指定時段內的所有資料。您無法復原此捨棄的資料。

### 無效頻帶的類型
<a name="deadband-types"></a>

 您可以為 OPC UA 伺服器屬性群組指定兩種類型的無效頻帶。這些選項可讓您選擇傳送至 AWS 雲端的資料量，以及捨棄的資料量。
+ 百分比 – 您可以使用測量值中的預期波動百分比來指定視窗。伺服器會從此百分比計算確切的時段，並將超過 的資料傳送至超出該時段的 AWS 雲端。例如，在感應器上指定 2% 的無效頻帶值，範圍從華氏 -100 度到華氏 \$1100 度，指示伺服器在值變更為華氏 4 度或更高時，將資料傳送至 AWS 雲端。
**注意**  
 如果您的來源伺服器未定義工程單位，您可以選擇為此時段指定最小和最大無效頻帶值。如果未提供工程單位範圍，OPC UA 伺服器會預設為測量資料類型的完整範圍。
+ 絕對 – 您可以使用確切的單位來指定視窗。例如，在感應器上指定無效頻帶值 2，會指示伺服器在其值變更至少 2 個單位時，將資料傳送至 AWS 雲端。對於在正常操作期間定期預期波動的動態環境，您可以使用絕對無效頻帶。

### Deadband 逾時
<a name="deadband-timeout"></a>

 您可以選擇性地設定無效頻帶逾時設定。在此逾時之後，OPC UA 伺服器會傳送目前的測量值，即使其在預期的無效頻帶波動內。您可以使用逾時設定來確保 始終 AWS IoT SiteWise 擷取穩定的資料串流，即使值不超過定義的無效頻帶時段也一樣。

# 在 SiteWise Edge 中使用 OPC UA 節點篩選條件
<a name="opc-ua-node-filters"></a>

當您定義 SiteWise Edge 閘道的 OPC UA 資料來源時，您可以定義節點篩選條件。節點篩選條件可讓您限制 SiteWise Edge 閘道傳送至雲端的資料串流路徑。您可以使用節點篩選條件來減少 SiteWise Edge 閘道的啟動時間和 CPU 用量，方法是只包含您建模資料的路徑 AWS IoT SiteWise。根據預設，SiteWise Edge 閘道會上傳所有 OPC UA 路徑，但以 開頭的路徑除外`/Server/`。您可以在節點篩選器中使用 `*` 和 `**` 萬用字元，將多個資料串流路徑包含在一個篩選器中。若要了解如何設定 SiteWise Edge 閘道的 OPC UA 來源，請參閱 [AWS IoT SiteWise Edge 閘道的 OPC UA 資料來源](configure-sources-opcua.md)。

**注意**  
AWS IoT SiteWise 每次新增或編輯來源時， 都會重新啟動 SiteWise Edge 閘道。您的 SiteWise Edge 閘道在更新來源組態時不會擷取資料。重新啟動 SiteWise Edge 閘道的時間取決於 SiteWise Edge 閘道來源上的標籤數量。重新啟動時間的範圍可以從幾秒鐘 （對於具有數個標籤的 SiteWise Edge 閘道） 到幾分鐘 （對於具有許多標籤的 SiteWise Edge 閘道）。

下表列出可用來篩選 OPC UA 資料來源的萬用字元。


**OPC UA 節點篩選條件萬用字元**  

| 萬用字元 | Description | 
| --- | --- | 
| \$1 | 比對資料串流路徑中的單一層級。 | 
| \$1\$1 | 比對資料串流路徑中的多個層級。 | 

**注意**  
如果您使用廣泛的篩選條件設定來源，然後稍後將來源變更為使用更嚴格的篩選條件， 會 AWS IoT SiteWise 停止儲存不符合新篩選條件的資料。

**Example ：使用節點篩選條件的案例**  
考慮以下的假設性資料串流：  
+ `/WA/Factory 1/Line 1/PLC1`
+ `/WA/Factory 1/Line 1/PLC2`
+ `/WA/Factory 1/Line 2/Counter1`
+ `/WA/Factory 1/Line 2/PLC1`
+ `/OR/Factory 1/Line 1/PLC1`
+ `/OR/Factory 1/Line 2/Counter2`
您可以使用先前的資料串流定義節點篩選條件，以限制要從 OPC UA 來源包含的資料。  
+ 若要選取此範例中的所有節點，請使用 `/`或 `/**/`。使用 `**` 萬用字元可以包含多個目錄或資料夾。
+ 若要選取所有 `PLC` 資料串流，請使用 `/*/*/*/PLC*` 或 `/**/PLC*`。
+ 若要選取此範例中的所有計數器，請使用 `/**/Counter*`或 `/*/*/*/Counter*`。
+ 若要從 `Line 2` 中選取所有計數器，請使用 `/**/Line 2/Counter*`。

# 轉換不支援的資料類型
<a name="string-conversion"></a>

針對簡單陣列和 DateTime 資料類型，選擇性地 AWS IoT SiteWise 在 中啟用資料類型轉換。 AWS IoT SiteWise 不支援所有 OPC UA 資料類型。當您將不支援的資料傳送到 AWS IoT Greengrass 資料串流時，該資料會遺失。不過，透過將不支援的原生資料類型轉換為字串，您可以將資料擷取至 AWS IoT SiteWise ，而不是將其捨棄。 AWS IoT SiteWise 會序列化轉換後的資料，以便您稍後在需要時使用自己的函數，將字串轉換回其原始資料類型下游。

您可以隨時更新資料來源的資料類型轉換設定，而且每個資料來源都可以有自己的設定。

當您在 中新增資料來源時 AWS IoT SiteWise 主控台，**進階組態**中的**資料類型轉換**下有兩個核取方塊。您可以指出要轉換為字串的資料類型。

此外，IoT SiteWise OPC UA 收集器可以在邊緣接受 NaN 或 null 值。
+ 將具有簡單資料類型的陣列值轉換為 JSON 字串
+ 將 DateTime 值轉換為 ISO 8601 字串

## 先決條件
<a name="string-conversion-prereq"></a>
+ 使用 [IoT SiteWise OPC UA 收集器 2.5](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html).0 版或更新版本。

## 限制
<a name="string-conversion-limits"></a>

這些是將 OPC UA 資料類型轉換為 中字串的限制 AWS IoT SiteWise。
+ 不支援複雜的資料類型轉換。
+ 轉換後的字串限制為 1024 個位元組。如果字串超過 1024 個位元組，則字串會遭到 拒絕 AWS IoT SiteWise。

# 設定 SiteWise Edge 的資料來源身分驗證
<a name="configure-source-authentication-ggv2"></a>

如果您的 OPC UA 伺服器需要身分驗證憑證才能連線，您可以使用 來 AWS Secrets Manager 建立秘密並將其部署到您的 SiteWise Edge 閘道。 會在裝置上 AWS Secrets Manager 加密秘密，以保持使用者名稱和密碼的安全，直到您需要使用它們為止。如需 AWS IoT Greengrass 秘密管理員元件的詳細資訊，請參閱《 *AWS IoT Greengrass Version 2 開發人員指南*》中的[秘密管理員](https://docs.aws.amazon.com/greengrass/v2/developerguide/secret-manager-component.html)。

如需管理 Secrets Manager 秘密存取權的資訊，請參閱：
+ [ 誰有權存取您的 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/determine-acccess_examine-iam-policies.html)。
+ [ 判斷帳戶內是否允許或拒絕請求](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)。

## 步驟 1：建立來源身分驗證秘密
<a name="create-secrets-ggv2"></a>

您可以使用 AWS Secrets Manager 為您的資料來源建立身分驗證秘密。在秘密中，定義包含資料來源身分驗證詳細資訊的 **username**和 **password**金鑰值對。

**若要建立機密 (控制台)**

1. 導覽至 [AWS Secrets Manager 主控台](https://console.aws.amazon.com/secretsmanager/)。

1. 選擇**儲存新機密**。

1. 在**秘密類型**下，選擇**其他類型的秘密**。

1. 在**鍵/值對**下，執行下列動作：

   1. 在第一個輸入方塊中，輸入 **username** ，然後在第二個輸入方塊中輸入使用者名稱。

   1. 選擇**新增列**。

   1. 在第一個輸入方塊中，輸入 **password** ，然後在第二個輸入方塊中輸入密碼。

1. 針對**加密金鑰**，選取 **aws/secretsmanager**，然後選擇**下一步**。

1. 在**儲存新的秘密**頁面上，輸入**秘密名稱**。

1. （選用） 輸入可協助您識別此秘密的**描述**，然後選擇**下一步**。

1. （選用） 在**儲存新的秘密**頁面上，開啟**自動輪換**。如需詳細資訊，請參閱*AWS Secrets Manager 《 使用者指南*》中的[輪換秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)。

1. 指定輪換排程。

1. 選擇可輪換此秘密的 Lambda 函數，然後選擇**下一步**。

1. 檢閱您的秘密組態，然後選擇**儲存**。

若要授權 SiteWise Edge 閘道與 互動 AWS Secrets Manager，SiteWise Edge 閘道的 IAM 角色必須允許 `secretsmanager:GetSecretValue`動作。您可以使用 **Greengrass 核心裝置**來搜尋 IAM 政策。如需更新 IAM 政策的詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

**Example 政策**  
以您在上一個步驟中建立的秘密的 Amazon Resource Name (ARN) 取代 *secret-arn*。如需如何取得秘密 ARN 的詳細資訊，請參閱*AWS Secrets Manager 《 使用者指南*》中的在 [中尋找秘密 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)。    
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement":[
  {
     "Action":[
        "secretsmanager:GetSecretValue"
     ],
     "Effect":"Allow",
     "Resource":[
        "arn:aws:secretsmanager:us-east-1:123456789012:secret/*"
     ]
  }
]
}
```

## 步驟 2：將秘密部署到您的 SiteWise Edge 閘道裝置
<a name="deploy-secrets-ggv2"></a>

您可以使用 AWS IoT SiteWise 主控台將秘密部署到您的 SiteWise Edge 閘道。

**部署秘密 （主控台）**

1. 導覽至 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. 在導覽窗格中，選擇 ** Gateways** (網際網路閘道)。

1. 從**閘道**清單中，選擇目標 SiteWise Edge 閘道。

1. 在**閘道組態**區段中，選擇 **Greengrass 核心裝置**連結以開啟與 SiteWise Edge 閘道相關聯的 AWS IoT Greengrass 核心。

1. 在導覽窗格中，選擇**部署**。

1. 選擇目標部署，然後選擇**修訂**。

1. 在**指定目標**頁面上，選擇**下一步**。

1. 在**選取元件**頁面的**公有元件**區段中，關閉**僅顯示選取的元件**。

1. 搜尋並選擇 **aws.greengrass.SecretManager** 元件，然後選擇**下一步**。

1. 從**選取的元件**清單中，選擇 **aws.greengrass.SecretManager** 元件，然後選擇**設定元件**。

1. 在**要合併的組態**欄位中，新增下列 JSON 物件。
**注意**  
以您在上一個步驟中建立的秘密 ARN 取代 *secret-arn*。如需如何取得秘密 ARN 的詳細資訊，請參閱*AWS Secrets Manager 《 使用者指南*》中的在 [中尋找秘密 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)。

   ```
   {
   "cloudSecrets":[
     {
        "arn":"secret-arn"
     }
   ]
   }
   ```

1. 選擇**確認**。

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

1. 在**設定進階設定**頁面上，選擇**下一步**。

1. 檢閱您的部署組態，然後選擇**部署**。

## 步驟 3：新增身分驗證組態
<a name="add-authentication-configurations"></a>

您可以使用 AWS IoT SiteWise 主控台將身分驗證組態新增至 SiteWise Edge 閘道。

**新增身分驗證組態 （主控台）**

1. 導覽至 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. 從**閘道**清單中，選擇目標 SiteWise Edge 閘道。

1. 從**資料來源**清單中，選擇目標資料來源，然後選擇**編輯**。

1. 在**新增資料來源**頁面上，選擇**進階組態**。

1. 針對**身分驗證組態**，選擇您在上一個步驟中部署的秘密。

1. 選擇**儲存**。