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하는 것이 좋습니다. 이 마이그레이션하면 추가 플랫폼 에 대한 중요한 새 기능과 지원이 추가됩니다. https://docs.aws.amazon.com/greengrass/v2/developerguide/operating-system-feature-support-matrix.html
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SNS 커넥터
SNS 커넥터는 Amazon SNS 주제에 메시지를 게시합니다. 이렇게 하면 웹 서버, 이메일 주소 및 기타 메시지 구독자가 Greengrass 그룹의 이벤트에 응답할 수 있게 됩니다.
이 커넥터는 MQTT 주제에 대한 SNS 메시지 정보를 수신하고 이 메시지를 지정된 SNS 주제에 전송합니다. 선택적으로 사용자 지정 Lambda 함수를 사용하여 메시지에 대한 필터링 또는 형식 지정 로직을 구현한 후 메시지를 이 커넥터에 게시할 수 있습니다.
이 커넥터의 버전은 다음과 같습니다.
버전 |
ARN |
---|---|
4 |
|
3 |
|
2 |
|
1 |
|
버전 변경 사항에 대한 자세한 내용은 Changelog를 참조하십시오.
요구 사항
이 커넥터에는 다음과 같은 요구 사항이 있습니다.
커넥터 파라미터
이 커넥터는 다음 파라미터를 제공합니다.
커넥터 만들기 예(AWS CLI)
다음 CLI 명령은 SNS 커넥터가 포함된 초기 버전을 사용하여 ConnectorDefinition
을 생성합니다.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySNSConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/SNS/versions/4", "Parameters": { "DefaultSNSArn": "arn:aws:sns:region
:account-id
:topic-name", "IsolationMode" : "GreengrassContainer" } } ] }'
AWS IoT Greengrass 콘솔에서는 그룹의 커넥터 페이지에서 커넥터를 추가할 수 있습니다. 자세한 설명은 Greengrass 커넥터 시작하기(콘솔) 섹션을 참조하세요.
입력 데이터
이 커넥터는 MQTT 주제에 대한 SNS 메시지 정보를 수락한 다음 이 메시지를 있는 그대로 대상 SNS 주제에 게시합니다. 입력 메시지는 JSON 형식이어야 합니다.
- 구독의 주제 필터
-
sns/message
- 메시지 속성
-
request
-
SNS 주제로 보낼 메시지에 대한 정보입니다.
필수:
true
유형: 다음 속성을 포함하는
object
:message
-
문자열 또는 JSON 형식의 메시지 내용입니다. 예제는 입력 예를 참조하십시오.
JSON을 보내려면
message_structure
속성이json
으로 설정되어야 하며 메시지는default
키가 포함되고 문자열 인코딩을 거친 JSON 객체여야 합니다.필수:
true
유형:
string
유효한 패턴:
.*
subject
-
메시지의 제목입니다.
필수:
false
유형: 100자 이하의 ASCII 텍스트여야 합니다. 문자, 숫자 또는 구두점으로 시작해야 합니다. 줄 바꿈이나 컨트롤 문자를 넣으면 안 됩니다.
유효한 패턴:
.*
sns_topic_arn
-
메시지를 게시할 SNS 주제의 ARN입니다. 지정된 경우 커넥터는 기본 주제 대신 이 주제에 게시합니다.
참고
그룹 역할은 모든 대상 주제에 대해
sns:Publish
권한을 허용해야 합니다. 자세한 설명은 요구 사항 섹션을 참조하세요.필수:
false
유형:
string
유효한 패턴:
arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$
message_structure
-
메시지의 구조입니다.
필수:
false
. JSON 메시지를 전송하도록 지정해야 합니다.유형:
string
유효값:
json
id
-
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다. 지정하면 응답 객체의
id
속성이 이 값으로 설정됩니다. 이 기능을 사용하지 않는 경우 이 속성을 생략하거나 빈 문자열로 지정할 수 있습니다.필수:
false
유형:
string
유효한 패턴:
.*
- Limits
-
메시지 크기는 최대 SNS 메시지 크기인 256KB로 제한됩니다.
- 입력 예: 문자열 메시지
-
이 예제에서는 문자열 메시지를 보냅니다. 기본 대상 주제를 재정의하는 선택적
sns_topic_arn
속성을 지정합니다.{ "request": { "subject": "Message subject", "message": "Message data", "sns_topic_arn": "arn:aws:sns:
region
:account-id
:topic2-name" }, "id": "request123" } - 입력 예: JSON 메시지
-
이 예제에서는 메시지를
default
키가 포함되며 문자열 인코딩을 거친 JSON 객체로서 보냅니다.{ "request": { "subject": "Message subject", "message": "{ \"default\": \"Message data\" }", "message_structure": "json" }, "id": "request123" }
출력 데이터
이 커넥터는 상태 정보를 MQTT 주제에 출력 데이터로 게시합니다.
- 구독의 주제 필터
-
sns/message/status
- 출력 예: 성공
-
{ "response": { "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a", "status": "success" }, "id": "request123" }
- 출력 예: 실패
-
{ "response" : { "error": "InvalidInputException", "error_message": "SNS Topic Arn is invalid", "status": "fail" }, "id": "request123" }
사용 예
다음 상위 수준 단계를 사용하여 커넥터를 사용해 보는 데 이용할 수 있는 예제 Python 3.7 Lambda 함수를 설정합니다.
참고
-
다른 Python 런타임을 사용하는 경우 Python3.x에서 Python 3.7로의 심볼릭 링크를 만들 수 있습니다.
-
커넥터 시작하기(콘솔) 및 커넥터 시작하기(CLI) 주제에는 예제 Twilio 알림 커넥터를 구성하고 배포하는 방법을 보여주는 자세한 단계가 포함되어 있습니다.
커넥터에 대한 요구 사항을 충족하는지 확인합니다.
그룹 역할 요구 사항의 경우, 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 Greengrass 그룹 역할 관리(콘솔) 또는 Greengrass 그룹 역할 관리(CLI) 섹션을 참조하세요.
-
입력 데이터를 커넥터로 보내는 Lambda 함수를 생성하고 게시합니다.
예제 코드를 PY 파일로 저장합니다. Python용 AWS IoT Greengrass 코어 SDK를 다운로드하고 압축을 풉니다. 그런 다음 루트 수준에서 PY 파일과
greengrasssdk
폴더를 포함하는 zip 패키지를 생성합니다. 이 zip 패키지는 AWS Lambda에 업로드하는 배포 패키지입니다.Python 3.7 Lambda 함수를 생성한 후 함수 버전을 게시하고 별칭을 만듭니다.
-
Greengrass 그룹을 구성합니다.
-
별칭으로 Lambda 함수를 추가합니다(권장). Lambda 수명 주기를 수명이 긴 함수(또는 CLI의
"Pinned": true
)로 구성합니다. -
커넥터를 추가하고 해당 파라미터를 구성합니다.
-
커넥터가 입력 데이터를 수신하고 지원되는 주제 필터에서 출력 데이터를 전송할 수 있도록 허용하는 구독을 추가합니다.
Lambda 함수를 소스로, 커넥터를 대상으로 설정하고 지원되는 입력 주제 필터를 사용합니다.
커넥터를 소스로, AWS IoT Core를 대상으로 설정하고 지원되는 출력 주제 필터를 사용합니다. 이 구독을 사용하여 AWS IoT에서 상태 메시지를 확인합니다.
-
-
그룹을 배포합니다.
-
AWS IoT콘솔의 테스트 페이지에서 출력 데이터 주제를 구독하여 커넥터의 상태 메시지를 확인합니다. 예제 Lambda 함수는 수명이 긴 함수로 그룹이 배포된 직후 메시지 전송을 시작합니다.
테스트를 마치면 Lambda 수명 주기를 온디맨드 함수(또는 CLI의
"Pinned": false
)로 설정하고 그룹을 배포할 수 있습니다. 이렇게 하면 함수가 메시지 전송을 중지합니다.
예
다음 예제 Lambda 함수는 커넥터에 입력 메시지를 보냅니다.
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'sns/message' def create_request_with_all_fields(): return { "request": { "message": "Message from SNS Connector Test" }, "id" : "req_123" } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return
라이선스
SNS 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.
-
AWS SDK for Python (Boto3)
/Apache 라이선스 2.0 -
botocore
/Apache 라이선스 2.0 -
dateutil
/PSF 라이선스 -
docutils
/BSD 라이선스, GNU 일반 공개 라이선스(GPL), Python Software Foundation 라이선스, 퍼블릭 도메인 -
jmespath
/MIT 라이선스 -
s3transfer
/Apache 라이선스 2.0 -
urllib3
/MIT 라이선스
이 커넥터는 Greengrass 코어 소프트웨어 라이선스 계약
Changelog
다음 표에서는 의 각 릴리스에서 변경된 중요 사항에 대해 설명합니다.
버전 |
변경 |
---|---|
4 |
커넥터에 대한 컨테이너화 모드를 구성하는 |
3 |
Lambda 런타임 요구 사항을 변경하는 Python 3.7로 런타임을 업그레이드했습니다. |
2 |
과도한 로깅을 줄이도록 고정합니다. |
1 |
최초 릴리스. |
Greengrass 그룹은 한 번에 하나의 커넥터 버전만 포함할 수 있습니다. 커넥터 버전 업그레이드에 대한 자세한 내용은 커넥터 버전 업그레이드을 참조하십시오.
다음 사항도 참조하십시오.
-
Boto 3 설명서의 게시 작업
-
Amazon Simple Notification Service 개발자 가이드의 Amazon Simple Notification Service란?