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
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IoT Analytics 커넥터
주의
이 커넥터는 수명 연장 단계로 전환되었으며 AWS IoT Greengrass은(는) 기능, 기존 기능의 개선 사항, 보안 패치 또는 버그 수정을 제공하는 업데이트를 릴리스하지 않을 예정입니다. 자세한 내용은 AWS IoT Greengrass Version 1 유지 관리 정책 섹션을 참조하세요.
IoT Analytics 커넥터는 로컬 디바이스 데이터를 AWS IoT Analytics에 전송합니다. 이 커넥터를 중앙 허브로 사용하여 Greengrass 코어 디바이스의 센서 및 연결된 클라이언트 디바이스에서 데이터를 수집할 수 있습니다. 커넥터는 현재 AWS 계정 계정 및 리전의 AWS IoT Analytics 채널에 데이터를 전송합니다. 기본 대상 채널 및 동적으로 지정된 채널에 데이터를 전송할 수 있습니다.
참고
AWS IoT Analytics는 IoT 데이터를 수집, 저장, 처리 및 쿼리하는 데 사용할 수 있는 완전 관리형 서비스입니다. AWS IoT Analytics에서 데이터를 추가로 분석하고 처리할 수 있습니다. 예를 들어, 이 기능을 사용하여 머신 상태를 모니터링하도록 ML 모델을 훈련하거나 새 모델링 전략을 테스트할 수 있습니다. 자세한 내용은 AWS IoT Analytics 사용 설명서의 AWS IoT Analytics(이)란 무엇입니까? 섹션을 참조하세요.
커넥터는 입력 MQTT 주제에 대한 형식이 지정된 데이터 및 형식이 지정되지 않은 데이터를 수락합니다. 이 커넥터는 대상 채널이 인라인으로 지정되는 두 개의 미리 지정된 주제를 지원합니다. 또한 구독에서 구성되는 고객 정의 주제에 대한 메시지도 수신할 수 있습니다. 이 커넥터를 사용하여 고정 주제에 게시되는 클라이언트 디바이스의 메시지를 라우팅하거나 리소스 제한 디바이스의 비정형 또는 스택 종속 데이터를 처리할 수 있습니다.
이 커넥터는 BatchPutMessage
API를 사용하여 데이터를(JSON 또는 base64 인코딩 문자열로) 대상 채널에 전송합니다. 이 커넥터는 원시 데이터를 API 요구 사항에 적합한 형식으로 처리할 수 있습니다. 이 커넥터는 채널별 대기열에서 입력 메시지를 버퍼링하고 배치를 비동기적으로 처리합니다. 이 커넥터는 대기열 작성 및 배치 작성 동작을 제어하고 메모리 사용을 제한할 수 있는 파라미터를 제공합니다. 예를 들어 최대 대기열 크기, 배치 간격, 메모리 크기, 활성 채널 수를 구성할 수 있습니다.
이 커넥터의 버전은 다음과 같습니다.
버전 |
ARN |
---|---|
4 |
|
3 |
|
2 |
|
1 |
|
버전 변경 사항에 대한 자세한 내용은 Changelog를 참조하십시오.
요구 사항
이 커넥터에는 다음과 같은 요구 사항이 있습니다.
파라미터
MemorySize
-
이 커넥터에 할당할 메모리 양(KB)입니다.
AWS IoT 콘솔의 표시 이름: 메모리 크기
필수:
true
형식:
string
유효한 패턴:
^[0-9]+$
PublishRegion
-
AWS IoT Analytics 채널이 생성되는 AWS 리전입니다. 커넥터와 동일한 리전을 사용합니다.
참고
이 리전은 그룹 역할에서 지정되는 채널의 리전과도 일치해야 합니다.
AWS IoT 콘솔의 표시 이름: 게시 리전
필수:
false
형식:
string
유효한 패턴:
^$|([a-z]{2}-[a-z]+-\\d{1})
PublishInterval
-
수신된 데이터의 배치를 AWS IoT Analytics에 게시하는 간격(초)입니다.
AWS IoT 콘솔의 표시 이름: 게시 간격
필수:
false
형식:
string
기본값:
1
유효한 패턴:
$|^[0-9]+$
IotAnalyticsMaxActiveChannels
-
커넥터가 활성으로 감시하는 최대 AWS IoT Analytics 채널 수입니다. 이 값은 0보다 커야 하며 최소한 커넥터가 지정된 시간에 게시할 것으로 예상되는 채널 수와 같아야 합니다.
이 파라미터를 사용하면 커넥터가 지정된 시간에 관리할 수 있는 총 대기열 수를 제한하여 메모리 사용을 제한할 수 있습니다. 대기된 메시지를 모두 전송하면 대기열이 삭제됩니다.
AWS IoT 콘솔의 표시 이름: 활성 채널의 최대 수
필수:
false
형식:
string
기본값:
50
유효한 패턴:
^$|^[1-9][0-9]*$
IotAnalyticsQueueDropBehavior
-
대기열이 가득 차 있을 때 채널 대기열에서 메시지를 삭제하기 위한 동작입니다.
AWS IoT 콘솔의 표시 이름: 대기열 삭제 동작
필수:
false
형식:
string
유효한 값:
DROP_NEWEST
또는DROP_OLDEST
기본값:
DROP_NEWEST
유효한 패턴:
^DROP_NEWEST$|^DROP_OLDEST$
IotAnalyticsQueueSizePerChannel
-
메시지가 제출되거나 삭제되기 전에 메모리에 유지할 최대 메시지 수입니다(채널당). 이 값은 0보다 커야 합니다.
AWS IoT 콘솔의 표시 이름: 채널당 최대 대기열 크기
필수:
false
형식:
string
기본값:
2048
유효한 패턴:
^$|^[1-9][0-9]*$
IotAnalyticsBatchSizePerChannel
-
배치 요청에서 AWS IoT Analytics 채널에 전송할 최대 메시지 수입니다. 이 값은 0보다 커야 합니다.
AWS IoT 콘솔의 표시 이름: 채널당 일괄 처리할 최대 메시지 수
필수:
false
형식:
string
기본값:
5
유효한 패턴:
^$|^[1-9][0-9]*$
IotAnalyticsDefaultChannelName
-
이 커넥터가 고객 정의 입력 주제로 전송되는 메시지에 사용하는 AWS IoT Analytics 채널의 이름입니다.
AWS IoT 콘솔의 표시 이름: 기본 채널 이름
필수:
false
형식:
string
유효한 패턴:
^[a-zA-Z0-9_]$
IsolationMode
-
이 커넥터의 컨테이너화 모드입니다. 기본값은
GreengrassContainer
이며 이는 커넥터가 AWS IoT Greengrass 컨테이너 내부의 격리된 런타임 환경에서 실행됨을 의미합니다.참고
그룹의 기본 컨테이너화 설정은 커넥터에는 적용되지 않습니다.
AWS IoT 콘솔의 표시 이름: 컨테이너 격리 모드
필수:
false
형식:
string
유효한 값:
GreengrassContainer
또는NoContainer
유효한 패턴:
^NoContainer$|^GreengrassContainer$
커넥터 만들기 예(AWS CLI)
다음 CLI 명령은 IoT Analytics 커넥터가 포함된 초기 버전을 사용하여 ConnectorDefinition
을 생성합니다.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyIoTAnalyticsApplication", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/IoTAnalytics/versions/3", "Parameters": { "MemorySize": "65535", "PublishRegion": "us-west-1", "PublishInterval": "2", "IotAnalyticsMaxActiveChannels": "25", "IotAnalyticsQueueDropBehavior": "DROP_OLDEST", "IotAnalyticsQueueSizePerChannel": "1028", "IotAnalyticsBatchSizePerChannel": "5", "IotAnalyticsDefaultChannelName": "my_channel" } } ] }'
참고
이 커넥터의 Lambda 함수에는 수명이 긴 수명 주기가 있습니다.
AWS IoT Greengrass 콘솔에서는 그룹의 커넥터 페이지에서 커넥터를 추가할 수 있습니다. 자세한 내용은 Greengrass 커넥터 시작하기(콘솔) 섹션을 참조하세요.
입력 데이터
이 커넥터는 사전 정의 및 고객 정의 MQTT 주제에 대한 데이터를 수락합니다. 게시자는 Greengrass 디바이스, Lambda 함수 또는 기타 커넥터일 수 있습니다.
- 미리 정의된 주제
-
이 커넥터는 게시자가 인라인으로 채널 이름을 지정하도록 허용하는 다음 두 가지 정형 MQTT 주제를 지원합니다.
-
iotanalytics/channels/+/messages/put
주제에 대한 형식이 지정된 메시지입니다. 이러한 입력 메시지에 있는 IoT 데이터는 JSON 또는 base64 인코딩 문자열로 형식 지정해야 합니다. -
iotanalytics/channels/+/messages/binary/put
주제에 대한 형식이 지정되지 않은 메시지입니다. 이 주제에서 수신된 입력 메시지는 바이너리 데이터로 처리되며 모든 데이터 유형을 포함할 수 있습니다.미리 정의된 주제에 게시하려면
+
와일드카드를 채널 이름으로 바꿉니다. 예:iotanalytics/channels/my_channel/messages/put
-
- 고객 정의 주제
-
커넥터는 구독에서 구성한 모든 MQTT 주제에 대한 입력 메시지를 수락하도록 허용하는
#
주제 구문을 지원합니다. 구독에#
와일드카드만 사용하는 대신 주제 경로를 지정하는 것이 좋습니다. 이러한 메시지는 커넥터에 지정하는 기본 채널로 전송됩니다.고객 정의 주제에 대한 입력 메시지는 바이너리 데이터로 처리됩니다. 이러한 메시지는 모든 메시지 형식을 사용할 수 있으며 모든 데이터 유형을 포함할 수 있습니다. 고객 정의 주제를 사용하여 고정 주제에 게시하는 디바이스의 메시지를 라우팅할 수 있습니다. 또한 이 주제를 사용하여 데이터를 커넥터에 전송할 형식 지정된 메시지로 처리할 수 없는 클라이언트 디바이스의 입력 데이터를 수락할 수 있습니다.
구독 및 MQTT 주제에 대한 자세한 내용은 입력 및 출력 단원을 참조하십시오.
그룹 역할은 모든 대상 채널에 대한 iotanalytics:BatchPutMessage
작업을 허용해야 합니다. 자세한 내용은 요구 사항 섹션을 참조하세요.
- 주제 필터:
iotanalytics/channels/+/messages/put
-
이 주제를 사용하여 형식 지정된 메시지를 커넥터에 전송하고 대상 채널을 동적으로 지정합니다. 또한 이 주제를 사용하여 응답 출력에서 반환되는 ID를 지정할 수 있습니다. 이 커넥터는 AWS IoT Analytics에 전송하는 발신
BatchPutMessage
요청의 각 메시지에 대해 ID가 고유한지 확인합니다. 중복 ID가 있는 메시지는 취소됩니다.이 주제에 전송되는 입력 데이터는 다음 메시지 형식을 사용해야 합니다.
- 메시지 속성
-
request
-
지정된 채널에 전송되는 데이터입니다.
필수:
true
유형: 다음 속성을 포함하는
object
:message
-
JSON 또는 base64 인코딩 문자열인 디바이스 또는 센서 데이터입니다.
필수:
true
형식:
string
id
-
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다. 지정하면 응답 객체의
id
속성이 이 값으로 설정됩니다. 이 속성을 생략하면 커넥터가 ID를 생성합니다.필수:
false
형식:
string
유효한 패턴:
.*
- 입력 예
-
{ "request": { "message" : "{\"temp\":23.33}" }, "id" : "req123" }
- 주제 필터:
iotanalytics/channels/+/messages/binary/put
-
이 주제를 사용하여 형식이 지정되지 않은 메시지를 커넥터에 전송하고 대상 채널을 동적으로 지정합니다.
커넥터 데이터는 이 주제에 대해 수신된 입력 메시지를 구문 분석하지 않습니다. 이러한 메시지는 바이너리로 처리합니다. 메시지를 AWS IoT Analytics에 전송하기 전에 커넥터는
BatchPutMessage
API 요구 사항에 적합하도록 메시지를 인코딩하고 형식 지정합니다.커넥터는 원시 데이터를 base64로 인코딩하고 인코딩된 페이로드를 발신
BatchPutMessage
요청에 포함시킵니다.커넥터는 ID를 생성하고 각 입력 메시지에 할당합니다.
참고
커넥터의 응답 출력에는 이러한 입력 메시지에 대한 ID 상호 관계가 포함되지 않습니다.
- 메시지 속성
-
없음.
- 주제 필터:
#
-
이 주제를 사용하여 모든 메시지 형식을 기본 채널로 전송합니다. 이 기능은 클라이언트 디바이스가 고정 주제에 게시하는 경우 또는 데이터를 커넥터 지원 메시지 형식으로 처리할 수 없는 클라이언트 디바이스의 기본 채널로 데이터를 전송하려는 경우에 유용합니다.
생성하는 구독에서 주제 구문을 정의하여 이 커넥터를 데이터 소스에 연결합니다. 구독에
#
와일드카드만 사용하는 대신 주제 경로를 지정하는 것이 좋습니다.커넥터 데이터는 이 입력 주제에 게시되는 메시지를 구문 분석하지 않습니다. 모든 입력 메시지는 바이너리 데이터로 처리됩니다. 메시지를 AWS IoT Analytics에 전송하기 전에 커넥터는
BatchPutMessage
API 요구 사항에 적합하도록 메시지를 인코딩하고 형식 지정합니다.커넥터는 원시 데이터를 base64로 인코딩하고 인코딩된 페이로드를 발신
BatchPutMessage
요청에 포함시킵니다.커넥터는 ID를 생성하고 각 입력 메시지에 할당합니다.
참고
커넥터의 응답 출력에는 이러한 입력 메시지에 대한 ID 상호 관계가 포함되지 않습니다.
- 메시지 속성
-
없음.
출력 데이터
이 커넥터는 상태 정보를 MQTT 주제에 출력 데이터로 게시합니다. 이 정보에는 AWS IoT Analytics에서 수신하고 전송하는 각 입력 메시지에 대해 AWS IoT Analytics가 반환하는 응답이 포함됩니다.
- 구독의 주제 필터
-
iotanalytics/messages/put/status
- 출력 예: 성공
-
{ "response" : { "status" : "success" }, "id" : "req123" }
- 출력 예: 실패
-
{ "response" : { "status" : "fail", "error" : "ResourceNotFoundException", "error_message" : "A resource with the specified name could not be found." }, "id" : "req123" }
참고
커넥터가 재시도 가능한 오류(예: 연결 오류)를 감지하면 다음 배치에서 게시를 재시도합니다. 지수 백오프는 AWS SDK에서 처리됩니다. 재시도할 수 있는 오류가 있는 요청은
IotAnalyticsQueueDropBehavior
파라미터에 따라 추가 게시를 위해 다시 채널 대기열에 추가됩니다.
사용 예
다음 상위 수준 단계를 사용하여 커넥터를 사용해 보는 데 이용할 수 있는 예제 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 = 'iotanalytics/channels/my_channel/messages/put' def create_request_with_all_fields(): return { "request": { "message" : "{\"temp\":23.33}" }, "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
제한
이 커넥터에는 다음 제한이 적용됩니다.
AWS IoT Analytics
batch_put_message
작업에 대해 AWS SDK for Python (Boto3)에서 부과한 모든 제한. AWS IoT Analytics BatchPutMessage API에서 부과하는 모든 할당량. 자세한 내용은 AWS 일반 참조의 AWS IoT Analytics 서비스 할당량을 참조하세요.
채널별로 초당 100,000개의 메시지.
배치당 100개의 메시지.
메시지당 128KB.
이 API는 채널 이름(채널 ARN이 아님)을 사용하므로, 데이터를 교차 리전 또는 교차 계정 채널로 전송하는 작업은 지원되지 않습니다.
AWS IoT Greengrass 코어에 의해 부과된 모든 할당량. 자세한 내용은 AWS 일반 참조의 AWS IoT Greengrass 코어에 대한 서비스 할당량을 참조하세요.
다음 할당량도 특정하게 적용될 수 있습니다.
장치에서 전송되는 최대 메시지 크기는 128KB입니다.
Greengrass 코어 라우터에서 최대 메시지 대기열 크기는 2.5MB입니다.
주제 문자열의 최대 길이는 256바이트의 UTF-8 인코딩 문자입니다.
라이선스
IoT Analytics 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.
-
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 그룹은 한 번에 하나의 커넥터 버전만 포함할 수 있습니다. 커넥터 버전 업그레이드에 대한 자세한 내용은 커넥터 버전 업그레이드 단원을 참조하십시오.
다음 사항도 참조하세요.
-
AWS IoT Analytics 사용 설명서의 AWS IoT Analytics란 무엇입니까?