수명이 긴 Lambda 함수 테스트 - AWS IoT Greengrass

다음에 대한 설명서를 보고 있습니다.AWS IoT Greengrass Version 1.AWS IoT Greengrass Version 2의 최신 주요 버전입니다AWS IoT Greengrass. 사용에 관한 자세한 내용은 단원을 참조하십시오.AWS IoT Greengrass V2에 대한 자세한 내용은AWS IoT Greengrass Version 2개발자 안내서.

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

수명이 긴 Lambda 함수 테스트

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

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

참고

에서 코드를 볼 수 있습니다.AWS Lambda콘솔 또는AWS IoT GreengrassPython용 SDK(GitHub에 있음).

 

이 단계에서는 Lambda 함수 및AWS IoT를 사용하여 MQTT 메시지를 교환합니다. 그런 다음 그룹을 배포하고 함수를 테스트합니다.

  1. 그룹 구성 페이지에서 [Subscriptions]를 선택한 다음 [Add Subscription]을 선택합니다.

  2. 소스 선택에서 Lambda를 선택한 다음 Greengrass_HelloWorld_Counter를 선택합니다.

  3. 대상 선택에서 서비스를 선택하고 IoT Cloud를 선택한 후 다음을 선택합니다.

    
                            Greengrass_HelloWord_Counter, IoT Cloud(IoT 클라우드) 및 다음 버튼이 강조 표시된 소스 및 대상 선택 스크린샷
  4. 주제 필터hello/world/counter을 입력합니다. 다음을 선택한 후 완료를 선택합니다.

    
                            hello/world/counter 및 다음 버튼이 강조 표시된 스크린샷

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

  5. 1 - 4단계를 수행하여 다음 값을 사용하는 다른 구독을 추가합니다. 이 구독은 Lambda 함수가AWS IoT. 에서 메시지를 보낼 때 이 구독을 사용합니다.AWS IoT콘솔에서 함수를 호출합니다.

    • 소스의 경우 서비스를 선택한 다음 IoT Cloud를 선택합니다.

    • 대상의 경우 Lambdas를 선택한 다음 Greengrass_HelloWorld_Counter를 선택합니다.

    • 주제 필터의 경우 hello/world/counter/trigger를 입력합니다.

     

    
                            IoT Cloud(IoT 클라우드), hello/world/counter/trigger, Greengrass_HelloWorld_Counter 및 완료가 강조 표시된 구독 확인 및 저장 페이지 스크린샷

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

  6. 코어 디바이스로 클라우드 구성 배포 단원에 설명된 대로 Greengrass 데몬이 실행 중인지 확인합니다.

  7. 그룹 구성 페이지의 Actions(작업)에서 Deploy(배포)를 선택합니다.

    
                배포 작업이 강조 표시된 그룹 페이지 스크린샷입니다.

    그러면 그룹 구성이AWS IoT Greengrass코어 디바이스에서 를 시작합니다 문제 해결에 대한 도움말은 AWS IoT Greengrass 문제 해결 단원을 참조하십시오.

  8. 배포가 완료된 후,AWS IoT콘솔 홈 페이지에서테스트.

  9. 다음 필드를 구성합니다.

    • 구독 주제hello/world/counter를 입력합니다.

    • 서비스 품질에서 0을 선택합니다.

    • MQTT 페이로드 디스플레이에서 페이로드를 문자열로 표시를 선택합니다.

     

    
                            hello/world/counter, 0, 페이로드를 문자열로 표시, 주제 구독 버튼이 강조 표시된 구독 스크린샷
  10. 구독을 선택합니다.

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

    이 모듈에서, 당신은 구성Greengrass_HelloWorld_Counter에서 MQTT 메시지를 받을 때 호출될 Lambda 함수hello/world/counter/trigger주제. 관련 구독을 검사하여 이를 확인할 수 있습니다.

    
                            greengrass_HelloWorld_Counter 관련 구독을 보여 주는 Subscriptions 웹페이지

    Greengrass_HelloWorld_Counter에서 IoT Cloud로의 구독을 통해 함수는 hello/world/counter 주제의 AWS IoT에 메시지를 전송할 수 있습니다. IoT Cloud에서 Greengrass_HelloWorld_Counter로의 구독을 통해 AWS IoT는 hello/world/counter/trigger 주제의 함수에 메시지를 전송할 수 있습니다.

  11. 긴 수명 주기를 테스트하려면 Lambda 함수를 호출하려면hello/world/counter/trigger주제. 기본 메시지를 사용할 수 있습니다.

    
                            에서 기본 HelloAWS IoT주제에 게시 버튼이 강조 표시된 상태로 헬로/월드/카운터/트리거로 전송된 콘솔 메시지를 표시합니다.
    참고

    Greengrass_HelloWorld_Counter 함수는 수신된 메시지의 내용을 무시합니다. 다만 function_handler에서 코드를 실행하며 코드는 hello/world/counter 주제에 메시지를 전송합니다. 이 코드는AWS IoT GreengrassPython용 SDK(GitHub에 있음).

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


                    1, 2, 3에서 증가하는 Invocation Count를 보여 주는 스크린샷