OPC-UA 소스(CLI)를 구성합니다. - AWS IoT SiteWise

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

OPC-UA 소스(CLI)를 구성합니다.

를 사용하여 에지 게이트웨이의 OPC-UA 데이터 소스를 정의할 수 있습니다 SiteWise . AWS CLI이렇게 하려면 OPC-UA 기능 구성 JSON 파일을 만들고 update-gateway-capability-configuration명령을 사용하여 에지 게이트웨이 구성을 업데이트하십시오. SiteWise 단일 기능 구성에서 모든 OPC-UA 소스을 정의해야 합니다.

이 기능에는 다음과 같은 네임스페이스가 있습니다.

  • 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" "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 }, "dataQuality": { "allowGoodQuality": true | false, "allowBadQuality": true | false, "allowUncertainQuality": true | false }, "subscription": { "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP", "queueSize": integer, "publishingIntervalMilliseconds": integer, "snapshotFrequencyMilliseconds": integer } } ] } ] }

요청 본문

소스

다음 정보를 포함하는 각 OPC-UA 원본 정의 구조의 목록입니다.

이름

고유하고 친숙한 원본 이름입니다.

endpoint

다음 정보가 포함된 엔드포인트 구조입니다.

인증서 트러스트

다음 정보가 포함된 인증서 신뢰 정책 구조:

type

원본에 대한 인증서 신뢰 모드입니다. 다음 중 하나를 선택합니다.

  • TrustAny— SiteWise 엣지 게이트웨이는 OPC-UA 소스에 연결할 때 모든 인증서를 신뢰합니다.

  • X509— SiteWise 에지 게이트웨이는 OPC-UA 소스에 연결할 때 X.509 인증서를 신뢰합니다. 이 옵션을 선택하는 경우, certificateTrustcertificateBody을 정의해야 합니다. certificateTrustcertificateChain을 정의할 수도 있습니다.

인증서 기관

(선택 사항) X.509 인증서의 본문입니다.

certificateTrust에서 type에 대해 X509을 선택하는 경우, 이 필드는 필수입니다.

인증서 체인

(선택 사항) X.509 인증서에 대한 신뢰 체인입니다.

이 필드는 certificateTrust에서 type에 대해 X509를 선택할 때만 사용합니다.

엔드포인트 URI

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— (더 이상 사용되지 않음) Basic128Rsa15 보안 정책은 더 이상 안전한 것으로 간주되지 않으므로 OPC-UA 사양에서 더 이상 사용되지 않습니다. 다른 보안 정책을 선택하는 것이 좋습니다. 자세한 내용은 Basic128Rsa15를 참조하세요.

  • BASIC256— (더 이상 사용되지 않음) Basic256 보안 정책은 더 이상 안전한 것으로 간주되지 않으므로 OPC-UA 사양에서 더 이상 사용되지 않습니다. 다른 보안 정책을 선택하는 것이 좋습니다. 자세한 내용은 Basic256를 참조하세요.

중요

이외의 NONE 보안 정책을 선택하는 경우 SIGN 또는 SIGN_AND_ENCRYPT 정책을 선택해야 합니다messageSecurityMode. 또한 SiteWise Edge 게이트웨이를 신뢰하도록 원본 서버를 구성해야 합니다. 자세한 정보는 OPC-UA 원본 서버가 에지 게이트웨이를 신뢰하도록 지원 SiteWise 을 참조하세요.

메시지 SecurityMode

OPC-UA 원본에 대한 연결을 보호하는 데 사용할 메시지 보안 모드입니다. 다음 중 하나를 선택합니다.

  • NONE— SiteWise 에지 게이트웨이는 OPC-UA 소스에 대한 연결을 보호하지 않습니다. 다른 메시지 보안 모드를 선택하는 것이 좋습니다. 이 옵션을 선택하는 경우, securityPolicy에 대해 NONE을 선택해야 합니다

  • SIGN— SiteWise 에지 게이트웨이와 OPC-UA 소스 간에 전송되는 데이터는 서명되지만 암호화되지는 않습니다.

  • SIGN_AND_ENCRYPT – 게이트웨이와 OPC-UA 원본 간 전송 중 데이터는 서명되고 암호화됩니다.

중요

NONE 이외의 메시지 보안 모드를 선택하는 경우 NONE 이외의 securityPolicy를 선택해야 합니다. 또한 원본 서버가 SiteWise Edge 게이트웨이를 신뢰하도록 구성해야 합니다. 자세한 정보는 OPC-UA 원본 서버가 에지 게이트웨이를 신뢰하도록 지원 SiteWise 을 참조하세요.

ID 제공자

다음 정보가 포함된 자격 증명 공급자 구조입니다.

type

원본에 필요한 인증 보안 인증의 유형입니다. 다음 중 하나를 선택합니다.

  • Anonymous – 원본에 연결하려면 인증이 필요하지 않습니다.

  • Username – 원본에 연결하려면 사용자 이름과 암호가 필요합니다. 이 옵션을 선택하는 경우, identityProviderusernameSecretArn을 정의해야 합니다.

사용자 이름 SecretArn

(선택 사항) 시크릿의 ARN. AWS Secrets Manager SiteWise 에지 게이트웨이는 이 소스에 연결할 때 이 암호의 인증 자격 증명을 사용합니다. 암호를 소스 인증에 사용하려면 SiteWise 에지 게이트웨이의 IoT SiteWise 커넥터에 암호를 연결해야 합니다. 자세한 정보는 데이터 소스 인증 구성을 참조하세요.

identityProvider에서 type에 대해 Username을 선택하는 경우, 이 필드는 필수입니다.

노드 FilterRules

클라우드로 전송할 OPC-UA 데이터 스트림 경로를 정의하는 노드 필터 규칙 구조 목록입니다. AWS 노드 필터를 사용하면 모델링하는 데이터에 대한 경로만 포함함으로써 SiteWise Edge 게이트웨이의 시작 시간과 CPU 사용량을 줄일 수 있습니다. AWS IoT SiteWise기본적으로 SiteWise Edge 게이트웨이는 로 시작하는 경로를 제외한 모든 OPC-UA 경로를 업로드합니다. /Server/ OPC-UA 노드 필터를 정의하려면 노드 경로와 *** 와일드카드 문자를 사용하면 됩니다. 자세한 내용은 OPC-UA 노드 필터 사용 섹션을 참조하세요.

각 목록 구조에는 다음 정보가 포함되어야 합니다.

action

이 노드 필터 규칙에 대한 작업입니다. 다음과 같은 옵션을 선택할 수 있습니다.

  • INCLUDE— SiteWise 에지 게이트웨이에는 이 규칙과 일치하는 데이터 스트림만 포함됩니다.

정의

다음 정보가 포함된 노드 필터 규칙 구조:

type

이 규칙의 노드 필터 경로 유형입니다. 다음과 같은 옵션을 선택할 수 있습니다.

  • OpcUaRootPath— SiteWise 에지 게이트웨이는 OPC-UA 경로 계층 구조의 루트를 기준으로 이 노드 필터 경로를 평가합니다.

루트패스

OPC-UA 경로 계층의 루트에 대해 평가할 노드 필터 경로입니다. 이 경로는 /로 시작되어야 합니다.

측정 접두사 DataStream

원본의 모든 데이터 스트림 앞에 추가할 문자열입니다. SiteWise Edge 게이트웨이는 이 소스의 모든 데이터 스트림에 이 접두사를 추가합니다. 데이터 스트림 접두사를 사용하여 서로 다른 소스에서 이름이 같은 데이터 스트림을 구분합니다. 각 데이터 스트림은 계정 내에서 고유한 이름을 가져야 합니다.

프로퍼티/그룹

(선택 사항) 프로토콜에서 요청한 deadbandscanMode을 정의하는 속성 그룹 목록입니다.

이름

속성 그룹의 이름입니다. 고유 식별자여야 합니다.

데드밴드

deadband 구조에는 다음 정보가 포함되어 있습니다.

type

지원되는 데드밴드 유형입니다. 허용되는 값은 ABSOLUTEPERCENT입니다.

USD 상당

데드밴드의 값입니다. typeABSOLUTE인 경우 이 값은 단위가 없는 이중 값입니다. typePERCENT인 경우 이 값은 1100 사이의 두 배입니다.

구민

(선택 사항) PERCENT 데드밴드를 사용할 때의 엔지니어링 단위 최소값입니다. OPC-UA 서버에 엔지니어링 유닛이 구성되어 있지 않은 경우 이를 설정합니다.

에구맥스

(선택 사항) PERCENT 데드밴드를 사용할 때의 엔지니어링 단위 최대값입니다. OPC-UA 서버에 엔지니어링 유닛이 구성되어 있지 않은 경우 이를 설정합니다.

타임아웃 (밀리초)

타임아웃까지 남은 시간 (밀리초). 최소값은 100입니다.

스캔 모드

scanMode 구조에는 다음 정보가 포함되어 있습니다.

type

scanMode의 지원되는 유형입니다. 허용되는 값은 POLLEXCEPTION입니다.

속도

스캔 모드의 샘플링 간격입니다.

노드 FilterRule 정의

(선택 사항) 속성 그룹에 포함할 노드 경로 목록입니다. 속성 그룹은 겹칠 수 없습니다. 이 필드에 값을 지정하지 않으면 그룹에 루트 아래의 모든 경로가 포함되므로 추가 속성 그룹을 생성할 수 없습니다. nodeFilterRuleDefinitions 구조에는 다음 정보가 포함되어 있습니다.

type

지원되는 유형은 OpcUaRootPath뿐입니다. 이것은 rootPath 값이 OPC-UA 브라우징 공간의 루트에 상대적인 경로임을 지정합니다.

루트 경로

속성 그룹에 포함할 경로(루트에 대한 경로)를 지정하는 쉼표로 구분된 목록입니다.

기능 구성 예제

다음 예제는 JSON 파일에 저장된 페이로드에서 OPC-UA SiteWise 에지 게이트웨이 기능 구성을 정의합니다.

aws iotsitewise update-gateway-capability-configuration \ --capability-namespace "iotsitewise:opcuacollector:2" \ --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 소스 구성

다음 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": "" } ] }