設定 OPC-UA 來源 (CLI) - AWS IoT SiteWise

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

設定 OPC-UA 來源 (CLI)

您可以在閘道功能中定義 OPC-UA 資料來源。您必須在單一功能組態中定義所有 OPC-UA 來源。

如需使用AWS Command Line Interface,請參設定資料來源 (AWS CLI)

此功能具有下列版本。

版本 命名空間
1 iotsitewise:opcuacollector:1

OPC-UA 功能組態參數

當您在功能組態中定義 OPC-UA 來源時,必須在 capabilityConfiguration JSON 文件中指定下列資訊:

sources

OPC-UA 定義結構的清單,每個結構都包含下列資訊:

name

來源的唯一且易記名稱。

endpoint

包含下列資訊的端點結構:

certificateTrust

包含下列資訊的憑證信任政策結構:

type

來源的憑證信任模式。選擇下列其中一項:

  • TrustAny— 閘道會在連線至 OPC-UA 來源時信任任任何憑證。

  • X509— 閘道會在連線至 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— 閘道不會保護來自 OPC-UA 來源的消息。建議您選擇不同的安全政策。如果您選擇此選項,您也必須為 messageSecurityMode 選擇 NONE

  • BASIC256_SHA256Basic256Sha256安全政策。

  • AES128_SHA256_RSAOAEPAes128_Sha256_RsaOaep安全政策。

  • AES256_SHA256_RSAPSSAes256_Sha256_RsaPss安全政策。

  • BASIC128_RSA15— (已廢除)Basic128Rsa15安全策略在 OPC-UA 規範中被棄用,因為它不再被認為是安全的。建議您選擇不同的安全政策。如需詳細資訊,請參閱「」Basic128Rsa15

  • BASIC256— (已廢除)Basic256安全策略在 OPC-UA 規範中被棄用,因為它不再被認為是安全的。建議您選擇不同的安全政策。如需詳細資訊,請參閱「」Basic256

重要

如果您選擇的安全政策NONE,您必須選擇SIGN或者SIGN_AND_ENCRYPT為了messageSecurityMode。您也必須設定源服務器以信任閘道。如需詳細資訊,請參閱 讓您的來源伺服器信任閘道

messageSecurityMode

用來保護對 OPC-UA 來源之連線的訊息安全模式。選擇下列其中一項:

  • NONE— 閘道不會保護對 OPC-UA 來源的連線。建議您選擇其他的訊息安全模式。如果您選擇此選項,您也必須為 securityPolicy 選擇 NONE

  • SIGN— 閘道與 OPC-UA 來源之間傳輸的資料已簽署,但未加密。

  • SIGN_AND_ENCRYPT— 閘道與 OPC-UA 來源之間傳輸的資料會簽署並加密。

重要

如果您選擇郵件安全模式NONE,您必須選擇securityPolicy以外NONE。您也必須設定源服務器以信任閘道。如需詳細資訊,請參閱 讓您的來源伺服器信任閘道

identityProvider

包含下列資訊的身分提供者結構:

type

來源所需的身份驗證登入資料類型。選擇下列其中一項:

  • Anonymous— 來源不需要身份驗證即可連線。

  • Username— 來源需要使用者名稱和密碼才能連線。如果您選擇此選項,則必須在 identityProvider 中定義 usernameSecretArn

usernameSecretArn

(選 ARN)AWS Secrets Manager祕密。閘道連線至此來源時,會使用此秘密中的驗證認證。您必須將祕密附加至閘道的 IoT SiteWise 連接器將其用於來源驗證。如需詳細資訊,請參閱 設定來源身份驗證

如果您在 identityProvider 中為 type 選擇 Username,則此欄位為必要。

nodeFilterRules

定義 OPC-UA 資料流路徑的節點篩選規則結構清單,以定義要發送至AWS雲端。您可以使用節點篩選器,僅包含您在 AWS IoT SiteWise 中建置模型之資料的路徑,以減少閘道的啟動時間和 CPU 使用率。根據預設,閘道會上傳所有 OPC-UA 路徑,但開頭為 /Server/ 的除外。若要定義 OPC-UA 節點篩選條件,您可以使用節點路徑以及 *** 萬用字元。如需詳細資訊,請參閱 使用 OPC-UA 節點篩選條件

清單中的每個結構都必須包含下列資訊:

action

此節點篩選規則的動作。您可以選擇下列選項:

  • INCLUDE— 閘道僅包含符合此規則的資料串流。

definition

包含下列資訊的節點篩選規則結構:

type

此規則的節點篩選路徑類型。您可以選擇下列選項:

  • OpcUaRootPath— 閘道會根據 OPC-UA 路徑階層的根目錄來評估此節點篩選路徑。

rootPath

要評估 OPC-UA 路徑階層之根目錄的節點篩選路徑。此路徑必須以/

measurementDataStreamPrefix

從來源前方加上所有資料串流的字串。閘道會將此前置詞新增至來自此來源的所有資料串流。使用資料流前置詞以區分來自不同來源但具有相同名稱的資料串流。您帳戶中的每個資料串流應該都有唯一的名稱。

propertyGroups

(可選)定義deadbandscanMode通過議定書的要求。

name

屬性組的名稱。這應該是唯一識別符。

deadband

所以此deadband結構,其中包含下列資訊:

type

支持的死帶類型。接受的值為ABSOLUTEPERCENT

value

死區的值。時機typeABSOLUTE,則此值為無單位雙精度。時機typePERCENT,則此值為1100

eguMin

(可選)使用工程單元時的最小值PERCENT死帶。如果 OPC-UA 服務器沒有配置工程單元,則可以設置此選項。

eguMax

(可選)使用工程單元的最大值PERCENT死帶。如果 OPC-UA 服務器沒有配置工程單元,則可以設置此選項。

timeoutMilliseconds

超時前的持續時間 (以毫秒為單位)。最低值是100

scanMode

所以此scanMode結構,其中包含下列資訊:

type

支援的類型scanMode。接受的值為POLLEXCEPTION

rate

掃描模式的採樣間隔。

功能組態範例

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

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

範例 :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": "" } ] }

範例 :具有定義屬性組的 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 } } ] } ] }

範例 :具有屬性的 OPC-UA 來源組態

下列 opc-ua-configuration.json 的 JSON 範例會使用下列屬性定義 OPC-UA 來源組態:

  • 信任任何憑證。

  • 使用BASIC256安全政策來保護訊息。

  • 使用 SIGN_AND_ENCRYPT 模式來保護連線。

  • 使用存放在 Secrets Manager 私密中的身份驗證資料。

  • 篩選資料串流,路徑以 /WindFarm/2/WindTurbine/ 開頭的資料串流除外。

  • /Washington 新增至每個資料串流路徑的開頭,以區分此「風力發電廠 #2」和另一個區域中的「風力發電廠 #2」。

{ "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" } ] }

範例

下列 opc-ua-configuration.json 的 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-----", "certificateTrust": "-----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": "" } ] }