AWS IoT Greengrass 코어에서 Lambda 함수 실행 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트가 AWS IoT Greengrass V1 릴리스되지 않습니다. 에서 실행되는 기기는 AWS IoT Greengrass V1 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 새로운 기능이 크게 추가되고 추가 플랫폼에 대한 지원이 추가되는 으로 마이그레이션하는 AWS IoT Greengrass Version 2 것이 좋습니다.

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

AWS IoT Greengrass 코어에서 Lambda 함수 실행

AWS IoT Greengrass은(는) 사용자가 AWS Lambda에 작성한 사용자 정의 코드를 위한 컨테이너화된 Lambda 런타임 환경을 제공합니다. AWS IoT Greengrass 코어에 배포된 Lambda 함수는 코어의 로컬 Lambda 런타임에서 실행됩니다. 로컬 Lambda 함수는 로컬 이벤트, 클라우드의 메시지 및 기타 소스에 의해 트리거가 가능하기 때문에 로컬 컴퓨팅 기능을 연결된 디바이스에 제공할 수 있습니다. 예를 들어 클라우드로 데이터를 전송하기 앞서 Lambda 함수를 사용해 디바이스 데이터를 필터링할 수 있습니다.

코어에 Lambda 함수를 배포하려면 Greengrass 그룹에 해당 함수를 추가하고(기존 Lambda 함수를 참조하여) 해당 함수에 대해 그룹별 설정을 구성한 다음, 그룹을 배포합니다. 함수가 AWS 서비스에 액세스하는 경우에는 Greengrass 그룹 역할에 필요한 모든 권한을 추가해야 합니다.

권한, 격리, 메모리 제한 등을 비롯해 Lambda 함수 실행 방법을 결정하는 파라미터를 구성할 수 있습니다. 자세한 설명은 그룹별 구성을 사용한 Lambda 함수 실행 제어 섹션을 참조하세요.

참고

이 설정으로 AWS IoT Greengrass를 Docker 컨테이너에서 실행할 수도 있습니다. 자세한 설명은 도커 컨테이너에서의 AWS IoT Greengrass 실행 섹션을 참조하세요.

다음 표에는 지원되는 AWS Lambda 런타임 및 해당 런타임이 실행될 수 있는 AWS IoT Greengrass 코어 소프트웨어 버전이 나와 있습니다.

언어 또는 플랫폼 GGC 버전
Python 3.8 1.11
Python 3.7 1.9 이상
Python 2.7 * 1.0 이상
Java 8 1.1 이상
Node.js 12.x * 1.10 이상
Node.js 8.10 * 12.7 이상
Node.js 6.10 * 12.7 이상
C, C++ 1.6 이상

* 지원되는 버전의 AWS IoT Greengrass에서 이러한 런타임을 사용하는 Lambda 함수를 실행할 수 있지만 AWS Lambda에서 생성할 수는 없습니다. 디바이스의 런타임이 해당 함수에 지정된 AWS Lambda 런타임과 다른 경우 FunctionDefintionVersionFunctionRuntimeOverride을(를) 사용하여 자체 런타임을 선택할 수 있습니다. 자세한 내용은 을 참조하십시오 CreateFunctionDefinition. 지원되는 런타임에 대한 자세한 내용은 AWS Lambda 개발자 안내서런타임 지원 정책을 참조하십시오.

Greengrass Lambda 함수용 SDK

AWS는 AWS IoT Greengrass에서 실행되는 Lambda 함수에서 사용 가능한 SDK를 3개 제공합니다. 이 SDK는 서로 다른 패키지에 포함되어 있기 때문에 두 패키지를 동시에 사용할 수 있습니다. Lambda 함수에서 SDK를 사용하려면 에 업로드하는 Lambda 함수 배포 패키지AWS Lambda에 SDK를 포함시킵니다.

AWS IoT Greengrass 코어 SDK

다음 사항을 위해 로컬 Lambda 함수를 활성화해 코어와 상호 작용합니다.

  • MQTT 메시지를 AWS IoT Core와 교환합니다.

  • MQTT 메시지를 Greengrass 그룹의 커넥터, 디바이스, 기타 Lambda 함수와 교환합니다.

  • 로컬 섀도우 서비스와 상호 작용합니다.

  • 다른 로컬 Lambda 함수를 간접적으로 호출합니다.

  • 암호 리소스에 액세스합니다.

  • 스트림 관리자와 상호 작용합니다.

AWS IoT Greengrass에서 다음 언어 및 플랫폼으로 AWS IoT Greengrass Core SDK를 제공합니다. GitHub

Lambda 함수 배포 패키지에 AWS IoT Greengrass 종속성을 포함시키려면 다음과 같이 하십시오.

  1. Lambda 함수의 런타임과 일치하는 AWS IoT Greengrass 패키지의 언어 또는 플랫폼을 다운로드합니다.

  2. 다운로드한 패키지의 압축을 풀어 SDK를 가져옵니다. SDK는 greengrasssdk 폴더입니다.

  3. 함수 코드가 포함된 Lambda 함수 배포 패키지에 greengrasssdk을 포함시킵니다. 이는 Lambda 함수를 생성할 때 AWS Lambda에 업로드하는 패키지입니다.

 

StreamManagerClient

AWS IoT Greengrass스트림 관리자 작업에는 다음 코어 SDK만 사용할 수 있습니다.

  • Java SDK (v1.4.0 이상)

  • Python SDK (v1.5.0 이상)

  • Node.js SDK (v1.6.0 이상)

Python용 AWS IoT Greengrass Core SDK를 사용하여 스트림 관리자와 상호 작용하려면 Python 3.7 이상을 설치해야 합니다. 또한 Python Lambda 함수 배포 패키지에 포함시킬 종속성을 설치해야 합니다.

  1. requirements.txt 파일이 포함된 SDK 디렉터리로 이동합니다. 이 파일은 종속성을 나열합니다.

  2. SDK 종속성을 설치합니다. 예를 들어 다음 pip 명령을 실행하여 현재 디렉터리에 설치합니다.

    pip install --target . -r requirements.txt

 

코어 디바이스에 Python용 AWS IoT Greengrass 코어 SDK를 설치합니다.

Python Lambda 함수를 실행하는 경우 pip를 사용하여 코어 디바이스에 Python의 AWS IoT Greengrass Core SDK를 설치할 수 있습니다. 그런 다음 Lambda 함수 배포 패키지에 SDK을 포함시키지 않고 함수를 배포할 수 있습니다. 자세한 내용은 greengrasssdk를 참조하십시오.

이 지원은 크기 제약이 있는 코어를 위한 것입니다. 가능하면 Lambda 함수 배포 패키지에 SDK를 포함시키는 것이 좋습니다.

 

AWS IoT Greengrass기계 학습 SDK

Lambda 함수가 Greengrass 코어에 기계 학습 리소스로서 배포된 기계 학습 모델을 이용할 수 있도록 지원합니다. Lambda 함수는 SDK를 사용하여 코어에 커넥터로 배포된 로컬 추론 서비스를 간접적으로 호출하고 상호 작용할 수 있습니다. Lambda 함수 및 ML 커넥터는 SDK를 사용하여 업로드 및 게시를 위해 ML 피드백 커넥터로 데이터를 전송할 수도 있습니다. SDK를 사용하는 코드 예제를 포함하여 자세한 내용은 ML 이미지 분류 커넥터, ML 객체 감지 커넥터ML 피드백 커넥터 단원을 참조하십시오.

다음 표에는 SDK 버전 및 해당 버전을 실행할 수 있는 AWS IoT Greengrass 코어 소프트웨어 버전에 대해 지원되는 언어 및 플랫폼이 나와 있습니다.

SDK 버전 언어 또는 플랫폼 필요한 GGC 버전 Changelog
1.1.0 Python 3.7 또는 2.7 1.9.3 이상 Python 3.7 지원과 새로운 feedback 클라이언트를 추가했습니다.
1.0.0 Python 2.7 1.7 이상 최초 릴리스.

다운로드 정보는 AWS IoT Greengrass ML SDK 소프트웨어 섹션을 참조하세요.

AWS SDK

Amazon S3, DynamoDB, AWS IoT, 및 AWS IoT Greengrass 같은 AWS 서비스를 직접 호출할 수 있도록 로컬 Lambda 함수를 활성화합니다. Lambda 함수에서 AWS SDK를 사용하려면 배포 패키지에 이를 포함시켜야 합니다. 또한 동일한 패키지에서 AWS IoT Greengrass Core SDK로 AWS SDK를 사용하는 경우 Lambda 함수가 정확한 네임스페이스를 사용하는지 확인하십시오. Lambda 함수는 코어가 오프라인 상태일 때 AWS 또는 기타 클라우드 서비스와 통신을 할 수 없습니다.

시작 리소스 센터에서 AWS SDK를 다운로드하십시오.

배포 패키지를 만드는 방법에 대한 자세한 내용은 시작하기 튜토리얼의 Lambda 함수 생성 및 패키징 또는 AWS Lambda 개발자 안내서배포 패키지 생성을 참조하십시오.

클라우드 기반 Lambda 함수 마이그레이션

AWS IoT Greengrass 코어 SDK는 AWS SDK 프로그래밍 모델을 따르기 때문에 클라우드를 위해 개발된 Lambda 함수를 AWS IoT Greengrass 코어에서 실행되는 Lambda 함수로 손쉽게 옮길 수 있습니다.

예를 들면 다음의 Python Lambda 함수는 AWS SDK for Python (Boto3)을 사용하여 클라우드의 some/topic 주제에 메시지를 게시합니다.

import boto3 iot_client = boto3.client("iot-data") response = iot_client.publish( topic="some/topic", qos=0, payload="Some payload".encode() )

AWS IoT Greengrass 코어에서 이 함수를 옮기려면 import 명령문 및 client 초기화에서 모듈 이름을 boto3에서 greengrasssdk(으)로 바꿉니다(다음 예제 참조).

import greengrasssdk iot_client = greengrasssdk.client("iot-data") iot_client.publish(topic="some/topic", qos=0, payload="Some payload".encode())
참고

AWS IoT Greengrass 코어 SDK는 QoS = 0인 MQTT 메시지의 전송만 지원합니다. 자세한 설명은 서비스 품질 메시지 섹션을 참조하세요.

프로그래밍 모델 간의 유사성 덕분에 클라우드에서 Lambda 함수를 개발한 다음 최소한의 노력으로 AWS IoT Greengrass에 마이그레이션할 수 있습니다. Lambda 실행 파일은 클라우드에서 실행되지 않으므로 배포 전에 AWS SDK를 사용하여 클라우드에서 개발할 수 없습니다.

별칭 또는 버전을 기준으로 Lambda 함수 참조

Greengrass 그룹은 별칭(권장) 또는 버전을 기준으로 Lambda 함수를 참조할 수 있습니다. 별칭을 사용하면 함수 코드를 업데이트할 때 구독 테이블이나 그룹 정의를 변경할 필요가 없으므로 코드 업데이트를 더 쉽게 관리할 수 있습니다. 그 대신 새 함수 버전에 대한 별칭을 가리킵니다. 별칭은 그룹 배포 동안 버전 번호로 확인됩니다. 별칭을 사용하면 확인된 버전이 배포 당시 별칭이 가리키고 있는 버전으로 업데이트됩니다.

AWS IoT Greengrass은(는) $LATEST 버전에서 Lambda 별칭을 지원하지 않습니다. $LATEST 버전은 변경 불가능한 게시 함수 버전으로 제한되지 않고 언제라도 변경이 가능한데, 이는 버전 불변성이라는 AWS IoT Greengrass 원칙과 상반됩니다.

코드 변경에 따라 Lambda 함수를 계속 업데이트하기 위한 일반적인 방법은 Greengrass 그룹 및 구독에서 PRODUCTION(이)라는 별칭을 사용하는 것입니다. 새로운 버전의 Lambda 함수를 프로덕션 환경으로 승격함에 따라 별칭이 안정적인 최신 버전을 가리키도록 하고 그룹을 재배포합니다. 또한 이전 버전으로 롤백하기 위해 이 방법을 사용할 수도 있습니다.

Greengrass Lambda 함수를 위한 통신 흐름

Lambda 함수는 AWS, 로컬 서비스 및 클라우드 서비스(AWS IoT Greengrass 서비스 포함)의 다른 구성원들과의 여러 통신 방법을 지원합니다.

MQTT 메시지를 사용한 통신

Lambda 함수는 구독에 의해 제어되는 게시-구독 패턴을 사용하여 MQTT 메시지를 전송하고 수신할 수 있습니다.

이러한 통신 흐름을 통해 Lambda 함수는 메시지를 다음 엔터티와 교환할 수 있습니다.

  • 그룹 내 클라이언트 디바이스.

  • 그룹 내의 커넥터.

  • 그룹의 기타 Lambda 함수입니다.

  • AWS IoT.

  • 로컬 디바이스 섀도우 서비스.

구독은 메시지 소스와 메시지 대상, 소스에서 대상까지의 메시지 라우팅에 사용된 주제(제목)를 정의합니다. Lambda 함수에 게시되는 메시지는 함수의 등록 핸들러에 전달됩니다. 구독은 보안 강화 및 예측 가능한 상호 작용을 지원합니다. 자세한 설명은 MQTT 메시징 워크플우로의 관리형 구독 섹션을 참조하세요.

참고

코어가 오프라인 상태일 때 Lambda 함수는 디바이스, 커넥터, 기타 함수 및 로컬 섀도우와 메시지를 교환할 수 있지만, AWS IoT에 대한 메시지는 대기됩니다. 자세한 설명은 클라우드 대상을 위한 MQTT 메시지 대기열 섹션을 참조하세요.

기타 통신 흐름

  • Lambda 함수는 로컬 디바이스 및 볼륨 리소스와 코어 디바이스의 기계 학습 모델과 상호 작용하기 위해 플랫폼 고유의 운영 체제 인터페이스를 사용합니다. 예를 들어 Python 함수에서 os 모듈의 open 메서드를 사용할 수 있습니다. 함수가 리소스에 액세스하도록 허용하려면 함수가 해당 리소스와 연계되고 read-only 또는 read-write 권한을 부여 받아야 합니다. AWS IoT Greengrass 코어 버전 가용성을 포함해 자세한 내용은 Lambda 함수와 커넥터를 사용하여 로컬 리소스에 액세스Lambda 함수 코드에서 기계 학습 리소스에 액세스 를 참조하십시오.

    참고

    컨테이너화 없이 Lambda 함수를 실행하면 연결된 로컬 디바이스 및 볼륨 리소스를 사용할 수 없으며 해당 리소스에 직접 액세스해야 합니다.

  • Lambda 함수는 AWS IoT Greengrass 코어 SDK에서 Lambda 클라이언트를 사용하여 Greengrass 그룹의 다른 Lambda 함수를 호출할 수 있습니다.

  • Lambda 함수는 AWS SDK를 사용해 AWS 서비스와 통신할 수 있습니다. 자세한 내용은 AWS SDK를 참조하세요.

  • Lambda 함수는 타사 인터페이스를 사용하여 클라우드 기반 Lambda 함수처럼 외부 클라우드 서비스와 통신할 수 있습니다.

참고

Lambda 함수는 코어가 오프라인 상태일 때 AWS 또는 기타 클라우드 서비스와 통신을 할 수 없습니다.

입력 MQTT 주제(또는 제목) 검색

AWS IoT Greengrass는 구독을 사용하여 그룹 내의 디바이스, Lambda 함수 및 커넥터와 AWS IoT 또는 로컬 섀도우 서비스 간의 MQTT 메시지 교환을 제어합니다. 구독은 메시지 원본, 메시지 대상 및 메시지 라우팅에 사용되는 MQTT 주제를 정의합니다. 대상이 Lambda 함수이면 소스가 메시지를 게시할 때 함수 핸들러가 호출됩니다. 자세한 설명은 MQTT 메시지를 사용한 통신 섹션을 참조하세요.

다음 예에서는 Lambda 함수가 핸들러에 전달되는 context에서 입력 항목을 가져올 수 있는 방법을 보여 줍니다. 컨텍스트 계층 구조(context.client_context.custom['subject'])에서 subject 키에 액세스하여 이 작업을 수행합니다. 또한 예제에서는 입력 JSON 메시지를 구문 분석한 후 구문 분석된 주제와 메시지를 게시합니다.

참고

AWS IoT Greengrass API에서 구독의 주제는 subject 속성으로 나타냅니다.

import greengrasssdk import logging client = greengrasssdk.client('iot-data') OUTPUT_TOPIC = 'test/topic_results' def get_input_topic(context): try: topic = context.client_context.custom['subject'] except Exception as e: logging.error('Topic could not be parsed. ' + repr(e)) return topic def get_input_message(event): try: message = event['test-key'] except Exception as e: logging.error('Message could not be parsed. ' + repr(e)) return message def function_handler(event, context): try: input_topic = get_input_topic(context) input_message = get_input_message(event) response = 'Invoked on topic "%s" with message "%s"' % (input_topic, input_message) logging.info(response) except Exception as e: logging.error(e) client.publish(topic=OUTPUT_TOPIC, payload=response) return

함수를 테스트하려면 기본 구성 설정을 사용하여 그룹에 함수를 추가하십시오. 그리고 나서 다음 구독을 추가하고 그룹을 배포합니다. 지침은 모듈 3(1부): AWS IoT Greengrass의 Lambda 함수을(을) 참조하십시오.

소스(Source) 대상 주제 필터
IoT Cloud 이 함수 test/input_message
이 함수 IoT Cloud test/topic_results

배포가 완료되면 함수를 호출합니다.

  1. AWS IoT 콘솔에서 MQTT 테스트 클라이언트 페이지를 엽니다.

  2. 주제 구독 탭을 선택하여 test/topic_results 주제를 구독하십시오.

  3. 주제에 게시 탭을 선택하여 test/input_message 주제에 메시지를 게시하십시오. 이 예제에서는 test-key 속성을 JSON 메시지에 포함해야 합니다.

    { "test-key": "Some string value" }

    성공하면 함수가 입력 주제에 메시지 문자열을 test/topic_results 주제에 게시합니다.

Greengrass Lambda 함수의 라이프사이클 구성

Lambda 함수 수명 주기에 따라 함수가 시작되는 시점과 컨테이너를 생성 및 사용하는 방법이 결정됩니다. 또한 수명 주기는 함수 핸들러 외부에 있는 변수 및 사전 처리 로직이 보관되는 방법을 결정합니다.

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

  • 온디맨드 함수는 호출될 때 시작되고 실행할 작업이 남아 있지 않을 때 종료됩니다. 기존 컨테이너를 재사용할 수 있는 경우가 아닌 한, 함수를 호출하면 호출을 처리하기 위해 별도의 컨테이너(또는 샌드박스)가 생성됩니다. 함수에 전송되는 데이터는 어떤 컨테이너에 의해서든 가져올 수 있습니다.

    온디맨드 함수에 대한 다중 호출은 병렬로 실행될 수 있습니다.

    함수 핸들러 외부에서 정의된 변수 및 사전 처리 로직은 새 컨테이너 생성 시 보관되지 않습니다.

  • 수명이 긴(또는 고정) 함수는 AWS IoT Greengrass 코어가 시작될 때 자동으로 시작되며 단일 컨테이너에서 실행됩니다. 함수에 전송되는 모든 데이터는 동일한 컨테이너가 가져옵니다.

    이전 호출이 실행될 때까지 다중 호출은 대기 상태가 됩니다.

    함수 핸들러 외부에서 정의된 변수 또는 사전 처리 로직은 핸들러를 호출할 때마다 보관됩니다.

    수명이 긴 Lambda 함수는 초기 입력 없이 작업을 시작해야 할 때 유용합니다. 예를 들어 수명이 긴 함수는 함수가 디바이스 데이터 수신을 시작할 때 준비가 되도록 ML 모델을 로드해서 처리를 시작할 수 있습니다.

    참고

    수명이 긴 함수는 핸들러 호출과 관련해 제한 시간이 있다는 점에 유의하십시오. 무한정 실행되는 코드를 실행하고 싶은 경우에는 핸들러 외부에서 이를 시작해야 합니다. 핸들러 외부에 함수의 초기화 완료를 방해하는 차단 코드가 없는지 확인하십시오.

    코어가 중지되지 않으면(예: 그룹 배포 또는 디바이스 재부팅 도중) 이 함수가 실행됩니다. 또는 함수가 오류 상태(핸들러 시간 초과, 확인되지 않은 예외 또는 메모리 제한을 초과하는 경우 등)가 됩니다.

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

Lambda 실행 파일

이 기능은 AWS IoT Greengrass 코어 v1.6 이상에 사용할 수 있습니다.

Lambda 실행 파일은(는) 코어 환경에서 이진 코드를 실행하는 데 사용할 수 있는Greengrass Lambda 함수의 유형입니다. 이를 통해 디바이스별 기능을 기본적으로 실행할 수 있으며 컴파일된 코드의 공간이 더 작아지는 이점을 누릴 수 있습니다. Lambda 실행 파일은 이벤트에 의해 간접적으로 호출되고, 다른 함수를 간접적으로 호출하고, 로컬 리소스에 액세스할 수 있습니다.

Lambda 실행 파일은 이진 인코딩 유형만 지원하지만(JSON는 지원하지 않음), 그렇지 않고 다른 Lambda 함수처럼 Greengrass 그룹에서 이들을 관리하고 배포할 수 있습니다. 그러나 을(를) 생성하는 프로세스는 Python, Java 및 Node.js Lambda 함수를 생성하는 프로세스와는 다릅니다.

  • AWS Lambda 콘솔을 사용하여 을(를) Lambda 만들 수는(또는 관리할 수는) 없습니다. Lambda 실행 파일은 AWS Lambda API로만 생성할 수 있습니다.

  • 함수 코드를 AWS Lambda에 C용 AWS IoT Greengrass Core SDK를 포함하는 컴파일된 실행 파일로 업로드합니다.

  • 함수 핸들러로 실행 파일 이름을 지정합니다.

Lambda 실행 파일은 함수 코드에 특정한 호출 및 프로그래밍 패턴을 구현해야 합니다. 예를 들어 main 메서드는 다음과 같이 해야 합니다.

  • gg_global_init를 직접 호출하여 Greengrass 내부 전역 변수를 초기화합니다. 스레드를 생성하기 전에, 그리고 다른 AWS IoT Greengrass 코어 SDK 함수를 호출하기 전에 이 함수를 호출해야 합니다.

  • gg_runtime_start을 직접 호출하여 Greengrass Lambda 런타임에 함수 핸들러를 등록합니다. 초기화 중에 이 함수를 호출해야 합니다. 이 함수를 호출하면 현재 스레드가 실행 시간에 사용됩니다. 선택 사항인 GG_RT_OPT_ASYNC 파라미터는 이 함수에게 차단하는 대신, 실행 시간을 위한 새 스레드를 생성하라고 지시합니다. 이 함수는 SIGTERM 핸들러를 사용합니다.

다음 스니펫은 simple_handler.c 코드 예제의 main 메서드입니다. GitHub

int main() { gg_error err = GGE_SUCCESS; err = gg_global_init(0); if(err) { gg_log(GG_LOG_ERROR, "gg_global_init failed %d", err); goto cleanup; } gg_runtime_start(handler, 0); cleanup: return -1; }

요건, 제약 조건 및 기타 구현 세부 정보에 대한 자세한 내용은 AWS IoT GreengrassC용 코어 SDK을 참조하십시오.

Lambda 실행 파일 생성

SDK와 함께 코드를 컴파일하고 난 후에는 AWS Lambda API를 사용하여 Lambda 함수를 생성하고 컴파일된 실행 파일을 업로드합니다.

참고

C89와 호환 가능한 컴파일러로 함수를 컴파일해야 합니다.

다음 예제에서는 create-function CLI 명령을 사용하여 Lambda 실행 파일을 생성합니다. 이 명령은 다음을 지정합니다.

  • 핸들러를 위한 실행 파일의 이름. 컴파일된 실행 파일의 정확한 이름이어야 합니다.

  • 컴파일된 실행 파일이 포함된 .zip 파일에 대한 경로.

  • 실행 시간을 위한 arn:aws:greengrass:::runtime/function/executable. 모든 Lambda 실행 파일의 런타임입니다.

참고

role의 경우에는 모든 Lambda 실행 파일의 ARN을 지정할 수 있습니다. AWS IoT Greengrass는 이 역할을 사용하지 않지만, 함수를 생성하려면 이 파라미터가 필요합니다. Lambda 실행 파일에 대한 자세한 내용은 AWS Lambda 개발자 가이드AWS LambdaLambda 실행 파일을 참조하세요.

aws lambda create-function \ --region aws-region \ --function-name function-name \ --handler executable-name \ --role role-arn \ --zip-file fileb://file-name.zip \ --runtime arn:aws:greengrass:::runtime/function/executable

그런 다음 AWS Lambda API를 사용하여 버전을 게시하고 별칭을 생성합니다.

  • 함수 버전을 게시하려면 게시-버전을 사용하십시오.

    aws lambda publish-version \ --function-name function-name \ --region aws-region
  • 방금 게시한 버전을 가리키는 별칭을 생성하려면 생성-별칭을 사용하십시오. Greengrass 그룹에 추가할 때는 별칭을 기준으로 Lambda 함수를 참조하는 것이 좋습니다.

    aws lambda create-alias \ --function-name function-name \ --name alias-name \ --function-version version-number \ --region aws-region
참고

AWS Lambda 콘솔에는 Lambda 실행 파일이 표시되지 않습니다. 함수 코드를 업데이트하려면 AWS Lambda API를 사용해야 합니다.

그리고 Greengrass 그룹에 Lambda 실행 파일을 추가하고 그룹별 설정에서 이진 입력 데이터를 수용하도록 이를 구성한 다음, 그룹을 배포합니다. 이 작업은 AWS IoT Greengrass 콘솔에서 또는 AWS IoT Greengrass API를 사용하여 수행할 수 있습니다.