

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

# 구성 요소에서 섀도와 연동
<a name="interact-with-shadows-in-components"></a>

로컬 섀도 서비스를 사용하여 로컬 섀도 문서 및 클라이언트 디바이스 섀도 문서를 읽고 수정하는 Lambda 함수 구성 요소를 포함하는 사용자 지정 구성 요소를 개발할 수 있습니다.

사용자 지정 구성 요소는 AWS IoT Device SDK 또는 AWS IoT Greengrass 구성 요소 SDK의 AWS IoT Greengrass 코어 IPC 라이브러리를 사용하여 로컬 섀도우 서비스와 상호 작용합니다. [섀도 관리자](shadow-manager-component.md) 구성 요소는 코어 디바이스에서 로컬 섀도 서비스를 활성화합니다.

Greengrass 코어 디바이스에 섀도 관리자 구성 요소를 배포하려면 `aws.greengrass.ShadowManager` 구성 요소가 포함된 [배포를 생성](create-deployments.md)합니다.

**참고**  
기본적으로 섀도 관리자 구성 요소를 배포하면 로컬 섀도 작업만 활성화됩니다. AWS IoT Greengrass 가 코어 디바이스 섀도우에 대한 섀도 상태 정보 또는 클라이언트 디바이스에 대한 섀도우를의 해당 클라우드 섀도 문서에 동기화하도록 하려면 `synchronize` 파라미터가 포함된 섀도 관리자 구성 요소에 대한 구성 업데이트를 생성 AWS IoT Core해야 합니다. 자세한 내용은 [로컬 디바이스 섀도우를와 동기화 AWS IoT Core](sync-shadows-with-iot-core.md) 단원을 참조하십시오.

**Topics**
+ [섀도 상태 검색 및 수정](#interact-shadow-states)
+ [섀도 상태 변경에 대응](#react-shadow-events)

## 섀도 상태 검색 및 수정
<a name="interact-shadow-states"></a>

섀도 IPC 작업은 로컬 섀도 문서에서 상태 정보를 검색하고 업데이트합니다. 섀도 관리자 구성 요소는 코어 디바이스에서 이러한 섀도 문서의 스토리지를 처리합니다.

**로컬 섀도 상태를 수정하려면**

1. 구성 요소가 로컬 섀도 주제에 대한 메시지를 수신할 수 있도록 허용하는 권한 부여 정책을 사용자 지정 구성 요소의 레시피에 추가합니다.

   권한 부여 정책의 예는 [로컬 섀도 IPC 권한 부여 정책 예제](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples)를 참조하세요.

1. 섀도 IPC 작업을 사용하여 섀도 상태 정보를 검색하고 수정합니다. 구성 요소 코드에서 섀도 IPC 작업을 사용하는 방법에 대한 자세한 내용은 [로컬 섀도와 연동](ipc-local-shadows.md) 섹션을 참조하세요.

**참고**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
코어 디바이스가 클라이언트 디바이스 섀도와 연동할 수 있도록 하려면 MQTT 브리지 구성 요소도 구성하고 배포해야 합니다. 자세한 내용은 [섀도 관리자가 클라이언트 디바이스와 통신할 수 있도록 설정](work-with-client-device-shadows.md)을 참조하세요.

## 섀도 상태 변경에 대응
<a name="react-shadow-events"></a>

Greengrass 구성 요소는 로컬 게시/구독 인터페이스를 사용하여 코어 디바이스에서 통신합니다. 사용자 지정 구성 요소가 섀도 상태 변경에 대응할 수 있도록 하려면 로컬 게시/구독 주제를 구독할 수 있습니다. 이렇게 하면 구성 요소가 로컬 섀도 주제에 대한 메시지를 수신한 다음 해당 메시지에 대한 작업을 수행할 수 있습니다.

로컬 섀도 주제는 AWS IoT 디바이스 섀도 MQTT 주제와 동일한 형식을 사용합니다. 자세한 내용은 *AWS IoT 개발자 안내서*의 [Device Shadow MQTT topics](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html)를 참조하세요.

**로컬 섀도 상태 변경에 대응하려면**

1. 구성 요소가 로컬 섀도 주제에 대한 메시지를 수신할 수 있도록 허용하는 액세스 제어 정책을 사용자 지정 구성 요소의 레시피에 추가합니다.

   권한 부여 정책의 예는 [로컬 섀도 IPC 권한 부여 정책 예제](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples)를 참조하세요.

1. 구성 요소에서 사용자 지정 작업을 시작하려면 `SubscribeToTopic` IPC 작업을 사용하여 메시지를 수신하려는 섀도 주제를 구독합니다. 구성 요소 코드에서 로컬 게시/구독 IPC 작업을 사용하는 방법에 대한 자세한 내용은 [로컬 메시지 게시/구독](ipc-publish-subscribe.md) 섹션을 참조하세요.

1. Lambda 함수를 호출하려면 이벤트 소스 구성을 사용하여 섀도 주제의 이름을 제공하고 로컬 게시/구독 주제임을 지정합니다. Lambda 함수 구성 요소 생성에 대한 자세한 내용은 [AWS Lambda 함수 실행](run-lambda-functions.md) 섹션을 참조하세요.

**참고**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
코어 디바이스가 클라이언트 디바이스 섀도와 연동할 수 있도록 하려면 MQTT 브리지 구성 요소도 구성하고 배포해야 합니다. 자세한 내용은 [섀도 관리자가 클라이언트 디바이스와 통신할 수 있도록 설정](work-with-client-device-shadows.md)을 참조하세요.