Category: AWS Greengrass


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의 한국어 번역입니다.

AWS Greengrass – 유비쿼터스 및 실세계 컴퓨팅 서비스

데이터 센터나 사무실 안에서 컴퓨팅 작업이나 및 데이터 처리는 용이합니다. 기본적으로 양호한 네트워크 연결성과 지속적인 전력 공급을 기대할 수 있으며, 가능한 만큼 온 – 프레미스 또는 클라우드 기반 스토리지에 접근하여 컴퓨팅 성능을 활용할 수 있습니다. 하지만, 밖으로 나오면 상황이 매우 다릅니다. 네트워크 연결은 간헐적이거나 신뢰할 수 없으며, 속도와 확장면에서 제한적일 수 있습니다. 전원 공급은 저장 용량 및 컴퓨팅 성능을 제한 할 수 있습니다.

따라서, 현실에서 흥미롭고 잠재적으로 가치 있는 많은 데이터가 수집 및 처리하여, 지능형 서비스를 제공하는 것은 매우 중요합니다. 이러한 데이터는 자원 채굴 현장이나 병원이나 공장 또는 심지어 (Curiosity)가 있는 화성처럼) 다른 행성, 지구 표면 아래 몇 마일 떨어진 해저 등에서도 얻어야 할 수 있습니다.

지금까지 많은 고객은 AWS 클라우드의 서비스 규모와 성능을 활용하여, 이러한 열악한 조건에서 로컬 처리를 시도할 수 있도록 다양한 피드백을 주셨습니다.  먼저, 데이터를 측정, 감지 및 제어하는 시스템을 로컬에 구축합니다. 그런 다음, 클라우드와 유사한 로컬 환경에 데이터를 저장하고 로컬 내부에서 독립적으로 수행하도록 일단 구성을 합니다. 이런 작업을 위해서는 로컬 프로세싱 및 스토리지 자원을 구성하고 활용하는 동시에 특수 센서 및 주변 장치에 연결할 수 있어야 합니다.

AWS Greengrass 소개
AWS Greengrass라는 서비스는 AWS 프로그래밍 모델을 작고 단순한 필드 기반 장치로 확장하여 위에서 설명한 문제점을 해결할 수 있도록 설계되었습니다.

Greengrass는 AWS IoTAWS Lambda를 기반으로 하며 다른 AWS 서비스에도 접근할 수 있습니다. 오프라인 작업을 위해 제작되었으며, 로컬에서 프로그래밍 구현을 단순하게 만들어 주게 됩니다. 현장에서 실행되는 프로그램 코드를 통해 데이터를 새로 수집, 필터링 및 집계한 후 장기적으로 저장하고, 추가 분석을 할 수 있도록 클라우드로 전송할 수 있습니다. 또한, 현장에서 실행되는 프로그램 코드는 클라우드에 대한 연결을 일시적으로 사용할 수 없는 경우에도 매우 신속하게 조치를 취할 수 있습니다.

고객이 소형 장치용 임베디드 시스템을 이미 개발 중인 경우, 최신 클라우드 기반의 개발 도구 및 워크 플로를 활용할 수 있습니다. 클라우드에서 코드를 작성하고 테스트 한 다음, 로컬에서 배포 할 수 있습니다. 디바이스 이벤트에 응답하는 Python 코드를 작성할 수 있으며 MQTT 기반 pub/sub 메시징을 사용하여 통신 할 수 있습니다.

Greengrass에는 GreenGrass Core (GGC)와 IoT Device SDK의 두 가지 구성 요소가 있습니다. 이 두 구성 요소는 현장에서 직접 하드웨어에서 실행됩니다.

Greengrass Core는 128MB 이상의 메모리와 1GHz 이상의 x86 또는 ARM CPU를 갖춘 장치에서 실행되도록 설계되었으며, 필요한 경우 추가 리소스를 이용할 수 있습니다. AWS Lambda 기능을 로컬에서 실행하고, AWS 클라우드와 상호 작용하면서도 보안 및 인증을 관리하면서 주변의 다른 디바이스와 통신할 수 있습니다.

IoT Device SDK는 (일반적으로 LAN 또는 기타 로컬 연결된) 코어를 호스팅하는 디바이스장치에서 실행하는 응용 프로그램을 개발하는 데 사용합니다 . 이런 애플리케이션은 센서에서 데이터를 캡쳐하고, MQTT 토픽를 구독하며 AWS IoT 디바이스 섀도우를 사용하여 상태 정보를 저장 및 검색합니다.

AWS GreenGrass 사용
AWS Management Console, AWS APIs, AWS Command Line Interface (CLI)를 통해 Greengrass의 여러 측면을 설정하고 관리 할 수 ​​있습니다.

새 허브 장치를 등록한 후, 원하는 람다 함수를 구성하며 디바이스에 전달할 배포 패키지를 만들 수 있습니다. 여기에서 경량 디바이스와 허브와 연결 시킬 수 있습니다.

미리 보기 출시
오늘 AWS Greengrass  미리보기를 시작합니다. 참여하고 싶으시다면, 가입하신 후 기다리시면 초대해 드립니다. 각 AWS 고객은 1 년 동안 3 개의 기기를 무료로 사용할 수 있습니다. 그 이후에는 각 활성 Greengrass Core의 월간 비용은 최대 10,000 개의 장치에 대해 $ 0.16 (연간 $ 1.49)입니다.

Jeff;

이 글은 AWS re:Invent 2016 신규 출시 소식으로 AWS Greengrass – Ubiquitous, Real-World Computing의 한국어 번역입니다. re:Invent 출시 소식에 대한 자세한 정보는 12월 온라인 세미나를 참고하시기 바랍니다.