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 Management Console에서 커넥터로 작업하는 방법을 보여줍니다.

커넥터를 사용하여 개발 수명 주기를 가속화합니다. 커넥터는 서비스, 프로토콜 및 리소스와 더 쉽게 상호 작용하기 위해 사용할 수 있는 재사용 가능한 미리 빌드된 모듈입니다. 또한 Greengrass 디바이스에 비즈니스 로직을 보다 빠르게 배포할 수 있도록 지원합니다. 자세한 내용은 Greengrass 커넥터를 사용하여 서비스 및 프로토콜과 통합 섹션을 참조하세요.

이 자습서에서는 Twilio Notifications 커넥터를 구성하고 배포합니다. 커넥터는 Twilio 메시지 정보를 입력 데이터로 수신한 다음 Twilio 텍스트 메시지를 트리거합니다. 다음 다이어그램에는 데이터 흐름이 나와 있습니다.

Lambda 함수에서 Twilio Notifications 커넥터, Twilio로 이동하는 데이터 흐름

커넥터를 구성한 후 Lambda 함수 및 구독을 생성합니다.

  • 이 함수는 온도 센서에서 시뮬레이션된 데이터를 평가합니다. 또한 MQTT 주제에 Twilio 메시지 정보를 조건부로 게시합니다. 커넥터가 구독하는 주제입니다.

  • 이 구독을 통해 함수는 주제에 게시할 수 있으며 커넥터는 이 주제에서 데이터를 수신할 수 있습니다.

Twilio Notifications 커넥터가 Twilio API와 상호 작용하려면 Twilio 인증 토큰이 필요합니다. 이러한 토큰은 AWS Secrets Manager에서 생성된 텍스트 유형 보안 함수로, 그룹 리소스에서 참조됩니다. AWS IoT Greengrass는 이 토큰을 사용하여 Greengrass 코어에서 암호의 로컬 사본을 생성할 수 있으며, 여기서 토큰은 암호화되어 커넥터에 사용 가능하게 됩니다. 자세한 내용은 AWS IoT Greengrass 코어에 암호 배포 섹션을 참조하세요.

자습서에는 다음과 같은 상위 수준 단계가 포함됩니다.

이 자습서를 완료하는 데 약 20분 정도 걸립니다.

필수 조건

이 자습서를 완료하려면 다음이 필요합니다.

  • Greengrass 그룹 및 Greengrass 코어(v1.9.3 이상). Greengrass 그룹 및 코어를 생성하는 방법에 대해 알아보려면 AWS IoT Greengrass 시작하기단원을 참조하십시오. 시작하기 자습서에는 AWS IoT Greengrass 코어 소프트웨어를 설치하는 단계도 포함되어 있습니다.

  • AWS IoT Greengrass 코어 디바이스에 설치된 Python 3.7입니다.

  • AWS IoT Greengrass은(는) 비밀 요구 사항에 설명된 대로 로컬 비밀을 지원하도록 구성해야 합니다.

    참고

    이 요구 사항에는 Secrets Manager 암호에 대한 액세스 허용이 포함됩니다. 기본 Greengrass 서비스 역할을 사용 중인 경우 는 이미 greengrass-로 시작하는 이름을 가진 암호에 액세스할 수 있습니다.

  • Twilio 계정 SID, 인증 토큰 및 Twilio 사용 전화번호. Twilio 프로젝트를 생성하면 프로젝트 대시보드에서 이러한 값을 확인할 수 있습니다.

    참고

    Twilio 시험 계정을 사용할 수 있습니다. 평가판 계정을 사용하는 경우 인증된 전화번호 목록에 Twilio 수신자가 아닌 전화번호를 추가해야 합니다. 자세한 내용은 무료 Twilio 시험 계정을 사용하는 방법.을 참조하십시오.

1단계: Secrets Manager 보안 암호 생성

이 단계에서는 AWS Secrets Manager 콘솔을 사용하여 Twilio 인증 토큰에 대한 텍스트 유형 보안 암호를 만듭니다.

  1. AWS Secrets Manager 콘솔에 로그인합니다.

    참고

    이 프로세스에 대한 자세한 내용은 AWS Secrets Manager 사용 설명서1단계: 비밀 만들기 및 AWS Secrets Manager에 저장을 참조하십시오.

  2. Store a new secret(새 보안 암호 저장)을 선택합니다.

  3. 암호 유형 선택에서 다른 암호 유형을 선택합니다.

  4. 이 비밀에 저장할 키/값 쌍 지정일반 텍스트 탭에 Twilio 인증 토큰을 입력하십시오. JSON 형식 지정을 모두 제거하고 토큰 값만 입력합니다.

  5. 암호화 키로 aws/secretsmanager가 선택된 상태를 유지하고 다음을 선택합니다.

    참고

    Secrets Manager가 계정에서 생성하는 기본 AWS 관리형 키를 사용하는 경우 AWS KMS에서 요금이 청구되지 않습니다.

  6. Secret name(보안 암호 이름)greengrass-TwilioAuthToken을 입력한 후 다음을 선택합니다.

    참고

    기본적으로 Greengrass 서비스 역할은 AWS IoT Greengrass이(가) 이름이 greengrass–로 시작하는 비밀의 값을 가져오도록 허용합니다. 자세한 내용은 암호 요구 사항을 참조하십시오.

  7. 이 자습서에서는 교체할 필요가 없으므로 자동 교체 비활성화를 선택하고 다음을 선택합니다.

  8. Review(검토) 페이지에서 설정을 검토한 다음 Store(저장)를 선택합니다.

    이제 해당 암호를 참조하는 암호 리소스를 Greengrass 그룹에 생성합니다.

2단계: Greengrass 그룹에 보안 암호 리소스 추가

이 단계에서는 Greengrass 그룹에 보안 암호 리소스를 추가합니다. 이 리소스는 이전 단계에서 생성한 보안 암호에 대한 참조입니다.

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

  2. 암호 리소스를 추가할 그룹을 선택합니다.

  3. 그룹 구성 페이지에서 리소스 탭을 선택한 다음 비밀 섹션까지 아래로 스크롤합니다. 비밀 섹션에 그룹에 속하는 비밀 리소스가 표시됩니다. 이 섹션에서 암호 리소스를 추가, 편집, 제거할 수 있습니다.

    참고

    대안으로, 커넥터 또는 Lambda 함수를 구성할 때 콘솔에서 보안 암호와 보안 암호 리소스를 생성할 수도 있습니다. 커넥터의 파라미터 구성 페이지 또는 Lambda 함수의 리소스 페이지에서 이 작업을 수행할 수 있습니다.

  4. 비밀 섹션에서 추가를 선택합니다.

  5. 비밀 리소스 추가 페이지에서 리소스 이름으로 MyTwilioAuthToken을(를) 입력합니다.

  6. 비밀greengrass-TwilioAuthToken을 선택하세요.

  7. 레이블 선택(선택 사항) 섹션에서 AWSCURRENT 스테이징 레이블은 비밀의 최신 버전을 나타냅니다. 이 레이블은 암호 리소스에 항상 포함되어 있습니다.

    참고

    이 자습서에서는 AWSCURRENT 레이블만 있으면 됩니다. Lambda 함수 또는 커넥터에 필요한 레이블을 선택적으로 포함시킬 수 있습니다.

  8. 리소스 추가를 선택합니다.

3단계: Greengrass 그룹에 커넥터 추가

이 단계에서는 Twilio Notifications 커넥터에 대한 파라미터를 구성해 그룹에 추가합니다.

  1. 그룹 구성 페이지에서 커넥터를 선택한 다음 커넥터 추가를 선택합니다.

  2. 커넥터 추가 페이지에서 Twilio 알림을 선택합니다.

  3. 버전을 선택합니다.

  4. 구성 섹션에서:

    • Twilio 인증 토큰 리소스에 이전 단계에서 생성한 리소스를 입력합니다.

      참고

      이 리소스를 입력하면 Twilio 인증 토큰 보안 암호의 ARN 속성이 자동으로 채워집니다.

    • Default from phone number(전화번호의 기본값)에 Twilio 사용 전화번호를 입력합니다.

    • Twilio 계정 SID에 Twilio 계정 SID를 입력합니다.

  5. 리소스 추가를 선택합니다.

4단계: Lambda 함수 배포 패키지 생성

Lambda 함수를 생성하려면 먼저 함수 코드와 종속성을 포함하는 Lambda 함수 배포 패키지를 생성해야 합니다. Greengrass Lambda 함수는 코어 환경에서 MQTT 메시지와 통신하고 로컬 비밀에 액세스하는 등의 작업을 위해 AWS IoT Greengrass Core SDK가 필요합니다. 이 자습서는 Python 함수를 생성하므로 배포 패키지의 Python 버전 SDK를 사용할 수 있습니다.

  1. AWS IoT Greengrass 코어 SDK 다운로드 페이지에서 Python용 AWS IoT Greengrass 코어 SDK를 다운로드합니다.

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

  3. temp_monitor.py이라는 로컬 파일에 다음과 같은 Python 코드 함수를 저장합니다.

    import greengrasssdk import json import random client = greengrasssdk.client('iot-data') # publish to the Twilio Notifications connector through the twilio/txt topic def function_handler(event, context): temp = event['temperature'] # check the temperature # if greater than 30C, send a notification if temp > 30: data = build_request(event) client.publish(topic='twilio/txt', payload=json.dumps(data)) print('published:' + str(data)) print('temperature:' + str(temp)) return # build the Twilio request from the input data def build_request(event): to_name = event['to_name'] to_number = event['to_number'] temp_report = 'temperature:' + str(event['temperature']) return { "request": { "recipient": { "name": to_name, "phone_number": to_number, "message": temp_report } }, "id": "request_" + str(random.randint(1,101)) }
  4. 다음 항목을 temp_monitor_python.zip라는 파일로 압축합니다. ZIP 파일을 만들 때 상위 폴더가 아닌 코드 및 종속성만 포함합니다.

    • temp_monitor.py. 앱 로직.

    • greengrasssdk. MQTT 메시지를 게시하는 Python Greengrass Lambda 함수에 대한 필수 라이브러리입니다.

    이것이 Lambda 함수 배포 패키지입니다.

이제, 배포 패키지를 사용하는 Lambda 함수를 생성합니다.

4단계: AWS Lambda 콘솔에서 Lambda 함수 생성

이 단계에서는 AWS Lambda 콘솔을 사용하여 Lambda 함수를 생성한 후 배포 패키지를 사용하도록 구성합니다. 그런 다음 함수 버전을 게시하고 별칭을 생성합니다.

  1. 먼저, Lambda 함수를 생성합니다.

    1. AWS Management Console에서 [Services]를 선택한 다음 AWS Lambda 콘솔을 엽니다.

    2. 함수 생성을 선택한 다음 새로 작성을 선택합니다.

    3. 기본 정보 섹션에서 다음 값을 사용합니다.

      • [함수 이름(Function name)]에 TempMonitor을 입력합니다.

      • 실행 시간에서 Python 3.7을 선택합니다.

      • 권한의 경우, 기본 설정을 유지합니다. 이를 통해 기본 Lambda 권한을 부여하는 실행 역할을 생성합니다. 이 역할은 AWS IoT Greengrass에서 사용되지 않습니다.

    4. 페이지 하단에서 함수 생성을 선택합니다.

  2. 이제 핸들러를 등록하고 Lambda 함수 배포 패키지를 업로드합니다.

    1. 코드 탭의 코드 소스에서 다음에서 업로드를 선택합니다. 드롭다운에서 .zip 파일을 선택합니다.

      
                .zip 파일이 강조 표시된 드롭다운의 업로드.
    2. 업로드를 선택한 다음 temp_monitor_python.zip 배포 패키지를 선택합니다. 그런 다음 저장(Save)을 선택합니다.

    3. 함수의 코드 탭에 있는 런타임 설정에서 편집을 선택하고 다음 값을 입력합니다.

      • 실행 시간에서 Python 3.7을 선택합니다.

      • 핸들러temp_monitor.function_handler를 입력합니다.

    4. Save를 선택합니다.

      참고

      AWS Lambda 콘솔의 테스트 버튼은 이 함수와 함께 작동하지 않습니다. AWS IoT Greengrass 코어 SDK에는 AWS Lambda 콘솔에서 Greengrass Lambda 함수를 독립적으로 실행하는 데 필요한 모듈이 포함되어 있지 않습니다. 이러한 모듈(예: greengrass_common)은 Greengrass 코어에 배포된 후 함수에 제공됩니다.

  3. 이제 Lambda 함수의 첫 번째 버전을 게시하고 버전의 별칭을 생성합니다.

    참고

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

    1. [Actions] 메뉴에서 [Publish new revision]을 선택합니다.

    2. 버전 설명First version을 입력한 후 게시를 선택합니다.

    3. TempMonitor: 1 구성 페이지의 작업 메뉴에서 별칭 생성을 선택합니다.

    4. [Create a new alias] 페이지에서 다음 값을 사용합니다.

      • 이름(Name)GG_TempMonitor을 입력합니다.

      • 버전에서 1을 선택합니다.

      참고

      AWS IoT Greengrass은(는) $LATEST 버전에서 Lambda 별칭을 지원하지 않습니다.

    5. 생성을 선택합니다.

이제 Greengrass 그룹에 Lambda 함수를 추가할 준비가 되었습니다.

6단계: Greengrass 그룹에 Lambda 함수 추가

이 단계에서 그룹에 Lambda 함수를 추가한 다음 수명 주기와 환경 변수를 구성합니다. 자세한 내용은 그룹별 구성을 사용한 Lambda 함수 실행 제어 섹션을 참조하세요.

  1. 그룹 구성 페이지에서 Lambda 함수 탭을 선택합니다.

  2. 내 Lambda 함수에서 추가를 선택합니다.

  3. Lambda 함수 추가 페이지에서 Lambda 함수에 대한 TempMonitor를 선택합니다.

  4. Lambda 함수 버전의 경우 Alias: GG_TempMonitor를 선택합니다.

  5. Lambda 함수 추가를 선택합니다.

7단계: Greengrass 그룹에 구독 추가

이 단계에서는 Lambda 함수가 커넥터에 입력 데이터를 전송하는 데 사용할 수 있는 구독을 추가합니다. 커넥터는 자신이 구독하는 MQTT 주제를 정의하므로, 이 구독은 이러한 주제 중 하나를 사용합니다. 이러한 주제는 예제 함수가 게시할 주제와 동일합니다.

이 자습서에서는 함수가 AWS IoT에서 시뮬레이션된 온도 판독값을 수신하고 AWS IoT가 커넥터에서 상태 정보를 수신하도록 허용하는 구독도 생성합니다.

  1. 그룹 구성 페이지에서 구독을 선택한 다음 구독 추가를 선택합니다.

  2. 구독 생성 페이지에서 다음과 같이 원본과 대상을 구성합니다.

    1. 소스 유형에서 Lambda 함수를 선택한 다음 TempMonitor를 선택합니다.

    2. 대상 유형에서 커넥터를 선택한 다음 Twilio 알림을 선택합니다.

  3. 주제 필터의 경우 twilio/txt를 선택합니다.

  4. 구독 생성을 선택합니다.

  5. 1~4단계를 반복하여 AWS IoT에서 함수에 메시지를 게시하도록 허용하는 구독을 생성합니다.

    1. 소스 유형의 경우 서비스를 선택한 다음 IoT Cloud를 선택합니다.

    2. 대상 선택에서 Lambda 함수를 선택한 다음 TempMonitor를 선택합니다.

    3. 주제 필터temperature/input을 입력합니다.

  6. 1~4단계를 반복하여 커넥터가 AWS IoT에 메시지를 게시하도록 허용하는 구독을 생성합니다.

    1. 소스 유형에서 커넥터를 선택한 다음 Twilio 알림을 선택합니다.

    2. 대상 유형에서 서비스를 선택한 다음 IoT Cloud를 선택합니다.

    3. 주제 필터twilio/message/status가 입력됩니다. 이것은 커넥터가 게시하는 미리 정의된 주제입니다.

8단계: Greengrass 그룹 배포

코어 디바이스에 그룹을 배포합니다.

  1. AWS IoT Greengrass 코어가 실행 중인지 확인합니다. 필요한 경우 Raspberry Pi 터미널에서 다음 명령을 실행합니다.

    1. 데몬이 실행 중인지 확인하려면:

      ps aux | grep -E 'greengrass.*daemon'

      출력에 root에 대한 /greengrass/ggc/packages/ggc-version/bin/daemon 입력이 포함되어 있는 경우에는 데몬이 실행 중인 것입니다.

      참고

      경로의 버전은 코어 디바이스에 설치된 AWS IoT Greengrass 코어 소프트웨어 버전에 따라 다릅니다.

    2. 데몬을 시작하려면:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. 그룹 구성 페이지에서 배포를 선택합니다.

    1. Lambda 함수 탭시스템 Lambda 함수 섹션에서 IP 감지기를 선택하고 편집을 선택합니다.

    2. IP 감지기 설정 편집 대화 상자에서 MQTT 브로커 엔드포인트 자동 탐지 및 재정의를 선택합니다.

    3. Save를 선택합니다.

      이렇게 하면 디바이스가 IP 주소, DNS, 포트 번호 등 코어의 연결 정보를 자동으로 획득할 수 있습니다. 자동 탐지가 바람직하지만 AWS IoT Greengrass은(는) 수동으로 지정된 엔드포인트도 지원합니다. 그룹이 처음 배포될 때만 검색 방법 메시지가 표시됩니다.

      참고

      메시지가 표시되면 Greengrass 서비스 역할을 생성할 권한을 부여하고 이 권한을 현재 AWS 리전의 AWS 계정과 연결합니다. 이 역할은 AWS IoT Greengrass가 AWS 서비스의 리소스에 액세스할 수 있습니다.

      배포 페이지에 배포 타임스탬프, 버전 ID, 상태가 표시됩니다. 완료되면 배포에 대해 성공적으로 완료했습니다 상태가 표시되어야 합니다.

      문제 해결에 대한 도움말은 AWS IoT Greengrass 문제 해결 단원을 참조하십시오.

참고

Greengrass 그룹은 한 번에 하나의 커넥터 버전만 포함할 수 있습니다. 커넥터 버전 업그레이드에 대한 자세한 내용은 커넥터 버전 업그레이드 단원을 참조하십시오.

솔루션 테스트

  1. AWS IoT 홈 페이지에서 테스트를 선택합니다.

  2. 구독에서 다음 값을 사용한 다음 주제 구독을 선택합니다. Twilio Notifications 커넥터는 이 주제에 상태 정보를 게시합니다.

    속성

    구독 주제

    twilio/message/status

    MQTT 페이로드 디스플레이

    페이로드를 문자열로 표시

  3. 주제 게시에서 다음 값을 사용한 후 게시를 선택하여 함수를 간접 호출합니다.

    속성

    주제

    온도/입력

    메시지

    recipient-name은 이름으로, recipient-phone-number는 문자 메시지 수신자의 전화번호로 바꿉니다. 예: +12345000000

    { "to_name": "recipient-name", "to_number": "recipient-phone-number", "temperature": 31 }

    평가판 계정을 사용하는 경우 인증된 전화번호 목록에 Twilio 수신자가 아닌 전화번호를 추가해야 합니다. 자세한 내용은 개인 전화번호 확인을 참조하십시오.

    성공하면 수신자가 문자 메시지를 수신하고 콘솔에 출력 데이터success 상태가 표시됩니다.

    이제 입력 메시지에서 temperature29로 변경하고 게시합니다. 이 값이 30보다 작기 때문에 TempMonitor 기능이 Twilio 메시지를 트리거하지 않습니다.

다음 사항도 참조하세요.