API Gateway에서 받은 REST를 AWS IoT에 게시하는 방법
6648 단어 APIGatewayawsIoTAWS
하고 싶은 일
HTTP REST 하지만 말할 수 없는 앱의 데이터에서도 AWS IoT에 Publish하고 싶다!
개요
AWS IoT에 Publish하는 것은 MQTT뿐만 아니라 HTTP REST에서도 가능
Clients can publish by sending a POST message to
<AWS IoT Endpoint>/topics/<url_encoded_topic_name>?qos=1
반면에 API Gateway는 AWS Service Proxy에서 AWS 서비스에 REST 요청을 프록시 할 수 있습니다.
Amazon API Gateway에서 AWS Service Proxy를 사용하여 DynamoDB에 액세스 | Developers.IO
이를 결합하면 자체 REST 클라이언트의 요청을 AWS IoT로 데이터를 보낼 수 있습니다.
이론보다 코드
IAM 정책 생성
정책
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1460435015000",
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"*"
]
}
]
}
iot : publish가 있으면 OK입니다.
IAM 역할 만들기 및 정책 연결
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Sid": "",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
위와 같이 신뢰할 수있는 엔티티의 ID에 apigateway.amazonaws.com이 지정되면 OK입니다.
또한 이 역할에 앞서 만든 정책을 연결하세요.
Endpoint 만들기
Integration Request를 아래와 같이 만들면
품목
설정 내용
통합 유형
AWS Service Proxy
AWS Region
AWS Service
Iot Data
AWS Subdomain
<
aws iot describe-endpoint
로 표시되는 XXXXX.iot.REGION.amazonaws.com의 XXXXX 부분>HTTP method
POST
Action Type
Path override 으로
topics/{tp_lv1}/{tp_lv2}
Execution role
<앞에서 만든 역할의 ARN>
Credentials cache
Do not add caller credentials to cache key
화면에 이런 느낌이
해설과 포인트
포인트는 Action Type 을 Path override 로 하는 곳에 있습니다
이렇게 하면 API Gateway에서 AWS의 서비스로 HTTP REST 요청이 전송됩니다.
또한 최종적으로 호출되는 URI는
<AWS Subdomain>.iot.<AWS Region>.amazonaws.com/<Path override>?<URL Query String Parameters>
입니다.URL Path Parameters;
Path override의
{param_name}
를 Mapped from으로 바꿉니다.또한 Path override의 {...}은 URL Path Parameters로 대체됩니다.
아래의 예라면 결국 A33XXXXXXXXXT.iot.ap-northeast1.amazonaws.com/topics/sensor/geo?qos=1이 호출되고 역할에 할당 된 정책 (iot : publish)의 권한 사용하여 게시 할 수 있습니다.
후기
Content-Type: application/octet-stream 요청도 API Gateway $util와 매핑을 사용하여 JSON화할 수 있으므로 AWS IoT를 통해 원하는 서비스를 호출할 수 있습니다.
※Amazon API Gateway에서 바이너리 데이터를 조사했습니다.
Lambda를 그대로 사용하면? 라는 목소리도 들릴 것 같지만.
Reference
이 문제에 관하여(API Gateway에서 받은 REST를 AWS IoT에 게시하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ma2shita/items/d558929c58d497a622e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)