配置 OPC-UA 源 (CLI) - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 OPC-UA 源 (CLI)

您可以使用为 SiteWise Edge 网关定义 OPC-UA 数据源。 Amazon CLI为此,请创建一个 OPC-UA 功能配置 JSON 文件,然后使用 update-gateway-capability-configuration命令更新 SiteWise Edge 网关配置。您必须在单个功能配置中定义所有 OPC-UA 源。

有关使用定义源的更多信息 Amazon Command Line Interface,请参阅配置数据源 (Amazon CLI)

此功能具有以下版本。

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

请求语法

{ "sources": [ { "name": "string", "endpoint": { "certificateTrust": { "type": "string" "certificateBody": "string" "certificateChain": "string" }, "endpointUri": "string", "securityPolicy": "string", "messageSecurityMode": "string", "identityProvider": { "type": "string", "usernameSecretArn": "string" }, "nodeFilterRules": [ { "action": "string", "definition": { "type": "string", "rootPath": "string" } } ] }, "measurementDataStreamPrefix": "string" "propertyGroups": [ { "name": "string", "deadband": { "type":"string", "value": string, "eguMin": string, "eguMax": string, "timeoutMilliseconds": string }, "scanMode": { "type": "string", "rate": string }, "nodeFilterRuleDefinitions": [ { "type": "string", "rootPath": "string" } ] } } ] }

Request body

来源

OPC-UA 源定义结构的列表,每个结构均包含以下信息:

name

源的唯一友好名称。

终端节点

一个包含以下信息的终端节点结构:

证书信托

一个包含以下信息的证书信任策略结构:

类型

源的证书信任模式。选择以下操作之一:

  • TrustAny— 边 SiteWise 缘网关在连接到 OPC-UA 源时信任任何证书。

  • X509— 边 SiteWise 缘网关在连接到 OPC-UA 源时信任 X.509 证书。如果选择此选项,则必须在 certificateTrust 中定义 certificateBody。也可以在 certificateTrust 中定义 certificateChain

证书正文

(可选)X.509 证书的正文。

如果您在 certificateTrust 中为 type 选择 X509,则此字段为必填字段。

证书链

(可选)X.509 证书的信任链。

仅当您在 certificateTrust 中为 type 选择 X509 时使用此字段。

EndpointURI

OPC-UA 源的本地终端节点。例如,您的本地终端节点可能类似于 opc.tcp://203.0.113.0:49320

安全政策

要使用安全策略,可保护从 OPC-UA 源读取的消息。选择以下操作之一:

  • NONE— 边 SiteWise 缘网关不保护来自 OPC-UA 来源的消息。建议您选择不同的安全策略。如果选择此选项,则还必须为 messageSecurityMode 选择 NONE

  • BASIC256_SHA256Basic256Sha256 安全政策。

  • AES128_SHA256_RSAOAEPAes128_Sha256_RsaOaep 安全政策。

  • AES256_SHA256_RSAPSSAes256_Sha256_RsaPss 安全政策。

  • BASIC128_RSA15 —(已弃用)OPC-UA 规范中已弃用 Basic128Rsa15 安全策略,因为它被视为不再安全。建议您选择不同的安全策略。有关更多信息,请参阅 Basic128Rsa15

  • BASIC256 —(已弃用)OPC-UA 规范中已弃用 Basic256 安全策略,因为它被视为不再安全。建议您选择不同的安全策略。有关更多信息,请参阅 Basic256

重要

如果您选择除 NONE 外的其他安全策略,则 messageSecurityMode 必须选择 SIGNSIGN_AND_ENCRYPT。您还必须将源服务器配置为信任 SiteWise Edge 网关。有关更多信息,请参阅使您的 OPC-UA 源服务器信任边缘网关 SiteWise

messageSecurityMode

用于保护与 OPC-UA 源的连接的消息安全模式。选择以下操作之一:

  • NONE— 边 SiteWise 缘网关无法保护与 OPC-UA 源的连接。建议您选择不同的消息安全模式。如果选择此选项,则还必须为 securityPolicy 选择 NONE

  • SIGN— 在 SiteWise Edge 网关和 OPC-UA 源之间传输的数据已签名,但未加密。

  • SIGN_AND_ENCRYPT — 对网关和 OPC-UA 源之间的传输中数据进行签名和加密。

重要

如果您选择除 NONE 外的消息安全模式,则必须选择除 NONE 外的 securityPolicy。您还必须将源服务器配置为信任 SiteWise Edge 网关。有关更多信息,请参阅使您的 OPC-UA 源服务器信任边缘网关 SiteWise

身份提供者

一个包含以下信息的身份提供程序结构:

类型

源所需的身份验证凭证的类型。选择以下操作之一:

  • Anonymous — 源不需要身份验证即可连接。

  • Username — 源需要用户名和密码才能连接。如果选择此选项,则必须在 identityProvider 中定义 usernameSecretArn

usernameSecretArn

(可选)密钥的 ARN。 Amazon Secrets Manager SiteWise Edge 网关在连接到此源时使用此密钥中的身份验证凭证。您必须将密钥附加到 SiteWise Edge 网关的 IoT SiteWise 连接器,才能将其用于源身份验证。有关更多信息,请参阅配置数据来源身份验证

如果您在 identityProvider 中为 type 选择 Username,则此字段为必填字段。

nodeFilterRules

定义要发送到云端的 OPC-UA 数据流路径的节点筛选规则结构列表。 Amazon 您可以使用节点筛选器通过仅包含您建模的数据的路径来减少 SiteWise Edge 网关的启动时间和 CPU 使用率 Amazon IoT SiteWise。默认情况下, SiteWise 边缘网关会上传除以开头的路径之外的所有 OPC-UA 路径。/Server/要定义 OPC-UA 节点筛选条件,可以使用节点路径以及 *** 通配符。有关更多信息,请参阅使用 OPC-UA 节点筛选条件

此列表中的每个结构都必须包含以下信息:

action

此节点筛选器规则的操作。可以选择以下选项:

  • INCLUDE— SiteWise Edge 网关仅包含符合此规则的数据流。

定义

一个包含以下信息的节点筛选器规则结构:

类型

此规则的节点筛选器路径的类型。可以选择以下选项:

  • OpcUaRootPath— SiteWise Edge 网关根据 OPC-UA 路径层次结构的根目录评估此节点筛选路径。

rootPath

根据 OPC-UA 路径层次结构的根进行评估的节点筛选器路径。此路径必须以 / 开头。

measurementDataStream前缀

要在源中所有数据流的前面加上的字符串。 SiteWise Edge 网关将此前缀添加到来自该源的所有数据流。使用数据流前缀,可以区分来自不同源的同名数据流。在您的账户中,每个数据流都应具有唯一的名称。

物业组

(可选)定义协议要求的 deadbandscanMode 的属性组列表。

name

属性组的名称。这应该是一个唯一的标识符。

死带

deadband 结构包含以下信息:

类型

支持的死区类型。接受的值为:ABSOLUTEPERCENT

死区值。如果 typeABSOLUTE,则此值为无单位的双精度。如果 typePERCENT,则此值是 1100 之间的双精度。

egumin

(可选)使用 PERCENT 死区时的工程单位最小值。如果 OPC-UA 服务器未配置工程单元,则可以设置此项。

eguMax

(可选)使用 PERCENT 死区时的工程单位最大值。如果 OPC-UA 服务器未配置工程单元,则可以设置此项。

TimeoutmiliseConds

超时前的持续时间,以毫秒为单位。最少为 100

扫描模式

scanMode 结构包含以下信息:

类型

支持的 scanMode 类型。接受的值为:POLLEXCEPTION

费率

扫描模式的采样间隔。

nodeFilterRule定义

(可选)包含在属性组中的节点路径列表。属性组不能重叠。如果您不为此字段指定值,则该组包含根目录下的所有路径,且您无法创建其他属性组。nodeFilterRuleDefinitions 结构包含以下信息:

类型

OpcUaRootPath 是唯一支持的类型。这指定 rootPath 值是相对于 OPC-UA 浏览空间根目录的路径。

rootPath

以逗号分隔的列表,用于指定要包含在属性组中的路径(相对于根路径)。

功能配置示例

以下示例根据存储在 JSON 文件中的有效负载定义了 OPC-UA SiteWise Edge 网关功能配置。

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 以将此“Wind Farm #2”与另一个区域中的“Wind Farm #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-----", "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": "" } ] }