Greengrass 커넥터를 사용하여 서비스 및 프로토콜과 통합 - 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 것이 좋습니다.

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

Greengrass 커넥터를 사용하여 서비스 및 프로토콜과 통합

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

AWS IoT Greengrass의 Connectors는 로컬 인프라, 디바이스 프로토콜, AWS, 기타 클라우드 서비스와 기본적으로 통합되는 모듈입니다. 커넥터를 사용하면 새 프로토콜 및 API를 학습하는 시간을 단축하여 더 많은 시간을 업무에 중요한 로직에 집중할 수 있습니다.

다음 다이어그램은 커넥터가 AWS IoT Greengrass 랜드스케이프에 적합할 수 있는 지점을 보여줍니다.


            커넥터는 디바이스, 서비스 및 로컬 리소스에 연결됩니다.

다수의 커넥터는 MQTT 메시지를 사용하여 그룹 내의 디바이스 및 Lambda 함수 또는 AWS IoT 및 로컬 섀도우 서비스와 통신합니다. 다음 예제에서 AWS Secrets Manager 커넥터는 사용자 정의 Lambda 함수에서 MQTT 메시지를 수신하고, 의 암호에 대한 로컬 참조를 사용하며, Twilio API를 호출합니다.


            Lambda 함수에서 MQTT 메시지를 수신하고 서비스를 호출하는 커넥터

이 솔루션을 생성하는 자습서는 Greengrass 커넥터 시작하기(콘솔)Greengrass 커넥터 시작하기(CLI) 단원을 참조하십시오.

Greengrass 커넥터는 디바이스 기능을 확장하거나 단일 용도 디바이스를 생성하는 데 도움이 될 수 있습니다. 커넥터를 사용하여 다음을 수행할 수 있습니다.

  • 재사용 가능한 비즈니스 로직을 구현합니다.

  • AWS 및 타사 서비스를 비롯해 클라우드 및 로컬 서비스와 상호 작용합니다.

  • 디바이스 데이터를 수집해 처리합니다.

  • MQTT 주제 구독 및 사용자 정의 Lambda 함수를 사용하여 디바이스 간 직접 호출을 가능하게 합니다.

AWS는 공통 서비스 및 데이터 원본과의 상호 작용을 간소화하는 Greengrass 커넥터 세트를 제공합니다. 이와 같은 미리 빌드된 모듈은 로깅 및 진단, 보충, 산업용 데이터 처리, 경보 및 메시징 시나리오를 지원합니다. 자세한 내용은 AWS에서 제공한 Greengrass 커넥터 섹션을 참조하세요.

요구 사항

커넥터를 사용하려면 다음 사항을 염두에 두십시오.

  • 사용 중인 각 커넥터의 요구 사항을 충족해야 합니다. 이러한 요구 사항에는 최소 AWS IoT Greengrass 코어 소프트웨어 버전, 디바이스 사전 조건, 필수 권한 및 제한이 포함될 수 있습니다. 자세한 내용은 AWS에서 제공한 Greengrass 커넥터 섹션을 참조하세요.

  • Greengrass 그룹에는 지정된 커넥터의 구성된 인스턴스가 하나만 포함될 수 있습니다. 그러나 여러 구독에서 인스턴스를 사용할 수 있습니다. 자세한 내용은 구성 파라미터 섹션을 참조하세요.

  • Greengrass 그룹의 기본 컨테이너화가 컨테이너 없음으로 설정된 경우 그룹의 커넥터는 컨테이너화 없이 실행되어야 합니다. 컨테이너 없음 모드를 지원하는 커넥터를 찾으려면 AWS에서 제공한 Greengrass 커넥터 단원을 참조하십시오.

Greengrass 커넥터 사용

커넥터란 일종의 그룹 구성 요소입니다. 디바이스, 사용자 정의 Lambda 함수 등의 기타 그룹 구성 요소와 마찬가지로, 사용자가 커넥터를 그룹에 추가하고 커넥터의 설정을 구성하며 커넥터를 AWS IoT Greengrass 코어에 배포합니다. 커넥터는 코어 환경에서 실행됩니다.

일부 커넥터는 간단한 독립형 애플리케이션으로 배포할 수 있습니다. 예를 들어 커넥터는 코어 디바이스에서 시스템 지표를 읽은 다음 분석을 위해 AWS IoT Device Defender에 전송합니다.

기타 커넥터는 더욱 광범위한 솔루션에서 빌딩 블록으로 추가할 수 있습니다. 다음 예제 솔루션에서는 Modbus-RTU Protocol Adapter 커넥터를 사용하여 센서의 메시지를 처리하고 Twilio Notifications 커넥터를 사용하여 Twilio 메시지를 트리거합니다.


                Lambda 함수에서 Modbus-RTU 프로토콜 어댑터 커넥터, Lambda 함수, Twilio 알림 커넥터, Twilio로 이어지는 데이터 흐름.

일반적으로 솔루션에는 커넥터 옆에서 커넥터가 전송하거나 수신하는 데이터를 처리하는 사용자 정의 Lambda 함수가 포함되어 있습니다. 이 예제에서 TempMonitor 함수는 Modbus-RTU Protocol Adapter에서 데이터를 수신하고, 일부 비즈니스 로직을 실행한 다음 데이터를 에 보냅니다.

솔루션을 생성해 배포하려면 다음과 같은 일반적을 프로세스를 따릅니다.

  1. 상위 수준 데이터 흐름을 시작합니다. 사용해야 하는 데이터 소스, 데이터 채널, 서비스, 프로토콜 및 리소스를 식별합니다. 이 예제 솔루션에서는 Modbus RTU 프로토콜, 물리적 Modbus 직렬 포트 및 Twilio에 대한 데이터가 포함되어 있습니다.

  2. 솔루션에 포함할 커넥터를 식별하고 그룹에 추가합니다. 예제 솔루션은 Modbus-RTU 프로토콜 어댑터와 Twilio 알림을 사용합니다. 시나리오에 적용할 커넥터를 찾고 개별 요구 사항에 대해 알아보려면 AWS에서 제공한 Greengrass 커넥터 단원을 참조하십시오.

  3. 사용자 정의 Lambda 함수, 디바이스 또는 리소스가 필요한지 확인한 후 생성하여 그룹에 추가합니다. 여기에는 비즈니스 로직이 포함되어 있거나 솔루션에서 다른 엔터티에 필요한 형식으로 데이터를 처리하는 함수가 포함되어 있을 수 있습니다. 이 예제 솔루션에서는 함수를 사용하여 Modbus RTU 요청을 보내고 Twilio 알림을 시작합니다. 또한 Modbus RTU 직렬 포트에 필요한 로컬 디바이스 리소스와 Twilio 인증 토큰에 필요한 보안 암호 리소스가 포함되어 있습니다.

    참고

    보안 암호 리소스는 AWS Secrets Manager의 암호, 토큰, 및 기타 보안 암호를 참조합니다. 암호는 커넥터 및 Lambda 함수가 서비스와 애플리케이션에 인증하는 데 사용할 수 있습니다. 기본적으로 AWS IoT Greengrass는 "greengrass-"로 시작하는 이름의 보안 암호에 액세스할 수 있습니다. 자세한 내용은 AWS IoT Greengrass 코어에 암호 배포 섹션을 참조하세요.

  4. 솔루션의 개체가 MQTT 메시지를 교환하도록 허용하는 구독을 생성합니다. 커넥터가 이 구독에 사용되는 경우 커넥터 및 메시지 소스 또는 대상은 커넥터에서 지원하는 미리 정의된 주제 구문을 사용해야 합니다. 자세한 내용은 입력 및 출력 섹션을 참조하세요.

  5. Greengrass 코어에 그룹을 배포합니다.

커넥터 생성 및 배포에 대한 자세한 내용은 다음 튜토리얼을 참조하세요.

구성 파라미터

다수의 커넥터가 동작 또는 출력을 사용자 지정하는 데 사용할 수 있는 파라미터를 제공합니다. 이러한 파라미터는 초기화 중, 실행 시간에 또는 커넥터 수명 주기의 기타 시점에 사용됩니다.

파라미터 유형 및 사용은 커넥터별로 다릅니다. 예를 들어, SNS 커넥터에는 기본 SNS 주제를 구성하는 파라미터가 있고, Device Defender에는 데이터 샘플링 비율을 구성하는 파라미터가 있습니다.

한 그룹 버전에 여러 커넥터가 포함될 수 있지만, 지정된 커넥터의 인스턴스는 한 번에 하나만 있을 수 있습니다. 즉, 그룹의 각 커넥터에는 활성 구성이 하나만 있을 수 있습니다. 그러나 커넥터 인스턴스는 그룹의 여러 구독에 사용할 수 있습니다. 예를 들어 여러 디바이스에서 Kinesis Firehose 커넥터에 데이터를 전송하도록 허용하는 구독을 생성할 수 있습니다.

그룹 리소스 액세스에 사용되는 파라미터

Greengrass 커넥터는 그룹 리소스를 사용하여 코어 디바이스의 파일 시스템, 포트, 주변 장치 및 기타 로컬 리소스에 액세스합니다. 커넥터가 그룹 리소스에 액세스해야 하는 경우 커넥터는 관련 구성 파라미터를 제공합니다.

그룹 리소스에는 다음 항목이 포함됩니다.

  • 로컬 리소스. Greengrass 코어 디바이스에 있는 디렉터리, 파일, 포트, 핀 및 주변 장치.

  • Machine Learning 리소스. 클라우드에서 교육되고 로컬 추론을 위해 코어로 배포되는 기계 학습 모델.

  • 보안 암호 리소스. AWS Secrets Manager의 암호, 키, 토큰 또는 임의 텍스트의 암호화된 로컬 복사본. 커넥터는 이러한 로컬 암호에 안전하게 액세스할 수 있으며 이러한 로컬 암호를 사용하여 서비스 또는 로컬 인프라를 인증할 수 있습니다.

예를 들어, 의 파라미터를 사용하면 호스트 /proc 디렉터리에서 시스템 지표에 액세스할 수 있고, Twilio Notifications의 파라미터를 사용하면 로컬에 저장된 Twilio 인증 토큰에 액세스할 수 있습니다.

커넥터 파라미터 업데이트

커넥터가 Greengrass 그룹에 추가될 때 파라미터가 구성됩니다. 커넥터가 추가된 후 파라미터 값을 변경할 수 있습니다.

  • 콘솔에서: 그룹 구성 페이지에서 Connectors(커넥터)를 열고 커넥터의 컨텍스트 메뉴에서 Edit(편집)를 선택합니다.

    참고

    커넥터가 다른 암호를 참조하기 위해 나중에 변경되는 보안 암호 리소스를 사용하는 경우 커넥터의 파라미터를 편집해 변경을 확인해야 합니다.

  • API에서: 새 구성을 정의하는 커넥터의 다른 버전을 생성합니다.

    AWS IoT Greengrass API는 버전을 사용하여 그룹을 관리합니다. 버전은 변경할 수 없으므로 그룹 구성 요소(예: 그룹의 클라이언트 디바이스, 기능 및 리소스)를 추가하거나 변경하려면 새 구성 요소나 업데이트된 구성 요소의 버전을 생성해야 합니다. 그런 다음 각 구성 요소의 대상 버전을 포함하는 그룹 버전을 생성하고 배포합니다.

커넥터 구성을 변경한 후에는 그룹을 배포하여 변경 사항을 코어에 전파해야 합니다.

입력 및 출력

많은 Greengrass 커넥터는 MQTT 메시지를 전송하고 수신하여 다른 개체와 통신할 수 있습니다. MQTT 통신은 커넥터가 Greengrass 그룹 내의 Lambda 함수, 디바이스 및 기타 커넥터 또는 AWS IoT 및 로컬 섀도우 서비스와 데이터를 교환하도록 허용하는 구독을 통해 제어됩니다. 이러한 통신을 허용하려면 커넥터가 속한 그룹에서 구독을 생성해야 합니다. 자세한 내용은 MQTT 메시징 워크플우로의 관리형 구독 섹션을 참조하세요.

커넥터는 메시지 게시자, 메시지 구독자 또는 둘 다일 수 있습니다. 각 커넥터는 게시 또는 구독하는 MQTT 주제를 정의합니다. 이러한 미리 정의된 주제는 커넥터가 메시지 소스 또는 메시지 대상이 되는 구독에서 사용되어야 합니다. 커넥터에 대한 구독을 구성하는 단계가 포함된 자습서는 Greengrass 커넥터 시작하기(콘솔)Greengrass 커넥터 시작하기(CLI) 단원을 참조하십시오.

참고

또한 다수의 커넥터에는 클라우드 또는 로컬 서비스와 상호 작용하기 위한 기본 제공 통신 모드도 있습니다. 이러한 통신 모드는 커넥터에 따라 다르며, 파라미터를 구성하거나 그룹 역할에 권한을 추가해야 할 수 있습니다. 커넥터 요구 사항에 대한 자세한 내용은 AWS에서 제공한 Greengrass 커넥터 단원을 참조하십시오.

입력 주제

대부분의 커넥터는 MQTT 주제에 대한 입력 데이터를 수신합니다. 일부 커넥터는 입력 데이터에 대한 여러 주제를 구독합니다. 예를 들어 Serial Stream 커넥터는 다음 두 가지 주제를 지원합니다.

  • serial/+/read/#

  • serial/+/write/#

이 커넥터의 경우 읽기 및 쓰기 요청이 해당 주제에 전송됩니다. 구독을 생성할 때 구현에 맞는 주제를 사용해야 합니다.

이전 예에서 +# 문자는 와일드카드입니다. 이러한 와일드카드를 사용하면 구독자가 여러 주제 및 게시자에 대한 메시지를 수신해 게시할 주제를 사용자 지정할 수 있습니다.

  • + 와일드카드는 주제 계층 구조 어디든지 나타날 수 있습니다. 이 와일드카드는 하나의 계층 항목으로 대체될 수 있습니다.

    예를 들어 sensor/+/input 주제의 경우 메시지를 sensor/id-123/input 주제에 게시할 수 있지만 sensor/group-a/id-123/input에는 게시할 수 없습니다.

  • # 와일드카드는 주제 계층 구조의 끝에만 나타날 수 있습니다. 이 와일드카드는 항목이 0개 이상의 계층 항목으로 대체될 수 있습니다.

    예를 들어 sensor/# 주제의 경우 메시지를 sensor/, sensor/id-123sensor/group-a/id-123 주제에 게시할 수 있지만 sensor에는 게시할 수 없습니다.

와일드카드 문자는 주제를 구독하는 경우에만 유효합니다. 와일드카드가 포함된 주제에는 메시지를 게시할 수 없습니다. 입력 또는 출력 주제 요구 사항에 대해 자세히 알아보려면 커넥터 설명서를 참조하십시오. 자세한 내용은 AWS에서 제공한 Greengrass 커넥터 섹션을 참조하세요.

컨테이너화 지원

기본적으로 대부분의 커넥터는 AWS IoT Greengrass에서 관리하는 격리된 런타임 환경의 Greengrass 코어에서 실행됩니다. 컨테이너라고 하는 이러한 런타임 환경은 커넥터와 호스트 시스템 간의 격리를 제공하여 호스트와 커넥터에 대한 보안을 강화합니다.

그러나 이 Greengrass 컨테이너화는 Docker 컨테이너 또는 cgroup이 없는 이전 Linux 커널에서 AWS IoT Greengrass를 실행하는 것과 같은 일부 환경에서는 지원되지 않습니다. 이러한 환경에서 커넥터는 컨테이너 없음 모드에서 실행되어야 합니다. 컨테이너 없음 모드를 지원하는 커넥터를 찾으려면 AWS에서 제공한 Greengrass 커넥터 단원을 참조하십시오. 일부 커넥터는 기본적으로 이 모드에서 실행되며 일부 커넥터에서는 격리 모드를 설정할 수 있습니다.

Greengrass 컨테이너화를 지원하는 환경에서는 격리 모드를 컨테이너 없음으로 설정할 수도 있지만 가능하면 Greengrass 컨테이너 모드를 사용하는 것이 좋습니다.

참고

Greengrass 그룹의 기본 컨테이너화 설정은 커넥터에는 적용되지 않습니다.

커넥터 버전 업그레이드

커넥터 공급자는 기능을 추가하거나 문제를 수정하거나 성능을 향상시키는 새 버전의 커넥터를 출시할 수 있습니다. 사용 가능한 버전 및 관련 변경 사항에 대한 자세한 내용은 각 커넥터의 설명서를 참조하십시오.

AWS IoT 콘솔에서 Greengrass 그룹의 커넥터에 대한 새 버전을 확인할 수 있습니다.

  1. AWS IoT 콘솔 탐색 창의 관리에서 Greengrass 디바이스를 확장한 다음 그룹(V1)을 선택합니다.

  2. Greengrass 그룹에서 사용자 그룹을 선택합니다.

  3. 커넥터를 선택하여 그룹에 커넥터를 표시합니다.

    커넥터에 새 버전이 있는 경우 업그레이드 열에 사용 가능 버튼이 나타납니다.

  4. 커넥터 버전을 업그레이드하려면:

    1. 커넥터 페이지의 업그레이드 열에서 사용 가능을 선택합니다. 커넥터 업그레이드 페이지가 열리고 해당하는 경우 현재 파라미터 설정이 표시됩니다.

      새 커넥터 버전을 선택하고 필요에 따라 파라미터를 정의한 다음 업그레이드를 선택합니다.

    2. 구독 페이지에서 그룹에 새 구독을 추가하여 커넥터를 소스 또는 대상으로 사용하는 모든 구독을 대체합니다. 그런 다음 이전 구독을 제거합니다.

      구독은 버전별로 커넥터를 참조하므로 그룹에서 커넥터 버전을 변경하면 커넥터가 유효하지 않게 됩니다.

    3. 작업 메뉴에서 배포를 선택하여 변경 사항을 코어에 배포합니다.

AWS IoT Greengrass API에서 커넥터를 업그레이드하려면 업데이트된 커넥터 및 구독을 포함하는 그룹 버전을 생성하고 배포합니다. 그룹에 커넥터를 추가할 때와 동일한 프로세스를 사용합니다. AWS CLI를 사용하여 예제 커넥터를 구성 및 배포하는 방법을 보여주는 자세한 단계는 Greengrass 커넥터 시작하기(CLI)를 참조하십시오.

커넥터에 대한 로깅

Greengrass 커넥터에는 Greengrass 로그에 이벤트 및 오류를 쓰는 Lambda 함수가 포함되어 있습니다. 그룹 설정에 따라 로그는 CloudWatch Logs, 로컬 파일 시스템 또는 둘 다에 기록됩니다. 커넥터의 로그에는 해당 함수의 ARN이 포함됩니다. 다음 예제 ARN은 Kinesis Firehose 커넥터에서 나옵니다.

arn:aws:lambda:aws-region:account-id:function:KinesisFirehoseClient:1

기본 로깅 구성은 다음 디렉터리 구조를 사용하여 파일 시스템에 정보 수준 로그를 씁니다.

greengrass-root/ggc/var/log/user/region/aws/function-name.log

Greengrass 로깅에 대한 자세한 내용은 AWS IoT Greengrass 로그를 사용하여 모니터링 섹션을 참조하세요.