AWS IoT Core 핸즈온

이번달으로 신입연수가 끝나고 이제 실제 부서에 들어가게 되는데, CX(개발) 부서의 IoT팀으로 가게 되었습니다. 그래서 종종 나오는 AWS IoT Core 서비스가 뭔지 궁금했는데 선배에게 핸즈온을 추천 받았습니다. 일본어 버전이기 때문에 번역을 겸사해서 올려보도록 하겠습니다.
2020.12.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

이번달으로 신입연수가 끝나고 이제 실제 부서에 들어가게 되는데, CX(개발)부서의 IoT팀으로 가게 되었습니다.

그래서 팀 내에서 종종 나오는 AWS IoT Core 서비스가 뭔지 궁금했는데 선배에게 핸즈온을 추천 받았습니다.

일본어 버전이기 때문에 제 핸즈온 기록겸, 번역겸해서 올려보도록 하겠습니다.

라즈베리 파이를 사용하는 경우, 사용하지 않는 경우가 있는데요, 저는 사용하지 않고 AWS Cloud9을 사용하여 진행하겠습니다.

그리고, 핸즈온과 현재의 AWS IoT Core의 대시보드가 조금 다르기 때문에 순서가 좀 다를 수 있습니다.

AWS IoT Coreハンズオンを公開 – IoTデータの収集や分析、可視化について学べます

AWS IOT CORE 初級ハンズオン

AWS IoT Core란?

AWS IoT Core는, 인터넷의 연결되 디바이스로 부터 클라우드 어플리케이션, 다른 디바스스에 간단하고 안전하게 통신하기 위한 매니지드 클라우드 서비스 입니다. AWS IoT Core는 수십개의 디바이스와 수조개의 메시지를 서포트하며, 그 메시지를 AWS 엔도포인트나 다른 디바이스에 확실하고 안전하게 처리하여 라우팅합니다. AWS IoT Core를 이용한하면 어플리케이션이 인터넷의 접속되어있지 않은 경우도 모든 장치를 지속적으로 추적하여 통신할 수 있습니다.

AWS IoT Core를 사용하면 AWS, AWS Lambda, Amazon Kinesis, Amazon S3, Amazon SageMaker, Amazon DynamoDB, Amazon CloudWatch, AWS CloudTrail, Amazon QuickSight 및 Alexa Voice Service 같은 Amazon 서비스를 간단히 사용하여 인프라스트럭처를 관리하지 않고 접속된 디바이스에서 생성된 데이타 수집, 처리, 분석 및 데이터에 따른 액션을 취할 IoT 어플리케이션을 구축할 수 있습니다.

여러개의 디바이스을 AWS IoT Core를 이용하여 다른 AWS 서비스들에 쉽게 연결하고 사용할 수 있네요. 특히 람다, 다이나모 디비와 쉽게 연결 할 수 있다는 점은 백엔드를 서버리스 형태로도 쉽게 사용할 수 있어 보여 좋네요.

이번 핸즈온에서 배우는 것

이 핸즈온에서는 처음으로 AWS IoT나 AWS IoT Core를 이용하는 분들이 대상입니다. 기본적의 AWS IoT Core의 기능에 대해서 배웁니다.

이번 핸즈온의 구성

핸즈온이 라즈베리 파이를 대상으로 진행되지만, 디바이스가 없어도 괜찮습니다! 가상 디바이스 환경에서 진행을 할 수도 있기 때문에, 저처럼 디바이스가 없으신 분도 해보실 수 있습니다. 만약 라즈베리 파이를 가지고 계시다면 좀 더 실제와 가깝게 진행 하실 수 있기 때문에 좋겠네요.

이번 실습의 구성도입니다.

핸즈온에서 AWS IoT Core를 통해 데이터를 수집하고 활용하는 방법을 배울 수 있습니다.

  1. 어플리케션의 DB 작성
  2. Amazon Elasticsearch Service로 리얼 타임에 가까운 시각화
  3. Amazon S3를 이용한 데이터 레이크 생성

리전은 자신이 원하는 리전에서 사용해주시면 되겠습니다. 저는 서울리전에서 진행하겠습니다.

디바이스 셋업

라즈베리 파이가 없는 경우 (AWS Cloud9을 가상 디바이스로 사용)

저는 현재 라즈베리 파이가 없기 때문에 AWS Cloud9을 가상 디바이스처럼 사용해보겠습니다.

요즘 대시보드가 좀 바뀌었죠. 약간 모던한 느낌을 AWS에서 주고 싶었나봅니다.

Cloud9을 검색해서 대시보드에 들어가신 후

Create Environment을 클릭해서 새 환경을 만들어 봅시다.

자신이 알아보기 쉽게 이름을 설정해주시고 아래의 Next step을 눌러주세요.

  • Environment type
  • Create a new EC2 instance for environment (direct access)

  • Instance type

  • t2.micro (1 GiB RAM + 1 vCPU)

  • Platform

  • Amazon Linux 2 (recommended)

위와 같이 세팅을 설정해주시고 우측 아래 Next step을 눌러 진행해주세요.

이후 검토화면에서 우측아래 버튼으로 환경을 만드시면 인스턴스가 생성되어집니다.

인스턴스가 생성되어지면 AWS IoT Device SDK Python v2를 설치해 봅시다.

v2가 Python의 버전인가 했는데 AWS IoT Device SDK의 버전이더군요. Python 버전은 3.5+ 였습니다.

AWS IoT Device SDK v2 for Python

아래의 터미널에서 설치를 진행하시면 됩니다.

pip3 install --user awsiotsdk

설치를 완료하신 후

더미 클라이언트용 소스코드를 다운로드 합니다.

# 폴더 생성, 이동
mkdir -p ~/environment/dummy_client/certs/
cd ~/environment/dummy_client/

# 소스코드 다운로드
wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/aws-iot-core-workshop/dummy_client/device_main.py -O device_main.py

위와 같이 잘 다운이 되었나 확인 해 주세요.

라즈베리 파이의 경우

라즈베리 파이의 경우 제가 라즈베리 파이가 없어서 실제 테스트는 못 하지만 링크를 보고 따라해주시면 되겠습니다. 구글 번역의 힘이 필요합니다.

RASPBERRY PIのセットアップ

AWS IoT Core 셋업

AWS IoT Core 콘솔 페이지로 이동해주세요.


사물 등록

핸즈온하고 현재의 대시보드가 조금 바뀌었는데요, 온보딩의 시작하기에서 시작해주세요.

시작하기를 누른 후 한번더 나오는 화면에서 시작하기를 눌러주세요.

플랫폼은 Linux/OSX, SDK는 Python으로 선택하고 다음을 눌러주세요.

자신이 알아보기 쉬운 이름으로 설정해주시고 다음 단계를 눌러주세요.

연결 키트를 다운하고 다음 단계로 넘어가주세요.

정책 생성

이름은 자신이 알아보기 쉽게 ex) {자기 디바이스 이름}-{yyyymmdd}-policy, 작업에 iot:*, 리소스 ARN에 *를, 효과에 허용을 설정해주세요. 실제 정책은 좀 더 필요한 부분만 설정하여서 사용해야하지만 핸즈온이기 때문에 느슨하게 설정해두겠습니다.

그리고 자신의 사물에서 사용하는 인증서에서 위와 같이 정책을 연결해주시면 되겠습니다.


Cloud9 내 셋업

핸즈온에서 자체적으로 스크립트를 제공하는데요. AWS IoT Core가 제공하는 스크립트의 사용법도 추가해 두었습니다.

핸즈온의 스크립트

AWS Cloud9 인스턴스로 돌아가서

# 디렉토리 이동
cd ~/environment/dummy_client

# AWS IoT 루트 CA 증명서 다운
wget https://www.amazontrust.com/repository/AmazonRootCA1.pem -O certs/AmazonRootCA1.pem

이후 인증서를 올려보겠습니다.

/home/ec2-user/environment/dummy_client/certs

연결키트 파일을 업로드 해주세요 왼쪽의 dummy_client/certs를 클릭한 후 상단의 file에서 Upload Local Files...를 눌러주시면 됩니다.

올린 후

cd ~/environment/dummy_client/certs

1단계: 디바이스에서 연결 키트의 압축 파일 해제

unzip connect_device_package.zip

2단계: 스크립트 실행

~/environment/dummy_client에서

python3 device_main.py --device_name {디바이스 이름} --endpoint {엔드포인트 URL}

를 실행해주세요.

엔드포인트는 위에서 찾아주시면 됩니다.

만약 위 커맨드가 안되시는 경우는 ~/environment/dummy_client/device.main.py을 열어주셔서 140 라인의

 elif "certificate" in file:
                file_list[2] = certs_dir + "/" + file

를 아래처럼 바꿔주세요.

 elif "cert" in file:
                file_list[2] = certs_dir + "/" + file

콘솔에서 작동을 확인하고 싶으시다면 아래와 같이 확인해주시면됩니다. 토픽이름은 data/{디바이스 이름}의 형태이고 스크립트 실행 후에도 로그에서 토픽이름을 확인하실 수 있습니다.

AWS IoT Core가 제공하는 기본 스크립트

AWS Cloud9 인스턴스로 돌아가서

# 디렉토리 이동
cd ~/environment/dummy_client

# AWS IoT 루트 CA 증명서 다운
wget https://www.amazontrust.com/repository/AmazonRootCA1.pem -O certs/AmazonRootCA1.pem

이후 인증서를 올려보겠습니다.

/home/ec2-user/environment/dummy_client/certs

연결키트 파일을 업로드 해주세요 왼쪽의 dummy_client/certs를 클릭한 후 상단의 file에서 Upload Local Files...를 눌러주시면 됩니다.

올린 후

cd ~/environment/dummy_client/certs

1단계: 디바이스에서 연결 키트의 압축 파일 해제

unzip connect_device_package.zip

2단계: 실행 권한 추가

chmod +x start.sh

3단계: 시작 스크립트 실행. ./start.sh

스크립트 실행 후 아래와 같이 잘 나오면 됩니다.

스크립트가 잘 작동하는지 콘솔에서 확인하고 싶다면 아래의 화면과 같이 주제를 구독하시면 확인하실 수 있습니다.

라즈베리 파이의 경우

위의 AWS Cloud9와 비슷하게 라즈베리 파이에 진행해주시면 됩니다.

DUMMY CLIENT の設定 (RASPBERRY PI の場合)

디바이스 섀도우 확인

AWS IoT 디바이스 섀도우 서비스는 AWS IoT 사물 객체에 섀도우를 추가합니다. 섀도우는 디바이스가 AWS IoT에 연결되어 있는지 여부에 관계없이 앱 및 기타 서비스에서 디바이스의 상태를 사용할 수 있도록 할 수 있습니다. AWS IoT 사물 객체는 여러 개의 명명된 섀도우를 가질 수 있으므로 IoT 솔루션에는 디바이스를 다른 앱 및 서비스에 연결하기 위한 더 많은 옵션이 있습니다.

AWS IoT 디바이스 섀도우 서비스

섀도우를 통해 앱이나 다른 서비스가 직접 상태를 확인할 수 있게 해줍니다.

기본적으로 사물을 생성하고 나면 생기는 Classic Shadow로 확인해 봅시다.

자신의 사물에서 Classic Shadow를 들어가주세요.

기존의 5초 간격을 1초로 변경해보겠습니다. 편집을 눌러주세요.

{
      "reported": {
            "wait_time": 5
      },
      "desired": {
            "wait_time": 1
      }
}

변경하시고 나면 아래와 같이 디바이스에서 변경됨이 감지됩니다.

이후 콘솔에서 테스트하시려면 저번에 테스트한 것과 같이 동일하게 해주시면 됩니다.

어플리케이션을 위한 DB 생성

Amazond DynamoDB - AWS Lambda - Amazon API Gateway 이 부분은 다른 핸즈온도 많이 있으니 스킵하겠습니다.

Amazon Kinesis Data Streams 생성

Amazon Kinesis 콘솔화면으로 넘어가주세요.

Amazon Kinesis Data Streams으로 데이터 스트림을 생성해 줍니다.

이름은 자신이 알아보기 쉽게, 샤드는 1개로 생성해줍니다.

잘 생성되었는지 확인해 주세요.

Amazon DynamoDB 생성

Amazon DynamoDB 콘솔화면으로 넘어가주세요.

테이블 생성을 눌러주시고,

이름은 자신이 알아보기 쉽게, 파티션 키는 deviceid, 정렬 키는 timestamp로 해주시고 생성해주세요.

IAM 설정

IAM 콘솔로 이동해주세요.

람다에서 사용할 역할 생성

역할에서 역할 만들기를 눌러주세요.

람다를 선택해주시고 우측 하단의 다음: 권한을 눌러주세요.

AWSLambdaBasicExecutionRole
AmazonKinesisReadOnlyAccess
AmazonDynamoDBFullAccess

역할에 위의 정책을 검색해서 추가해주세요.

태그는 필요하시면 추가해주시고 다음으로 넘어가주세요.

검토화면에서 자신이 알아보기 쉽게 역할이름을 설정해주시고, 추가한 정책들이 잘 있나 확인해주세요.

우측 하단의 역할 만들기를 클릭해서 역할을 만들어주세요.

AWS IoT에서 사용할 역할 생성

역할을 하나 더 만들어주세요.

IoT를 찾아주시고 하단도 IoT를 선택해주시고 넘어가주세요.

기본 설정 그래도 넘어가주세요.

태그는 필요하시면 추가해주시고 다음으로 넘어가주세요.

검토화면에서 이름을 설정해주시고 역할을 만들어주세요.

람다 설정

람다 콘솔로 넘어가주세요.

새로운 람다를 생성해주세요

이름은 자신이 편한대로, 런타임은 Python 3.8을 선택해주세요.

역할은 이전에 만들어두었던 람다 용 역할을 선택해주시고 생성해주시면 됩니다.

트리거를 추가하겠습니다.

아까 만들었던 Kinesis를 선택해주시고 추가해주시면 됩니다.

코드 탭으로 넘어가서 기존의 코드를 지우고 링크의 코드를 복붙하고 오른쪽 위에 배포를 눌러주세요.

코드 탭 페이지에서 조금 스크롤을 내리면 보이는 환경 변수를 편집하겠습니다.

환경 변수 추가를 누르시고,

키에 TABLE_NAME, 값에 이전에 설정했던 DynamoDB의 테이블의 이름을 설정한 다음 저장해주세요.

AWS IoT Core 설정

AWSIoT Core 콘솔로 넘어가주세요.

동작 -> 규칙에서 규칙 생성을 클릭해주세요.

이름은 자신이 알아 보기 쉽게, 규칙 쿼리는 select * from 'data/{device name} {device name}에 자신의 사물명을 적어주세요.

밑에 스크롤을 내려 작업 추가를 해주세요.

Amazon Kinesis 스트림을 선택하고 우측 하단의 작업 구성을 눌러주세요.

스트림 이름은 만들어주신 Kinesis를 파티션 키는 ${newuuid()}, 역할은 IoT를 위해 만들었던 역할을 선택하고 작업추가를 눌러주세요.

이후 돌아간 페이지에서 우측 하단의 규칙 생성을 클릭하여 완료해주세요.

테스트

테스트 탭에서 자신의 주제 data/{device name}을 입력하고 주제 구독을 눌러 잘 작동하는지 확인해주세요. 테스트가 되는지 확인하려면 디바이스에서 스크립트를 작동시켜주셔야 합니다.

Amazon Kinesis가 작동하나 확인해 봅시다.

Amazon Kinesis 콘솔로 들어가서

자신이 만들었던 Amazon Kinesis에서 작동하는지 확인해 보겠습니다.

모니터링 탭에서 확인해보시면 레코드 넣기, 가져오기를 하고 있는 것을 확인 할 수 있습니다.

Amazon DynamoDB 테이블에 데이터가 들어오는 것을 확인해보겠습니다.

Amazon DynamoDB 콘솔로 넘어가서,

자신이 만들었던 테이블을 확인하시면 데이터가 들어온 것을 확인할 수 있습니다.

이제 AWS Lambda가 잘 작동되는지 확인하러 AWS Lambda 콘솔로 넘어가 봅시다.

자신이 만들었던 AWS Lambda 함수의 모니터링 탭을 들어가서 확인해 보시면 작동 중임을 확인할 수 있습니다.

Amazon Elasticsearch Service 사용

Amazon Elasticsearch 생성

Amazon Elasticsearch Service 콘솔로 넘어가서,

새 도메인 생성을 클릭해 줍시다.

배포 유형은 개발 및 테스트, 버전은 최신버전으로 하겠습니다. 2020/12/30 현재 7.9네요.

이름은 자신에게 편한 이름으로, 데이터 노드의 인스턴스 타입은 t3.small.elasticsearch로 하고 우측하단의 다음버튼을 클릭해주세요.

네트워크 구성을 퍼블릭 액세스로 하겠습니다. 핸즈온이기 때문에 좀 느슨하게 설정하겠습니다.

그리고 세분화된 액세스 제어 활성화 박스를 클릭해서 비활성화 시켜주세요.

http://checkip.amazonaws.com/에서 자신의 ip를 확인해주시고,

스크롤을 좀 내리다보면 보이는 액세스 정책에서, 유형 선택에 IPv4 주소 보안 주체 입력에 확인한 자신의 ip 주소, 작업 선택에 허용을 선택해주세요.

검토확인해서 다시 한번 확인해주시고 우측 하단의 확인르 눌러주시면 약 10분정도 뒤에 생성됩니다.

AWS IoT 역할 작성

AWS IoT Core 콘솔에서 동작 -> 규칙 페이지에서 우측 상단에 있는 생성을 클릭하여 새로운 규칙을 생성하겠습니다.

규칙 이름은 자신이 알아 보기 쉽게, 규칙 쿼리는 아래 쿼리를 넣어주세요.

select parse_time("yyyy-MM-dd'T'HH:mm:ss.SSSZ", timestamp()) as timestamp, * from '{자신의 주제명}'

주제 이름은 data/lbh-device 같은 형식입니다. 디바이스 스크립트 실행 시 로그에서 보이는 주제 이름을 사용해주시면 되겠습니다.

그리고 좌측 하단의 작업 추가를 눌러주세요.

Amazon Elasticsearch Service로 메시지 전송을 클릭하고 우측 하단의 작업 구성을 눌러주세요.

도메인 이름은 아까 만든 도메인을 선택해주시고,

ID: ${newuuid()}

인덱스: timestamp

유형: timestamp

를 입력해주시고 아래의 역할 생성을 눌러주시고, 이름은 자신이 알아보기 쉽게 설정해주시면 됩니다.

그리고 마지막으로 우측 하단의 작업 추가를 눌러주시면 생성됩니다.

이후 규칙 생성 페이지로 돌아와지면 우측 하단의 규칙 생성을 눌러주시면 됩니다.

Kibana 설정

Elasticsearch Service 콘솔에서 자신이 만든 도메인을 들어간 후 kibana 링크로 kibana를 열어주세요.

열린 브라우저에서 Explore on my own을 클릭합니다

화면에서 우측 상단의 Connect to your Elasticsearch index를 눌러주세요.

보이지 않는다면 디바이스에서 데이터를 전송하지 않은 상태입니다. 디바이스에서 스크립트를 활성하 시켜서 데이터를 보내주세요.

우측 상단의 Create index pattern을 클릭합니다.

Index pattern name에 timestamp를 입력하니다. 데이터가 잘 확인되었다면

Your index pattern matches 1 source.

메시지가 나옵니다. 확인되셨다면 오른쪽의 Next step 버튼을 눌러주세요.

Time field에 TIMESTAMP를 선택하고 오른쪽 아래의 Create index pattern 버튼을 눌러주세요.

그러면 위와 같이 데이터를 잘 분석하고 있는 것을 확인할 수 있습니다.

오른쪽의 메뉴 버튼에서 Discover을 누른 후

데이터가 잘 들어왔는지 확인해 주세요.

그래프 생성

그래프를 만들어보겠습니다.

왼쪽의 메뉴에서 Visualize를 선택해주세요.

Create new visualization 버튼을 눌러주세요.

여러가지 선택지 중 Line을 선택해주세요.

timestamp*를 선택한 뒤

오른쪽과 같이 Y-axis를

Aggregation: Average

Field: TEMPERATURE

Custom label: TEMPERATURE

Add 버튼을 눌러 한개의 Y-axis를 더 생성합니다.

Aggregation: Average

Field: HUMIDITY

Custom label: HUMIDITY

아래의 Buckets에 Add를 눌러 X-axis를 생성하고,

Aggregation: Data Histogram

Field: TIMESTAMP

Minimum interval: Auto

Custom label: TIMESTAMP

로 설정해주세요. 그리고 오른쪽 아래 Update 버튼을 눌러주시면 렌더링됩니다. 잘 되는 것을 확인했으면 좌측 상단의 Save 버튼으로 저장해주세요.

Title은 자신이 원하든대로 지정해주시고 저장해주시면 됩니다.

데이터 레이크 생성

S3 버킷 생성

S3 콘솔로 넘어가주세요.

우측의 버킷 만들기로 버킷을 만들어보겠습니다.

버킷 이름은 자신이 알아보기 쉽게, 리전은 핸즈온을 하면서 사용했던 리전과 같게 해주세요. 다른 옵션은 건들지 않겠습니다.

Kinesis Data Firehose 생성

Kinesis 콘솔로 넘어가주세요.

가운데의 Data Firehose의 전송 스트림 생성 버튼을 눌러주세요.

이름은 자신이 알아보기 쉽게, 다른 설정은 위와 같이 건드리지 않고 우측 하단의 Next를 눌러주세요.

람다로 데이터 변환작업을 하지 않으니 Disabled인 상태로 우측 하단의 Next를 눌러주세요.

Destination으로 S3 bucket으로 선택하고 아래 Choose a bucket에서 생성했던 버킷을 찾아 선택해주세요.

스크롤을 내리면 보이는 화면 아래의 S3 prefix 부분은 건드리지 않고 우측 하단의 Next를 눌러주세요.

Buffer size는 5 MiB, Buffer interval은 300 seconds, S3 compression은 GZIP, S3 encryption은 Disabled으로 선택하고 스크롤을 내려주세요.

Permissions 부분의 IAM role은 Create or update IAM role ~ 부분을 선택하고 우측 하단의 Next를 눌러주세요.

검토 화면에서 설정 해둔 것이 잘되어있는지 확인하고 우측 하단의 Create delivery stream을 눌러 생성합니다.

그러면 Kinesis Data Firehose가 잘 생성된 것을 확인 하실 수 있습니다.

AWS IoT 역할과 Kinesis Data Firehose 연동

AWS IoT 콘솔에서 동작 -> 규칙을 들어간 후 Amazon Kinesis를 위해 만들었던 역할을 누른 후 아래의 작업 추가를 클릭해주세요.

Amazon Kinesis Firehose 스트림으로 메시지 전송을 선택한 후 우측 하단의 작업 구성을 눌러주세요.

리소스는 생선하신 항목을 선택해주시고, 구분자로 \n (newline)을 선택해주세오.

리소스를 선택하고 나면 우측 하단의 역할 생성이라는 버튼이 생기는데요, 클릭하여 역할을 생성해주세요. 이름은 자신이 알아보기 쉽게 설정해주세요.

그리고 작업 추가 버튼을 눌러주세요.

Amazon S3 콘솔 화면으로 이동을 눌러 자신이 만든 버킷에 데이터를 확인해주세요.

아직 없다면 몇분 후 확인해주시면 됩니다. 확인하기 위해 디바이스에서 스크립트를 돌려주시면 되겠습니다.

데이터가 들어오면 지정했던 버킷으로 들어가 날짜 형식의 경로 끝까지 들어가주세요.

경로 끝 데이터에서 오른쪽 위 객체 작업 -> S3 Selector를 사용한 쿼리를 선택해주세요.

위 이미지와 같이 입력 형식에는 JSON, 줄, 없음을 선택해주시고, 출력 형식으로는 JSON을 선택하고 SQL 쿼리 실행을 눌러주세요.

그러면 위와 같이 데이터가 잘 들어온 것을 확인할 수 있습니다.

마지막으로, 리소스 삭제

핸즈온을 하고 난뒤에는 필요없는 비용 낭비를 위해 리소스를 삭제해야겠죠? 하나하나 삭제해봅시다.

AWS Cloud9

AWS Cloud9 콘솔 -> 생성한 인스턴스 클릭 후 우측 상단 Delete 버튼 클릭 -> 나오는 모달 창에서 Delete 입력

Amazon Elasticsearch

Amazon Elasticsearch 콘솔 -> 생성한 도메인 클릭 -> 작업 버튼 클릭 후 도메인 삭제 선택 -> 나오는 모달 창에서 삭제 확인하는 박스 클릭 후 삭제

Amazon Kinesis Data Streams & Firehose

Data Streams

Amazon Kinesis 콘솔 -> 데이터 스트림 선택 후 -> 삭제할 리소스 선택 -> 작업 클릭 후 삭제 -> 나오는 모달 창에서 삭제 입력.

Data Firehose

Amazon Kinesis 콘솔 -> Data Firehose 선택 후 -> 삭제할 리소스 선택 -> Delete 버튼 클릭 -> 나오는 모달 창에서 삭제 확인

Amazon S3

Amazon S3 콘솔 -> 자신이 생선한 버킷 클릭 -> 데이터 삭제 -> 영구 삭제 입력 후 객체 삭제 -> Amazon S3 콘솔 -> 자신이 생성한 버킷 선택 -> 상단의 삭제 버튼 클릭 -> 버킷 명 입력 후 삭제

AWS IoT Core 사물, 역할, 정책, 인증서

사물

AWS IoT 콘솔 -> 관리 -> 사물 -> 삭제 할 사물 선택 -> 우측 상단의 작업 클릭 후 삭제 -> 나오는 모달 창에서 삭제 진행

규칙

AWS IoT 콘솔 -> 동작 -> 규칙 -> 삭제 할 규칙 선택 -> 우측 상단의 작업 클릭 후 삭제 -> 나오는 모달 창에서 삭제 진행

인증서

AWS IoT 콘솔 -> 보안 -> 인증서 -> 삭제 할 인증서 선택 -> 우측 상단의 작업 클릭 후 삭제 -> 나오는 모달 창에서 삭제 진행

정책

AWS IoT 콘솔 -> 보안 -> 정책 -> 삭제 할 정책 선택 -> 우측 상단의 작업 클릭 후 삭제 -> 나오는 모달 창에서 삭제 진행

Amazon DynamoDB

Amazon DynamoDB 콘솔 -> 테이블 -> 자신이 생성한 테이블 선택 -> 테이블 삭제 버튼 클릭 -> 나오는 모달에서 delete 입력 후 삭제

AWS Lambda

AWS Lambda 콘솔 -> 자신이 생성한 함수 선택 -> 작업 -> 삭제 -> 나오는 모달에서 삭제 진행

AWS IAM Role

AWS IAM 콘솔 -> 역할 -> 생선한 역할들 이름으로 검색 -> 역할 삭제 -> 나오는 모달에서 예, 삭제 버튼 클릭

Amazon Cloudwatch Logs

아래의 로그들을 삭제해주세요.

  • AWS Lambda 로그: /aws/lambda/{Lambda 이름}
  • Amazon Kinesis Data Firehose 로그: /aws/kinesisfirehose/{이름}
  • AWS IoT(로깅 설정한 경우): AWSIotLogsV2

감상

IoT의 데이터 특성 상 가벼운 많은 데이터를 짧은 간격으로 처리하기 위해 Kafka를 사용할 수 있는데요. AWS IoT Core와 Amazon Kinesis를 통해 AWS에 쉽게 올릴 수 있다는 점이 좋아보이네요. 실제로 카프카를 구축하는 일은 간단한 일이 아니니까요. 그리고 서버리스이기 때문에 전체적인 아키텍처를 서버리스로 구축하고 싶다면 좋은 것 같습니다.

그리고 키네시스 - 람다 - 다이나모디비를 다시 - 람다 - 에이피아이 게이트웨이로 S3에 올린 SPA에서 사용하거나 하면 데이터를 사용자에게도 전달하기 쉽겠네요. 엘라스틱 서치와 Kibana는 시스템의 관리자용으로 사용하고 비용적인 면을 고려하거나, 엔드유저에게 다양한 방법으로 제공하기 위해 다이나모디비에서 엔드 유저에게 커스텀하여 제공할 수 있어 좋다고 느껴집니다.

사실 AWS의 IoT 서비스들에 대해서 잘 몰랐었는데요. 잘 되어있는 것 같아 다른 서비스들도 사용해보고 싶네요.

이상입니다~.

참고 자료

AWS IoT 코어 - 개발자 가이드