기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
섀도 관리자 구성 요소를 사용하면가 로컬 디바이스 섀도 상태를와 동기화 AWS IoT Greengrass 할 수 있습니다 AWS IoT Core. 구성 파라미터를 포함하도록 섀도 관리자 구성 요소의 synchronization
구성을 수정하고 디바이스의 AWS IoT 사물 이름과 동기화하려는 섀도우를 지정해야 합니다.
섀도 관리자를 구성하여 섀도를 동기화하면 로컬 섀도 문서나 클라우드 섀도 문서에서 변경 사항이 발생하는지 여부에 관계없이 지정된 섀도의 모든 상태 변경 사항이 동기화됩니다.
섀도 관리자 구성 요소가 섀도를 실시간으로 동기화할지 아니면 주기적으로 동기화할지 지정할 수도 있습니다. 기본적으로 섀도 관리자 구성 요소는 섀도우를 실시간으로 동기화하므로 코어 디바이스는 각 업데이트가 발생할 AWS IoT Core 때 섀도우 업데이트를 주고 받습니다. 주기적인 간격을 구성하여 대역폭 사용량과 요금을 줄일 수 있습니다.
사전 조건
로컬 섀도를와 동기화하려면 다음 AWS IoT Core 섀도 정책 작업을 허용하도록 Greengrass 코어 디바이스의 AWS IoT 정책을 구성 AWS IoT Core해야 합니다.
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
자세한 내용은 다음 자료를 참조하세요.
섀도 관리자 구성 요소 구성
섀도 관리자에게는 로컬 섀도 문서의 섀도 상태 정보를 AWS IoT Core의 클라우드 섀도 문서와 동기화하기 위한 섀도 이름 매핑의 목록이 필요합니다.
섀도 상태를 동기화하려면 aws.greengrass.ShadowManager
구성 요소를 포함하는 배포를 생성하고 배포의 섀도 관리자 구성의 synchronize
구성 파라미터에서 동기화할 섀도를 지정합니다.
참고
코어 디바이스가 클라이언트 디바이스 섀도와 연동할 수 있도록 하려면 MQTT 브리지 구성 요소도 구성하고 배포해야 합니다. 자세한 내용은 섀도 관리자가 클라이언트 디바이스와 통신할 수 있도록 설정을 참조하세요.
다음 예제 구성 업데이트는 섀도 관리자 구성 요소에 다음 섀도와 동기화하도록 지시합니다 AWS IoT Core.
-
코어 디바이스에 대한 클래식 섀도
-
코어 디바이스에 대해 이름이 지정된
MyCoreShadow
-
MyDevice2
라는 이름의 IoT 사물의 클래식 섀도 -
MyDevice1
이라는 이름의 IoT 사물에 대해 이름이 지정된 섀도MyShadowA
및MyShadowB
이 구성 업데이트는 섀도우를 AWS IoT Core 와 실시간으로 동기화하도록 지정합니다. 섀도 관리자 v2.1.0 이상을 사용하는 경우 주기적으로 섀도를 동기화하도록 섀도 관리자 구성 요소를 구성할 수 있습니다. 이 기능을 구성하려면 동기화 전략을 periodic
으로 변경하고 간격을 delay
(초)로 지정합니다. 자세한 내용은 섀도 관리자 구성 요소의 전략 구성 파라미터를 참조하세요.
이 구성 업데이트는 AWS IoT Core
와 코어 디바이스 간에 양방향으로 섀도를 동기화하도록 지정합니다. 섀도 관리자 v2.2.0 이상을 사용하는 경우 한 방향으로만 섀도를 동기화하도록 섀도 관리자 구성 요소를 구성할 수 있습니다. 이 기능을 구성하려면 동기화 direction
을 deviceToCloud
또는 cloudToDevice
로 변경합니다. 자세한 내용은 섀도 관리자 구성 요소의 방향 구성 파라미터를 참조하세요.
{
"strategy": {
"type": "realTime"
},
"synchronize": {
"coreThing": {
"classic": true,
"namedShadows": [
"MyCoreShadow"
]
},
"shadowDocuments": [
{
"thingName": "MyDevice1",
"classic": false,
"namedShadows": [
"MyShadowA",
"MyShadowB"
]
},
{
"thingName": "MyDevice2",
"classic": true,
"namedShadows": [ ]
}
],
"direction": "betweenDeviceAndCloud"
}
}
로컬 섀도 동기화
Greengrass 코어 디바이스가 AWS IoT 클라우드에 연결되면 섀도 관리자가 구성 요소 구성에서 지정한 섀도에 대해 다음 작업을 수행합니다. 동작은 지정하는 섀도 동기화 방향 구성 옵션에 따라 달라집니다. 기본적으로 섀도 관리자는 betweenDeviceAndCloud
옵션을 사용하여 양방향으로 섀도를 동기화합니다. 섀도 관리자 v2.2.0 이상을 사용하는 경우 한 방향으로만 섀도를 동기화하도록 코어 디바이스를 구성할 수 있으며 이는 cloudToDevice
또는 deviceToCloud
입니다.
-
섀도 동기화 방향 구성이
betweenDeviceAndCloud
또는cloudToDevice
인 경우 섀도 관리자는 AWS IoT Core의 클라우드 섀도 문서에서 보고된 상태 정보를 검색합니다. 그런 다음 로컬로 저장된 섀도 문서를 업데이트하여 디바이스 상태를 동기화합니다. -
섀도 동기화 방향 구성이
betweenDeviceAndCloud
또는deviceToCloud
인 경우 섀도 관리자는 디바이스의 현재 상태를 클라우드 섀도 문서에 게시합니다.
섀도 병합 충돌 동작
코어 디바이스가 인터넷에서 연결 해제되는 경우와 같은 일부 경우 섀도 관리자가 변경 사항을 동기화하기 전에 로컬 섀도우 서비스와 AWS IoT 클라우드에서 섀도우가 변경될 수 있습니다. 따라서 원하는 상태와 보고된 상태는 로컬 섀도우 서비스와 AWS IoT 클라우드 간에 다릅니다.
섀도 관리자가 섀도를 동기화하면 다음 동작에 따라 변경 사항을 병합합니다.
-
v2.2.0 이전 버전의 섀도 관리자를 사용하거나
betweenDeviceAndCloud
섀도 동기화 방향을 지정하는 경우 다음 동작이 적용됩니다.-
섀도우의 원하는 상태에서 병합 충돌이 있는 경우 섀도우 관리자는 로컬 섀도우 문서의 충돌 섹션을 AWS IoT 클라우드의 값으로 덮어씁니다.
-
섀도우의 보고된 상태에서 병합 충돌이 있는 경우 섀도우 관리자는 AWS IoT 클라우드에서 섀도우의 충돌 섹션을 로컬 섀도우 문서의 값으로 덮어씁니다.
-
-
deviceToCloud
섀도우 동기화 방향을 지정하면 섀도 관리자가 AWS IoT 클라우드 섀도우의 충돌 섹션을 로컬 섀도우 문서의 값으로 덮어씁니다. -
cloudToDevice
섀도우 동기화 방향을 지정하면 섀도 관리자가 로컬 섀도우 문서의 충돌 섹션을 AWS IoT 클라우드의 값으로 덮어씁니다.