아피가테이웨이 IoT - AWS 솔루션 구성체

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

아피가테이웨이 IoT

모든 클래스는 활발히 개발 중이며 향후 버전에서 이전 버전과 호환되지 않는 변경 또는 제거 될 수 있습니다. 이들은 적용되지 않습니다의미 체계 버전 관리모델을 선택합니다. 즉, 이 패키지를 사용할 수도 있지만 이 패키지의 최신 버전으로 업그레이드할 때 소스 코드를 업데이트해야 할 수도 있습니다.

참고: 적절한 기능을 보장하려면 프로젝트의 AWS 솔루션 구성 패키지와 AWS CDK 패키지가 동일한 버전이어야 합니다.

언어 패키지
Python
aws_solutions_constructs.aws_apigateway_iot
타이프 스크립트
@aws-solutions-constructs/aws-apigateway-iot
Java
software.amazon.awsconstructs.services.apigatewayiot

Overview

이 AWS 솔루션 구성은 AWS IoT 패턴에 연결된 Amazon API Gateway REST API를 구현합니다.

이 구조는 API Gateway AWS IoT 간에 확장 가능한 HTTPS 프록시를 생성합니다. 이는 MQTT 또는 MQTT/WebSocket 프로토콜을 지원하지 않는 레거시 디바이스가 AWS IoT 플랫폼과 상호 작용하도록 허용하려는 경우에 유용합니다.

이 구현은 지정된 MQTT 항목에 쓰기 전용 메시지를 게시할 수 있게 하며, 장치 레지스트리에서 허용된 항목에 대한 HTTPS 장치의 섀도 업데이트를 지원합니다. 메시지를 프록싱하기 위해 Lambda 함수를 포함하지 않으며 대신 JSON 메시지와 이진 메시지를 모두 지원하는 AWS IoT 통합 직접 API Gateway 사용합니다.

다음은 TypeScript 터의 최소 배포 가능한 패턴 정의입니다.

import { ApiGatewayToIot } from '@aws-solutions-constructs/aws-apigateway-iot'; new ApiGatewayToIot(this, 'ApiGatewayToIotPattern', { iotEndpoint: 'a1234567890123-ats' });

Initializer

new ApiGatewayToIot(scope: Construct, id: string, props: ApiGatewayToIotProps);

파라미터

소품 패턴 구성

이름 유형 설명
이오텐드포인트 string API Gateway 통합하기 위한 AWS IoT 엔드포인트 하위 도메인 (예: a1234567890123-ats).
아피가트웨이만들기API키? boolean 다음의 경우true로 설정하면 API 키가 생성되어 UsagePlan 연결됩니다. RESTAPI에 액세스하는 동안 사용자는`X-API 키'헤더를 지정해야합니다. 기본값 설정false.
어피그레이트웨이 실행역할? iam.Role API Gateway 에서 AWS IoT 에 액세스하는 데 사용하는 IAM 역할입니다. 지정하지 않으면 모든 주제와 사물에 대한 와일드카드 ('*') 액세스 권한이 있는 기본 역할이 만들어집니다.
아피가트웨이 소품? api.restApiProps API Gateway REST API의 기본 소품을 재정의하는 선택적 사용자 제공 소품.
로그그룹Props? logs.LogGroupProps CloudWatch Logs 로그 그룹의 기본 소품을 무시하기 위한 선택적 사용자 제공 소품.

패턴 등록 정보

이름 유형 설명
에이피가트웨이 api.RestApi 패턴에 의해 생성 된 API Gateway REST API의 인스턴스를 돌려줍니다.
APIGateway클라우드워치역할 iam.Role API Gateway REST API에서 CloudWatch 로의 액세스 로깅을 활성화하는 패턴으로 생성된 IAM 역할의 인스턴스를 반환합니다.
에이피가트웨이로그 그룹 logs.LogGroup API Gateway REST API 액세스 로그가 전송되는 패턴으로 생성된 로그 그룹의 인스턴스를 반환합니다.
에이피게이트 웨이 역할 iam.Role API Gateway REST API의 패턴으로 생성된 IAM 역할의 인스턴스를 반환합니다.

기본 설정

재정의없이이 패턴을 즉시 구현하면 다음과 같은 기본값이 설정됩니다.

Amazon API Gateway

  • 엣지 최적화 API 엔드포인트 배포

  • 다음을 사용하여 API 리소스를 만듭니다.POSTIoT 주제에 메시지를 게시하는 방법

  • 다음을 사용하여 API 리소스를 만듭니다.POST메시지를 게시하는 방법ThingShadowNamedShadows

  • API Gateway 대한 CloudWatch 로깅 활성화

  • 모든 주제 및 사물에 액세스할 수 있는 API Gateway 대한 IAM 역할 구성

  • 모든 API 메소드의 기본 권한 부여 유형을 IAM으로 설정

  • X-Ray 추적 설정

  • UsagePlan 생성하고prodstage

다음은 구성을 배포한 후 API Gateway 에서 제공하는 다양한 리소스 및 메서드에 대한 설명입니다. 단원을 참조하십시오.예제:를 사용하여 이러한 엔드포인트를 쉽게 테스트하는 방법에 대한 자세한 정보는curl.

방법 리소스 쿼리 매개 변수 반환 코드 설명
POST /message/<topics> qos 200/403/500 이 엔드 포인트를 호출하면 게시 할 주제 (예:/message/device/foo`).
POST /shadow/<thingName> 없음 200/403/500 이 경로는 사물의 그림자 문서를 업데이트 할 수 있습니다.thingName명명되지 않은 (클래식) 섀도우 유형 사용 몸은 포함하는 표준 그림자 stucture 준수한다state노드 및 연관된desiredreported노드. 단원을 참조하십시오.섀도우 업데이트단원의 예제를 참조하십시오.
POST /shadow/<thingName>/<shadowName> 없음 200/403/500 이 경로는 사물의 명명 된 그림자 문서를 업데이트 할 수 있습니다.thingNameshadowName명명된 그림자 유형을 사용합니다. 몸은 포함하는 표준 그림자 stucture 준수한다state노드 및 연관된desiredreported노드. 단원을 참조하십시오.명명된 섀도우 업데이트단원의 예제를 참조하십시오.

Architecture

Examples

다음 예제에서는API_KEY인증 유형을 사용할 수 있습니다. IAM 권한 부여에는 SIGv4 토큰도 지정해야 하기 때문에apiGatewayCreateApiKey속성이 구성 소품의true를 사용하여 스택을 배포하는 경우 그렇지 않으면 아래 예제가 작동하지 않습니다.

메시지 게시

다음을 수행할 수 있습니다.curl을 클릭하여 HTTPS API를 사용하여 다른 MQTT 주제에 메시지를 게시합니다. 아래의 예는에 메시지를 게시합니다device/foo주제를 참조하십시오.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"Hello": "World"}'

참고: 를 대체합니다.stage-id,region, 및api-key매개 변수를 배포 값으로 바꿉니다.

URL에서 주제 이름을 연결할 수 있으며 API는 게시할 수 있는 하위 주제를 최대 7개까지 허용합니다. 예를 들어, 아래의 예는 주제에 메시지를 게시합니다device/foo/bar/abc/xyz.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo/bar/abc/xyz -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"Hello": "World"}'

섀도우 업데이트

주어진 것과 관련된 섀도우 문서를 업데이트하려면 사물 이름을 사용하여 섀도우 상태 요청을 실행할 수 있습니다. 사물 그림자를 업데이트하는 방법에 대한 다음 예제를 참조하십시오.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/shadow/device1 -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"state": {"desired": { "Hello": "World" }}}'

명명된 섀도우 업데이트

주어진 사물의 이름이 지정된 섀도우와 연관된 섀도우 문서를 업데이트하려면 사물 이름과 섀도우 이름을 사용하여 섀도우 상태 요청을 실행할 수 있습니다. 명명된 섀도우를 업데이트하는 방법은 다음 예제를 참조하십시오.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/shadow/device1/shadow1 -H "x-api-key: <api-key>" -H "Content-Type: application/json" -d '{"state": {"desired": { "Hello": "World" }}}'

이진 페이로드 전송

바이너리 페이로드를 프록시 API로 AWS IoT 서비스로 전송할 수 있습니다. 다음 예제에서는 의 내용을 보냅니다.README.md이 모듈과 관련된 파일 (이진 데이터로 처리됨) 을device/foo를 사용하여application/octet-stream콘텐츠 유형.

curl -XPOST https://<stage-id>.execute-api.<region>.amazonaws.com/prod/message/device/foo/bar/baz/qux -H "x-api-key: <api-key>" -H "Content-Type: application/octet-stream" --data-binary @README.md

참고: 이 프로젝트의 디렉토리에있는 동안이 명령을 실행하십시오. 그런 다음 파일 시스템에서 다른 유형의 바이너리 파일 전송을 테스트 할 수 있습니다.

GitHub

이 패턴의 코드를 보려면 문제 및 끌어오기 요청을 작성/조회하는 등의 작업을 수행합니다.
@aws -솔루션 - 구성/aws-apigateway - IoT