Amazon Web Services 한국 블로그

AWS Greengrass 정식 출시 – 인터넷 기기에 Lambda 함수 실행하기

지난 해 re:Invent 에서 AWS Greengrass – 유비쿼터스 및 실세계 컴퓨팅 서비스를 공개하고, 일부 고객들에게 제한된 미리 보기 기능을 제공하였습니다.

당시 AWS 많은 고객은 실제 현장에서 데이터를 수집하고 처리하기를 원했으며, 이러한 현장은 연결 속도가 느리거나 간헐적이거나 신뢰할 수 없는 경우가 종종있습니다. Greengrass는 AWS 프로그래밍 모델을 현장 기반 디바이스로 확장 할 수 있습니다. AWS IoTAWS Lambda를 기반으로 AWS Cloud에서 제공하는 다양한 서비스에 접근을 지원합니다.

Greengrass는 현장에서 설치하고 실행되며 AWS 리전 기반 클라우드 서비스에  의존할 수 없는 컴퓨팅, 메시징, 데이터 캐싱 및 동기화 서비스에 대한 접근 방법을 제공합니다. 즉, Lambda 함수를 Python 2.7로 개발한 후, Greengrass 장치에 배포하고 장치 쉐도우를 사용하여 상태를 유지할 수 있습니다. 장치와 주변 장치는 클라우드와 관계 없이 로컬 메시징을 사용하여 서로 통신 할 수 있습니다.

Greengrass 정식 출시
오늘 우리는 미국 동부 (버지니아 북부) 및 미국 서부 (오레곤) 지역에서 Greengrass를 정식 출시합니다. 그동안, 미리보기를 통해 AWS 고객은 Greengrass에 대한 실제 경험을 얻고, 응용 프로그램 및 비즈니스를 시작할 수 있습니다. 이 글 후반부에 이러한 초기 성공 사례 몇 가지를 말씀 드리겠습니다.

Greengrass Core 코드는 각 장치에서 실행됩니다. 이를 통해 장치에 Lambda 함수 기반 애플리케이션을  배포 및 실행할 수 있습니다. 보안 네트워크에서 로컬 MQTT 메시징을 지원할 수 있으며, 장치와 클라우드 간 보안 연결을 보장합니다. Greengrass Core는 로컬에 람다(Lambda) 함수을 포함한 안전한 무선 소프트웨어 업데이트도 지원합니다. 여기에는 메시지 브로커, 람다 런타임, Thing Shadows 구현 및 배포 에이전트가 포함됩니다. Greengrass Core와 함께 (선택적으로) 다른 장치가 Greengrass Group을 구성합니다. 그룹에는 구성 데이터, Greengrass 코어의 ID 및 장치 목록, 람다 함수 목록 및 메시지가 어디로 가야하는지 정의하는 구독 세트가 포함됩니다. 이 모든 정보는 배포 프로세스 중에 Greengrass 코어 장치에 복사됩니다.

람다 함수는 세 가지 별개의 SDK로 API를 사용할 수 있습니다.

AWS SDK for Python – 본 SDK를 사용하면 코드가 Amazon Simple Storage Service (S3), Amazon DynamoDB, Amazon Simple Queue Service (SQS) 및 기타 AWS 서비스와 상호 작용할 수 있습니다.

AWS IoT Device SDK – 본 SDK (Node.js, Python, Java 및 C ++에서 사용 가능)는 하드웨어 장치를 AWS IoT에 연결할 수 있도록 도와줍니다. C ++ SDK에는 Greengrass Discovery Service에 대한 액세스와 루트 CA 다운로드에 대한 지원을 포함하여 몇 가지 추가 기능이 있습니다.

AWS Greengrass Core SDK – 본 SDK는 다른 람다 함수의 로컬 호출을 허용하고, 메시지를 게시하고, 사물의 그림자로 작업 할 수있는 API를 제공합니다.

OverlayFS 및 사용자 정의 네임 스페이스를 사용하도록 설정 한 상태에서 Linux 커널 버전이 4.4.11 (또는 그 이상) 인 x86 및 ARM 장치에서 Greengrass Core를 실행할 수 있습니다. 대부분 Greengrass는 전문적인 산업용 하드웨어를 대상으로 하지만, 개발 및 테스트 목적으로 Raspberry Pi 또는 EC2 인스턴스에서 Greengrass Core를 실행할 수도 있습니다.

이 글에서는 BrickPi에 연결된 Raspberry Pi를 사용했으며 WiFi를 통해 홈 네트워크에 연결되었습니다.

Raspberry Pi, BrickPi, 케이스 및 기타 모든 부품은 BrickPi 3 Starter Kit에서 활용할 수 있습니다. 전체를 함께 사용하려면 약간의 Linux 커맨드 지식과 수작업이 필요합니다. 하지만 제가 했기 때문에 여러분도 가능합니다.

Greengrass 실제 구성해 보기
AWS 관리 콘솔, API 또는 CLI에서 Greengrass에 접근할 수 있습니다. 처음에는 관리 콘솔을 사용해서 Greengrass Console 내 소개 페이지에서 그룹을 정의하고, Greengrass Cores를 추가하고 장치를 내 그룹에 추가 할 수 있습니다.

Get Started를 누른 후,  Use easy creation을 선택합니다.

그룹명을 정합니다.

첫번째 Greengrass Core 이름을 정합니다.

준비가 끝났으면, Create Group and Core를 클릭합니다.

몇 초 정도 지난 후, Greengrass Core와 함께 보안 리소스(두 개의 키와 인증서)를 다운로드 할 수 있도록 제공합니다.

보안 리소스를 다운로드하여 안전한 곳에 보관하고, 원하는 버전의 Greengrass Core 소프트웨어 (Raspberry Pi 용 ARMv7l)를 선택하고 다운로드 한 다음 Finish을 클릭합니다.

이제 파이를 켜고 보안 리소스와 소프트웨어를 복사합니다 (S3 버킷에 넣은 다음 wget을 사용하여 뽑았습니다). 아래는 셀 작업 진행 사항입니다.

사용자 가이드에 따라 새로운 사용자 및 그룹을 만들고 rpi-update 스크립트를 실행하고sqlite3openssl을 비롯한 여러 패키지를 설치합니다. 몇 번 재부팅하면 완료됩니다!

그 다음 지침을 따라 Greengrass Core 소프트웨어를 압축 해제하고, 보안 리소스를 최종 목적지 (/greengrass/configuration/certs)로 이동합니다. 디렉토리 구조는 아래와 같습니다.

다음 단계는 AWS IoT와 코어를 연결하는 것입니다. 콘솔로 돌아가서 그룹과 Greengrass Core를 클릭하고 Thing ARN을 찾습니다.

인증서 및 Thing ARN의 이름을 config.json 파일에 삽입하고 iotHostggHost의 항목을 채웁니다.

Greengrass 데몬을 시작합니다 (이는 두 번째 시도였고, 처음에 경로 이름 중 하나에 오타가 있었습니다.)

커맨드 라인에서 작업 후, AWS IoT 대시 보드를 방문하여 Greengrass Core가 IoT와 연결되어 있는지 확인하십시오.

Lambda Console로 가서 Python 2.7 런타임을 사용하여 Lambda 함수를 생성합니다 (여기서 IAM 역할은 중요하지 않습니다).

함수를 완성하고, Greengrass Console로 가서 그룹을 클릭하고 람다 함수를 추가하도록 선택합니다 :

그런 다음 배포 할 버전을 선택합니다.

또한 온디멘드가 아닌 장기간 사용하도록 기능을 구성합니다.

현재 코드는 AWS IoT에 메시지를 게시하므로 소스 및 대상을 지정하여 구독할 토픽을 만듭니다.

구독에서 토픽 필터를 (hello/world)로 설정합니다.

설정을 확인 후, 구독을 저장하고 코드를 배포 할 준비가 되었습니다. 그룹을 다시 방문하여 Deployments 를 클릭 한 다음 Deploy메뉴에서 Deploy를 선택합니다.

그 다음 Automatic detection를 선택합니다.

처음 배포 된 이후 Greengrass에 다른 AWS 서비스에 대한 액세스 권한을 부여하는 서비스 수준 역할을 만들어야합니다. Grant permission을 클릭하면됩니다.

각 배포 상태를 볼 수 있습니다.

코드는 이제 파이에서 실행 중인 토픽 hello/world에 메시지를 게시합니다. IoT Console로 이동하여 Test를 클릭하고  토픽에 가입하여 볼 수 있습니다.

다음은 메시지입니다.

위의 설정 작업을 통해 새로운 버전의 코드 업로드, 게시 및 배포를 반복하여 개발 작업을 수행 할 수 있습니다. BrickPi를 사용하여 일부 LEGO Technic 모터를 제어하고, 일부 센서에서 수집 한 데이터를 게시 할 수도 있습니다. (향후 코드를 업그레이드 하겠습니다.)

Greengrass 요금 구조
Greengrass Core는 AWS Free Tier의 일환으로 1 년 동안 3 대 기기에서 무료로 사용할 수 있습니다. 다음 단계 (3개에서 10,000 개 장치)에서 두 가지 옵션을 사용할 수 있습니다.

  • 사용한 만큼 지불 – 기기 당 월 $0.16
  • 연간 사용량 약정 – 기기 당 연간 $1.49 (17.5% 절약)

10,000 개가 넘는 장치에서 Greengrass Core를 실행하거나 장기적인 투자를 원할 경우 당사에 연락하십시오. 모든 가격 모델에 대한 자세한 내용은 Greengrass 요금 페이지를 참조하십시오.

Jeff;

이 글은 AWS Greengrass – Run AWS Lambda Functions on Connected Devices의 한국어 번역입니다.