Twilio 알림 커넥터 - 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 것이 좋습니다.

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

Twilio 알림 커넥터

주의

이 커넥터는 수명 연장 단계로 전환되었으며 AWS IoT Greengrass은(는) 기능, 기존 기능의 개선 사항, 보안 패치 또는 버그 수정을 제공하는 업데이트를 릴리스하지 않을 예정입니다. 자세한 내용은 AWS IoT Greengrass Version 1 유지 관리 정책 섹션을 참조하세요.

Twilio Notifications 커넥터는 Twilio를 통해 자동 전화 통화를 수행하고 텍스트 메시지를 전송합니다. 이 커넥터를 사용하면 Greengrass 그룹의 이벤트에 응답하여 알림을 전송할 수 있습니다. 전화 통화의 경우 커넥터는 수신자에게 음성 메지지를 전달할 수 있습니다.

이 커넥터는 MQTT 주제에 대한 Twilio 메시지 정보를 수신한 다음 Twilio 알림을 트리거합니다.

참고

Twilio Notifications 커넥터를 사용하는 방법을 보여 주는 자습서는 Greengrass 커넥터 시작하기(콘솔) 또는 Greengrass 커넥터 시작하기(CLI) 단원을 참조하십시오.

이 커넥터의 버전은 다음과 같습니다.

버전

ARN

5

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5

4

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4

3

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/3

2

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/2

1

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/1

버전 변경 사항에 대한 자세한 내용은 Changelog를 참조하십시오.

요구 사항

이 커넥터에는 다음과 같은 요구 사항이 있습니다.

Version 4 - 5
  • AWS IoT Greengrass 코어 소프트웨어 v1.9.3 이상. AWS IoT Greengrass은(는) 비밀 요구 사항에 설명된 대로 로컬 암호를 지원하도록 구성해야 합니다.

    참고

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

  • 코어 디바이스에 설치되고 PATH 환경 변수에 추가된 Python 버전 3.7 또는 3.8입니다.

    참고

    Python 3.8을 사용하려면 다음 명령을 실행하여 기본 Python 3.7 설치 폴더에서 설치된 Python 3.8 바이너리로 연결되는 심볼릭 링크를 만드십시오.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 디바이스가 구성됩니다.

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

    참고

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

  • Twilio 인증 토큰을 저장하는 AWS Secrets Manager의 텍스트 유형 암호입니다. 자세한 정보는 AWS Secrets Manager 사용 설명서기본 비밀 생성을 참조하세요.

    참고

    Secrets Manager 콘솔에서 시크릿을 생성하려면 Plaintext 탭에 토큰을 입력하세요. 따옴표나 기타 서식을 포함하지 마세요. API에서 토큰을 SecretString 속성 값으로 지정합니다.

  • Secrets Manager 암호를 참조하는 Greengrass 그룹의 암호 리소스입니다. 자세한 내용은 AWS IoT Greengrass 코어에 암호 배포 섹션을 참조하세요.

Versions 1 - 3
  • AWS IoT Greengrass 코어 소프트웨어 v1.7 이상. AWS IoT Greengrass은(는) 비밀 요구 사항에 설명된 대로 로컬 암호를 지원하도록 구성해야 합니다.

    참고

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

  • 코어 디바이스에 설치되고 PATH 환경 변수에 추가된 Python 버전 3.7입니다.

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

    참고

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

  • Twilio 인증 토큰을 저장하는 AWS Secrets Manager의 텍스트 유형 암호입니다. 자세한 정보는 AWS Secrets Manager 사용 설명서기본 비밀 생성을 참조하세요.

    참고

    Secrets Manager 콘솔에서 시크릿을 생성하려면 Plaintext 탭에 토큰을 입력하세요. 따옴표나 기타 서식을 포함하지 마세요. API에서 토큰을 SecretString 속성 값으로 지정합니다.

  • Secrets Manager 암호를 참조하는 Greengrass 그룹의 암호 리소스입니다. 자세한 내용은 AWS IoT Greengrass 코어에 암호 배포 섹션을 참조하세요.

커넥터 파라미터

이 커넥터는 다음 파라미터를 제공합니다.

Version 5
TWILIO_ACCOUNT_SID

Twilio API를 호출하는 데 사용되는 Twilio 계정 SID입니다.

AWS IoT 콘솔의 표시 이름: Twilio 계정 SID

필수: true

형식: string

유효한 패턴: .+

TwilioAuthTokenSecretArn

Twilio 인증 토큰을 저장하는 Secrets Manager 암호의 ARN입니다.

참고

이 항목은 코어에서 로컬 암호의 값에 액세스하는 데 사용됩니다.

AWS IoT 콘솔의 표시 이름: Twilio 인증 토큰 암호의 ARN

필수: true

형식: string

유효한 패턴: arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

Greengrass 그룹에서 Twilio 인증 토큰의 암호를 참조하는 암호 리소스의 ID입니다.

AWS IoT 콘솔의 표시 이름: Twilio 인증 토큰 리소스

필수: true

형식: string

유효한 패턴: .+

DefaultFromPhoneNumber

Twilio가 메시지를 전송하는 데 사용하는 기본 Twilio 지원 전화번호입니다. Twilio는 이 번호를 사용하여 텍스트나 통화를 초기화합니다.

  • 기본 전화번호를 구성하지 않는 경우 입력 메시지 본문의 from_number 속성에서 전화번호를 지정해야 합니다.

  • 기본 전화번호를 구성하는 경우 입력 메시지 본문의 from_number 속성을 지정하여 기본값을 선택적으로 재정의할 수 있습니다.

AWS IoT 콘솔의 표시 이름: 전화번호의 기본값

필수: false

형식: string

유효한 패턴: ^$|\+[0-9]+

IsolationMode

이 커넥터의 컨테이너화 모드입니다. 기본값은 GreengrassContainer이며 이는 커넥터가 AWS IoT Greengrass 컨테이너 내부의 격리된 런타임 환경에서 실행됨을 의미합니다.

참고

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

AWS IoT 콘솔의 표시 이름: 컨테이너 격리 모드

필수: false

형식: string

유효한 값: GreengrassContainer 또는 NoContainer

유효한 패턴: ^NoContainer$|^GreengrassContainer$

Version 1 - 4
TWILIO_ACCOUNT_SID

Twilio API를 호출하는 데 사용되는 Twilio 계정 SID입니다.

AWS IoT 콘솔의 표시 이름: Twilio 계정 SID

필수: true

형식: string

유효한 패턴: .+

TwilioAuthTokenSecretArn

Twilio 인증 토큰을 저장하는 Secrets Manager 암호의 ARN입니다.

참고

이 항목은 코어에서 로컬 암호의 값에 액세스하는 데 사용됩니다.

AWS IoT 콘솔의 표시 이름: Twilio 인증 토큰 암호의 ARN

필수: true

형식: string

유효한 패턴: arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

Greengrass 그룹에서 Twilio 인증 토큰의 암호를 참조하는 암호 리소스의 ID입니다.

AWS IoT 콘솔의 표시 이름: Twilio 인증 토큰 리소스

필수: true

형식: string

유효한 패턴: .+

DefaultFromPhoneNumber

Twilio가 메시지를 전송하는 데 사용하는 기본 Twilio 지원 전화번호입니다. Twilio는 이 번호를 사용하여 텍스트나 통화를 초기화합니다.

  • 기본 전화번호를 구성하지 않는 경우 입력 메시지 본문의 from_number 속성에서 전화번호를 지정해야 합니다.

  • 기본 전화번호를 구성하는 경우 입력 메시지 본문의 from_number 속성을 지정하여 기본값을 선택적으로 재정의할 수 있습니다.

AWS IoT 콘솔의 표시 이름: 전화번호의 기본값

필수: false

형식: string

유효한 패턴: ^$|\+[0-9]+

커넥터 만들기 예(AWS CLI)

다음 예제 CLI 명령은 Twilio Notifications 커넥터가 포함된 초기 버전을 사용하여 ConnectorDefinition을 생성합니다.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyTwilioNotificationsConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5", "Parameters": { "TWILIO_ACCOUNT_SID": "abcd12345xyz", "TwilioAuthTokenSecretArn": "arn:aws:secretsmanager:region:account-id:secret:greengrass-secret-hash", "TwilioAuthTokenSecretArn-ResourceId": "MyTwilioSecret", "DefaultFromPhoneNumber": "+19999999999", "IsolationMode" : "GreengrassContainer" } } ] }'

Twilio Notifications 커넥터를 그룹에 추가하는 방법을 보여 주는 자습서는 Greengrass 커넥터 시작하기(CLI)Greengrass 커넥터 시작하기(콘솔) 단원을 참조하십시오.

입력 데이터

이 커넥터는 다음 두 가지 MQTT 주제에 대한 Twilio 메시지 정보를 수락합니다. 입력 메시지는 JSON 형식이어야 합니다.

  • twilio/txt 주제에 대한 텍스트 메시지 정보.

  • twilio/call 주제에 대한 전화 메시지 정보.

참고

입력 메시지 페이로드에는 텍스트 메시지(message) 또는 음성 메시지(voice_message_location)가 포함될 수 있지만, 둘 다 포함될 수는 없습니다.

주제 필터twilio/txt
메시지 속성
request

Twilio 알림에 대한 정보입니다.

필수: true

유형: 다음 속성을 포함하는 object:

recipient

메시지 수신자입니다. 한 명의 수신자만 지원됩니다.

필수: true

유형: 다음 속성을 포함하는 object

name

수신자의 이름입니다.

필수: true

형식: string

유효한 패턴: .*

phone_number

수신자의 전화번호입니다.

필수: true

형식: string

유효한 패턴: \+[1-9]+

message

텍스트 메시지의 텍스트 내용입니다. 이 주제에는 텍스트 메시지만 지원됩니다. 음성 메시지의 경우 twilio/call을 사용합니다.

필수: true

형식: string

유효한 패턴: .+

from_number

발신자의 전화번호입니다. Twilio는 이 번호를 사용하여 메시지를 초기화합니다. DefaultFromPhoneNumber 파라미터가 구성되지 않은 경우 이 속성은 필수입니다. DefaultFromPhoneNumber가 구성된 경우 이 속성을 사용하여 기본값을 재정의할 수 있습니다.

필수: false

형식: string

유효한 패턴: \+[1-9]+

retries

재시도 횟수입니다. 기본값은 0입니다.

필수: false

형식: integer

id

요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다.

필수: true

형식: string

유효한 패턴: .+

입력 예
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "message": "Hello from the edge" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }
주제 필터twilio/call
메시지 속성
request

Twilio 알림에 대한 정보입니다.

필수: true

유형: 다음 속성을 포함하는 object:

recipient

메시지 수신자입니다. 한 명의 수신자만 지원됩니다.

필수: true

유형: 다음 속성을 포함하는 object

name

수신자의 이름입니다.

필수: true

형식: string

유효한 패턴: .+

phone_number

수신자의 전화번호입니다.

필수: true

형식: string

유효한 패턴: \+[1-9]+

voice_message_location

음성 메시지를 위한 오디오 콘텐츠의 URL입니다. 이 값은 TwiML 형식이어야 합니다. 이 주제에는 음성 메시지만 지원됩니다. 텍스트 메시지의 경우 twilio/txt를 사용합니다.

필수: true

형식: string

유효한 패턴: .+

from_number

발신자의 전화번호입니다. Twilio는 이 번호를 사용하여 메시지를 초기화합니다. DefaultFromPhoneNumber 파라미터가 구성되지 않은 경우 이 속성은 필수입니다. DefaultFromPhoneNumber가 구성된 경우 이 속성을 사용하여 기본값을 재정의할 수 있습니다.

필수: false

형식: string

유효한 패턴: \+[1-9]+

retries

재시도 횟수입니다. 기본값은 0입니다.

필수: false

형식: integer

id

요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다.

필수: true

형식: string

유효한 패턴: .+

입력 예
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "voice_message_location": "https://some-public-TwiML" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }

출력 데이터

이 커넥터는 상태 정보를 MQTT 주제에 출력 데이터로 게시합니다.

구독의 주제 필터

twilio/message/status

출력 예: 성공
{ "response": { "status": "success", "payload": { "from_number": "+19999999999", "messages": { "message_status": "queued", "to_number": "+12345000000", "name": "Darla" } } }, "id": "request123" }
출력 예: 실패
{ "response": { "status": "fail", "error_message": "Recipient name cannot be None", "error": "InvalidParameter", "payload": None } }, "id": "request123" }

출력의 payload 속성은 메시지가 전송될 때 Twilio API의 응답입니다. 커넥터에서 입력 데이터가 잘못되었음을 감지하면(예: 필수 입력 필드를 지정하지 않음) 커넥터는 오류를 반환하고 값을 None으로 설정합니다. 다음은 예제 페이로드입니다.

{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'undelivered' } }
{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'queued' } }

사용 예

다음 상위 수준 단계를 사용하여 커넥터를 사용해 보는 데 이용할 수 있는 예제 Python 3.7 Lambda 함수를 설정합니다.

참고

Greengrass 커넥터 시작하기(콘솔)Greengrass 커넥터 시작하기(CLI) 주제에는 Twilio 알림 커넥터를 설정, 배포 및 테스트하는 방법을 보여주는 엔드 투 엔드 단계가 포함되어 있습니다.

  1. 커넥터에 대한 요구 사항을 충족하는지 확인합니다.

  2. 입력 데이터를 커넥터로 보내는 Lambda 함수를 생성하고 게시합니다.

    예제 코드를 PY 파일로 저장합니다. Python용 AWS IoT Greengrass 코어 SDK를 다운로드하고 압축을 풉니다. 그런 다음 루트 수준에서 PY 파일과 greengrasssdk 폴더를 포함하는 zip 패키지를 생성합니다. 이 zip 패키지는 AWS Lambda에 업로드하는 배포 패키지입니다.

    Python 3.7 Lambda 함수를 생성한 후 함수 버전을 게시하고 별칭을 만듭니다.

  3. Greengrass 그룹을 구성합니다.

    1. 별칭으로 Lambda 함수를 추가합니다(권장). Lambda 수명 주기를 수명이 긴 함수(또는 CLI의 "Pinned": true)로 구성합니다.

    2. 필요한 보안 리소스를 추가하고 Lambda 함수에 대한 읽기 액세스 권한을 부여합니다.

    3. 커넥터를 추가하고 해당 파라미터를 구성합니다.

    4. 커넥터가 입력 데이터를 수신하고 지원되는 주제 필터에서 출력 데이터를 전송할 수 있도록 허용하는 구독을 추가합니다.

      • Lambda 함수를 소스로, 커넥터를 대상으로 설정하고 지원되는 입력 주제 필터를 사용합니다.

      • 커넥터를 소스로, AWS IoT Core를 대상으로 설정하고 지원되는 출력 주제 필터를 사용합니다. 이 구독을 사용하여 AWS IoT에서 상태 메시지를 확인합니다.

  4. 그룹을 배포합니다.

  5. AWS IoT콘솔의 테스트 페이지에서 출력 데이터 주제를 구독하여 커넥터의 상태 메시지를 확인합니다. 예제 Lambda 함수는 수명이 긴 함수로 그룹이 배포된 직후 메시지 전송을 시작합니다.

    테스트를 마치면 Lambda 수명 주기를 온디맨드 함수(또는 CLI의 "Pinned": false)로 설정하고 그룹을 배포할 수 있습니다. 이렇게 하면 함수가 메시지 전송을 중지합니다.

다음 예제 Lambda 함수는 커넥터에 입력 메시지를 보냅니다. 이 예제에서는 텍스트 메시지를 트리거합니다.

import greengrasssdk import json iot_client = greengrasssdk.client('iot-data') TXT_INPUT_TOPIC = 'twilio/txt' CALL_INPUT_TOPIC = 'twilio/call' def publish_basic_message(): txt = { "request": { "recipient" : { "name": "Darla", "phone_number": "+12345000000", "message": 'Hello from the edge' }, "from_number" : "+19999999999" }, "id" : "request123" } print("Message To Publish: ", txt) client.publish(topic=TXT_INPUT_TOPIC, payload=json.dumps(txt)) publish_basic_message() def lambda_handler(event, context): return

라이선스

Twilio Notifications 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.

이 커넥터는 Greengrass 코어 소프트웨어 라이선스 계약에 따라 릴리스됩니다.

Changelog

다음 표에서는 의 각 릴리스에서 변경된 중요 사항에 대해 설명합니다.

버전

변경

5

커넥터에 대한 컨테이너화 모드를 구성하는 IsolationMode 파라미터가 추가되었습니다.

4

Lambda 런타임 요구 사항을 변경하는 Python 3.7로 런타임을 업그레이드했습니다.

3

과도한 로깅을 줄이도록 고정합니다.

2

경미한 버그 수정 및 개선 사항.

1

최초 릴리스.

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

다음 사항도 참조하세요.