AWS Lambda함수 실행 - AWS IoT Greengrass

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

AWS Lambda함수 실행

참고

AWS IoT Greengrass현재 Windows 코어 장치에서는 이 기능을 지원하지 않습니다.

AWS Lambda함수를 AWS IoT Greengrass 핵심 장치에서 실행되는 구성 요소로 가져올 수 있습니다. 다음과 같은 경우에 이 작업을 수행하는 것이 좋습니다.

Lambda 함수는 다음 구성 요소에 대한 종속성을 포함합니다. 함수를 가져올 때 이러한 구성 요소를 종속성으로 정의할 필요는 없습니다. Lambda 함수 구성 요소를 배포할 때 배포에는 이러한 Lambda 구성 요소 종속성이 포함됩니다.

요구 사항

코어 디바이스와 Lambda 함수가 다음 요구 사항을 충족해야 Core 소프트웨어에서 AWS IoT Greengrass 함수를 실행할 수 있습니다.

  • 코어 디바이스는 Lambda 함수를 실행하기 위한 요구 사항을 충족해야 합니다. 코어 디바이스에서 컨테이너화된 Lambda 함수를 실행하려면 해당 디바이스가 해당 요구 사항을 충족해야 합니다. 자세한 설명은 Lambda 함수 요구 사항 섹션을 참조하세요.

  • Lambda 함수가 사용하는 프로그래밍 언어를 코어 디바이스에 설치해야 합니다.

    작은 정보

    프로그래밍 언어를 설치하는 구성 요소를 생성한 다음 해당 구성 요소를 Lambda 함수 구성 요소의 종속 항목으로 지정할 수 있습니다. Greengrass는 Lambda가 지원하는 모든 버전의 Python, Node.js 및 Java 런타임을 지원합니다. Greengrass는 더 이상 사용되지 않는 Lambda 런타임 버전에 추가 제한을 적용하지 않습니다. 에서 이러한 지원 중단된 런타임을 사용하는 Lambda 함수를 실행할 수는 있지만 AWS IoT Greengrass 에서 생성할 수는 없습니다. AWS Lambda Lambda 런타임용 AWS IoT Greengrass 지원에 대한 자세한 내용은 AWS Lambda함수 실행 섹션을 참조하세요.

Lambda 함수 수명 주기 구성

Lambda 함수 수명 주기에 따라 함수가 시작되는 시점과 컨테이너를 생성 및 사용하는 방법이 결정됩니다. 수명 주기는 또한 AWS IoT Greengrass Core 소프트웨어가 함수 핸들러 외부에 있는 변수와 전처리 로직을 유지하는 방법을 결정합니다.

AWS IoT Greengrass온디맨드 (기본값) 및 수명이 긴 수명 주기를 지원합니다.

  • 온디맨드 함수는 호출될 때 시작되고 실행할 작업이 남아 있지 않으면 중지됩니다. 기존 컨테이너를 재사용할 수 있는 경우가 아니면 함수를 호출할 때마다 별도의 컨테이너 (샌드박스라고도 함) 가 생성되어 호출을 처리합니다. 함수에 보내는 데이터를 모든 컨테이너가 처리할 수 있습니다.

    온디맨드 함수의 여러 호출을 동시에 실행할 수 있습니다.

    함수 핸들러 외부에서 정의한 변수와 전처리 로직은 새 컨테이너를 생성할 때 유지되지 않습니다.

  • 수명이 긴 (또는 고정된) 함수는 AWS IoT Greengrass Core 소프트웨어가 단일 컨테이너에서 시작되고 실행될 때 시작됩니다. 함수로 보내는 모든 데이터를 동일한 컨테이너가 처리합니다.

    AWS IoT GreengrassCore 소프트웨어가 이전 호출을 실행할 때까지 여러 호출이 대기열에 추가됩니다.

    함수 핸들러 외부에서 정의한 변수와 전처리 로직은 핸들러를 호출할 때마다 보존됩니다.

    초기 입력 없이 작업을 시작해야 하는 경우 수명이 긴 Lambda 함수를 사용하십시오. 예를 들어 수명이 긴 함수는 기계 학습 모델을 로드하고 처리를 시작하여 함수가 디바이스 데이터를 수신할 때 바로 사용할 수 있습니다.

    참고

    수명이 긴 함수에는 핸들러를 호출할 때마다 타임아웃이 발생합니다. 무기한 실행되는 코드를 호출하려면 핸들러 외부에서 코드를 시작해야 합니다. 함수 초기화를 방해할 수 있는 차단 코드가 핸들러 외부에 없는지 확인하세요.

    이러한 함수는 AWS IoT Greengrass Core 소프트웨어가 중지되지 않는 한 (예: 배포 또는 재부팅) 실행됩니다. 함수에서 포착되지 않은 예외가 발생하거나, 메모리 제한을 초과하거나, 핸들러 시간 초과와 같은 오류 상태가 되면 이러한 함수가 실행되지 않습니다.

컨테이너 재사용에 대한 자세한 내용은 Compute 블로그의 컨테이너 재사용 이해를 참조하십시오. AWS Lambda AWS

Lambda 함수 컨테이너화를 구성합니다.

기본적으로 Lambda 함수는 컨테이너 내에서 실행됩니다. AWS IoT Greengrass Greengrass 컨테이너는 함수와 호스트 간의 격리를 제공합니다. 이러한 격리는 호스트와 컨테이너 내 함수 모두의 보안을 강화합니다.

사용 사례에서 컨테이너화 없이 실행해야 하는 경우가 아니라면 Greengrass 컨테이너에서 Lambda 함수를 실행하는 것이 좋습니다. Greengrass 컨테이너에서 Lambda 함수를 실행하면 리소스에 대한 액세스를 제한하는 방법을 더 잘 제어할 수 있습니다.

다음과 같은 경우 컨테이너화 없이 Lambda 함수를 실행할 수 있습니다.

  • 컨테이너 모드를 지원하지 않는 AWS IoT Greengrass 디바이스에서 실행하려고 합니다. 특수 Linux 배포판을 사용하거나 오래된 이전 커널 버전을 사용하려는 경우를 예로 들 수 있습니다.

  • 자체 OverlayFS를 사용하는 다른 컨테이너 환경에서 Lambda 함수를 실행하려 하지만 Greengrass 컨테이너에서 실행 시 OverlayFS 충돌이 발생하는 경우.

  • 배포 시 경로를 확인할 수 없거나 배포 후 경로가 변경될 수 있는 로컬 리소스에 액세스해야 합니다. 이 리소스의 예로는 플러그형 기기를 들 수 있습니다.

  • 프로세스로 작성된 이전 애플리케이션이 있는데 Greengrass 컨테이너에서 실행할 때 문제가 발생합니다.

컨테이너화의 차이점
컨테이너화 참고

Greengrass 컨테이너

  • 모든 AWS IoT Greengrass 기능은 Greengrass 컨테이너에서 Lambda 함수를 실행할 때 사용 가능합니다.

  • Greengrass 컨테이너에서 실행되는 Lambda 함수는 동일한 시스템 그룹에서 실행되더라도 다른 Lambda 함수의 배포된 코드에 액세스할 수 없습니다. 즉, Lambda 함수는 서로 격리된 상태로 실행됩니다.

  • AWS IoT GreengrassCore 소프트웨어는 Lambda 함수와 동일한 컨테이너에서 모든 하위 프로세스를 실행하므로 Lambda 함수가 중지되면 하위 프로세스도 중지됩니다.

컨테이너 없음

  • 다음 기능은 컨테이너화되지 않은 Lambda 함수에서는 사용할 수 없습니다.

    • Lambda 함수 메모리 제한.

    • 로컬 디바이스 및 볼륨 리소스. Lambda 함수 리소스 대신 코어 디바이스의 파일 경로를 사용하여 이러한 리소스에 액세스해야 합니다.

  • 컨테이너화되지 않은 Lambda 함수가 기계 학습 리소스에 액세스하는 경우 리소스 소유자를 식별하고 Lambda 함수가 아닌 리소스에 대한 액세스 권한을 설정해야 합니다.

  • 컨테이너화되지 않은 Lambda 함수는 동일한 시스템 그룹에서 실행되는 다른 Lambda 함수의 배포된 코드에 읽기 전용으로 액세스할 수 있습니다.

Lambda 함수를 배포할 때 컨테이너화를 변경하면 함수가 예상대로 작동하지 않을 수 있습니다. Lambda 함수가 새 컨테이너화 설정으로 더 이상 사용할 수 없는 로컬 리소스를 사용하는 경우 배포가 실패합니다.

  • Lambda 함수를 Greengrass 컨테이너에서 실행하는 것에서 컨테이너화 없이 실행하는 것으로 변경하면 함수의 메모리 제한이 삭제됩니다. 연결된 로컬 리소스를 사용하기보다 파일 시스템에 직접 액세스해야 합니다. Lambda 함수를 배포하기 전에 연결된 리소스를 모두 제거해야 합니다.

  • Lambda 함수를 컨테이너화 없이 실행하는 방식에서 컨테이너에서 실행하는 방식으로 변경하면 Lambda 함수는 파일 시스템에 대한 직접 액세스 권한을 상실합니다. 각 함수의 메모리 제한을 정의하거나 기본 16MB 메모리 제한을 수락해야 합니다. Lambda 함수를 배포할 때 각 Lambda 함수에 대해 이러한 설정을 구성할 수 있습니다.

Lambda 함수 구성 요소의 컨테이너화 설정을 변경하려면 구성 요소를 배포할 때 containerMode 구성 파라미터의 값을 다음 옵션 중 하나로 설정하십시오.

  • NoContainer— 구성 요소는 격리된 런타임 환경에서 실행되지 않습니다.

  • GreengrassContainer— 구성 요소는 AWS IoT Greengrass 컨테이너 내부의 격리된 런타임 환경에서 실행됩니다.

구성 요소를 배포하고 구성하는 방법에 대한 자세한 내용은 디바이스에 AWS IoT Greengrass 구성 요소 배포 및 을 참조하십시오구성 요소 구성 업데이트.