지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 에서 마이그레이션 AWS IoT Greengrass Version 1을 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
수명이 긴 Lambda 함수 테스트
AWS IoT Greengrass 코어가 시작되어 단일 컨테이너(또는 샌드박스)에서 실행되면 수명이 긴 Lambda 함수가 자동으로 시작됩니다. 함수 핸들러 외부에서 정의된 변수 및 사전 처리 로직은 함수 핸들러를 호출할 때마다 유지됩니다. 함수 핸들러를 여러 번 호출하면 앞선 호출의 실행을 마칠 때까지 대기됩니다.
이 모듈에 사용되는 greengrassHelloWorldCounter.py 코드는 함수 핸들러 외부의 my_counter 변수를 정의합니다.
참고
AWS Lambda 콘솔 또는 GitHub의 AWS IoT Greengrass Python용 코어 SDK
이 단계에서는 Lambda 함수 및가 MQTT 메시지를 교환 AWS IoT 할 수 있도록 허용하는 구독을 생성합니다. 그런 다음 그룹을 배포하고 함수를 테스트합니다.
-
그룹 구성 페이지에서 구독을 선택한 다음 추가를 선택합니다.
-
소스 유형에서 Lambda 함수를 선택한 다음 Greengrass_HelloWorld_Counter를 선택합니다.
-
대상 유형에서 서비스를 선택하고 IoT Cloud를 선택합니다.
-
주제 필터에
hello/world/counter을 입력합니다. -
구독 생성을 선택합니다.
이 단일 구독은
Greengrass_HelloWorld_CounterLambda 함수에서 로 한 방향으로만 진행됩니다 AWS IoT. 클라우드에서 이 Lambda 함수를 간접 호출하거나 트리거하려면 반대 방향의 구독을 생성해야 합니다. -
1 - 5단계를 수행하여 다음 값을 사용하는 다른 구독을 추가합니다. 이 구독은 Lambda 함수가 AWS IoT에서 메시지를 받을 수 있습니다. AWS IoT 콘솔에서 함수를 호출하는 메시지를 보낼 때이 구독을 사용합니다.
-
소스의 경우 서비스를 선택한 다음 IoT Cloud를 선택합니다.
-
대상의 경우 Lambdas 함수를 선택한 다음 Greengrass_HelloWorld_Counter를 선택합니다.
-
주제 필터의 경우
hello/world/counter/trigger를 입력합니다.
이 주제 필터에서
/trigger확장이 사용되는 것은 2개의 구독을 생성했고 이 두 구독이 서로 간섭하지 않아야 하기 때문입니다. -
코어 장치로 클라우드 구성 배포 섹션에 설명된 대로 Greengrass 대몬(daemon)이 실행 중인지 확인합니다.
-
그룹 구성 페이지에서 배포를 선택합니다.
-
배포가 완료되면 AWS IoT 콘솔 홈 페이지로 돌아가 테스트를 선택합니다.
-
다음 필드를 구성합니다.
-
구독 주제에
hello/world/counter를 입력합니다. -
서비스 품질에서 0을 선택합니다.
-
MQTT 페이로드 디스플레이에서 페이로드를 문자열로 표시를 선택합니다.
-
-
구독을 선택합니다.
이 모듈의 1부와 달리
hello/world/counter구독 후에는 메시지가 표시되지 않습니다. 이는hello/world/counter주제에 게시하는greengrassHelloWorldCounter.py코드가 함수 핸들러 내에 있고 함수 핸들러는 함수가 간접 호출될 때에만 실행되기 때문입니다.이 모듈에서는
hello/world/counter/trigger주제에 대한 MQTT 메시지를 받을 때 간접 호출되도록Greengrass_HelloWorld_CounterLambda 함수를 구성했습니다.Greengrass_HelloWorld_Counter에서 IoT Cloud로의 구독을 통해 함수는
hello/world/counter주제의 AWS IoT 에 메시지를 전송할 수 있습니다. IoT Cloud에서 Greengrass_HelloWorld_Counter로 구독 AWS IoT 하면가hello/world/counter/trigger주제의 함수로 메시지를 보낼 수 있습니다. -
긴 수명 주기를 테스트하려면
hello/world/counter/trigger주제에 메시지를 게시하여 Lambda 함수를 간접 호출합니다. 기본 메시지를 사용할 수 있습니다.
참고
이
Greengrass_HelloWorld_Counter함수는 수신된 메시지의 내용을 무시합니다. 다만function_handler에서 코드를 실행하며 코드는hello/world/counter주제에 메시지를 전송합니다. 이 코드는 GitHub의 AWS IoT Greengrass Core SDK for Python에서 검토할 수 있습니다.
메시지가 hello/world/counter/trigger 주제에 게시될 때마다 my_counter 변수가 증가합니다. 이 간접 호출 횟수는 Lambda 함수에서 전송된 메시지에 표시됩니다. 함수 핸들러에는 20초의 절전 주기(time.sleep(20))가 포함되므로 핸들러를 반복적으로 트리거하면 AWS IoT Greengrass 코어에서 응답이 대기열에 추가됩니다.