

지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 [에서 마이그레이션 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)을 참조하세요.

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

# 수명이 긴 Lambda 함수 테스트
<a name="long-testing"></a>

 AWS IoT Greengrass 코어가 시작되어 단일 컨테이너(또는 샌드박스)에서 실행되면 *[수명이 긴](lambda-functions.md#lambda-lifecycle)* Lambda 함수가 자동으로 시작됩니다. 함수 핸들러 외부에서 정의된 변수 및 사전 처리 로직은 함수 핸들러를 호출할 때마다 유지됩니다. 함수 핸들러를 여러 번 호출하면 앞선 호출의 실행을 마칠 때까지 대기됩니다.

 이 모듈에 사용되는 `greengrassHelloWorldCounter.py` 코드는 함수 핸들러 외부의 `my_counter` 변수를 정의합니다.

**참고**  
 AWS Lambda 콘솔 또는 GitHub의 [AWS IoT Greengrass Python용 코어 SDK](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py)에서 코드를 볼 수 있습니다.

이 단계에서는 Lambda 함수 및가 MQTT 메시지를 교환 AWS IoT 할 수 있도록 허용하는 구독을 생성합니다. 그런 다음 그룹을 배포하고 함수를 테스트합니다.

1. 그룹 구성 페이지에서 **구독**을 선택한 다음 **추가**를 선택합니다.

1. **소스 유형**에서 **Lambda 함수**를 선택한 다음 **Greengrass\$1HelloWorld\$1Counter**를 선택합니다.

1. **대상 유형**에서 **서비스**를 선택하고 **IoT Cloud**를 선택합니다.

1. **주제 필터**에 **hello/world/counter**을 입력합니다.

1. **구독 생성**을 선택합니다.

   이 단일 구독은 `Greengrass_HelloWorld_Counter` Lambda 함수에서 로 한 방향으로만 진행됩니다 AWS IoT. 클라우드에서 이 Lambda 함수를 간접 호출하거나 트리거하려면 반대 방향의 구독을 생성해야 합니다.

1. 1 - 5단계를 수행하여 다음 값을 사용하는 다른 구독을 추가합니다. 이 구독은 Lambda 함수가 AWS IoT에서 메시지를 받을 수 있습니다. AWS IoT 콘솔에서 함수를 호출하는 메시지를 보낼 때이 구독을 사용합니다.
   + 소스의 경우 **서비스**를 선택한 다음 **IoT Cloud**를 선택합니다.
   + 대상의 경우 **Lambdas 함수**를 선택한 다음 **Greengrass\$1HelloWorld\$1Counter**를 선택합니다.
   + 주제 필터의 경우 **hello/world/counter/trigger**를 입력합니다.

   이 주제 필터에서 `/trigger` 확장이 사용되는 것은 2개의 구독을 생성했고 이 두 구독이 서로 간섭하지 않아야 하기 때문입니다.

1. [코어 장치로 클라우드 구성 배포](configs-core.md) 섹션에 설명된 대로 Greengrass 대몬(daemon)이 실행 중인지 확인합니다.

1. <a name="console-actions-deploy"></a>그룹 구성 페이지에서 **배포**를 선택합니다.

1. <a name="console-test-after-deploy"></a>배포가 완료되면 AWS IoT 콘솔 홈 페이지로 돌아가 **테스트를** 선택합니다.

1. 다음 필드를 구성합니다.
   + **구독 주제**에 **hello/world/counter**를 입력합니다.
   + **서비스 품질**에서 **0**을 선택합니다.
   + **MQTT 페이로드 디스플레이**에서 **페이로드를 문자열로 표시**를 선택합니다.

1. **구독**을 선택합니다.

   이 모듈의 [1부](module3-I.md)와 달리 `hello/world/counter` 구독 후에는 메시지가 표시되지 않습니다. 이는 `hello/world/counter` 주제에 게시하는 `greengrassHelloWorldCounter.py` 코드가 함수 핸들러 내에 있고 함수 핸들러는 함수가 간접 호출될 때에만 실행되기 때문입니다.

   이 모듈에서는 `hello/world/counter/trigger` 주제에 대한 MQTT 메시지를 받을 때 간접 호출되도록 `Greengrass_HelloWorld_Counter` Lambda 함수를 구성했습니다.

   **Greengrass\$1HelloWorld\$1Counter**에서 **IoT Cloud**로의 구독을 통해 함수는 `hello/world/counter` 주제의 AWS IoT 에 메시지를 전송할 수 있습니다. **IoT Cloud**에서 **Greengrass\$1HelloWorld\$1Counter**로 구독 AWS IoT 하면가 `hello/world/counter/trigger` 주제의 함수로 메시지를 보낼 수 있습니다.

1. 긴 수명 주기를 테스트하려면 `hello/world/counter/trigger` 주제에 메시지를 게시하여 Lambda 함수를 간접 호출합니다. 기본 메시지를 사용할 수 있습니다.  
![\[주제에 게시 버튼이 강조 표시된 상태로 hello/world/counter/trigger로 전송된 AWS IoT 콘솔 메시지에서 기본 Hello입니다.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-057.png)
**참고**  
 이 `Greengrass_HelloWorld_Counter` 함수는 수신된 메시지의 내용을 무시합니다. 다만 `function_handler`에서 코드를 실행하며 코드는 `hello/world/counter` 주제에 메시지를 전송합니다. 이 코드는 GitHub의 [AWS IoT Greengrass Core SDK for Python](https://github.com/aws/aws-greengrass-core-sdk-python/blob/master/examples/HelloWorldCounter/greengrassHelloWorldCounter.py)에서 검토할 수 있습니다.

메시지가 `hello/world/counter/trigger` 주제에 게시될 때마다 `my_counter` 변수가 증가합니다. 이 간접 호출 횟수는 Lambda 함수에서 전송된 메시지에 표시됩니다. 함수 핸들러에는 20초의 절전 주기(`time.sleep(20)`)가 포함되므로 핸들러를 반복적으로 트리거하면 AWS IoT Greengrass 코어에서 응답이 대기열에 추가됩니다.

![\[1, 2, 3에서 증가하는 Invocation Count를 보여 주는 스크린샷\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-058.png)
