Project RX0004-01¶
RX004 AWS Setting Guide¶
AWS 계성 생성¶
- 다음 웹사이트에 접속한 후 계정을 생성
AWS 콘솔 로그인¶
- 다음 웹사이트에 접속한 후 콘솔에 로그인
- 지역 선택
- 지역 선택 예 (아시아 태평양 서울):
ap-northeast-2
AWS 예산 생성 (AWS Budgets)¶
다음 과정을 수행해 예상한 수준을 너머서는 비용이 발생하지 않도록 예산을 설정할 수 있습니다. 예산을 설정하면 실제 비용이 예산을 초과할 경우 알림을 받을 수 있습니다.
AWS Console > 결제 및 비용 관리 (Billing Dashboard) > 예산 (Budgets) 페이지에 접속
예산 생성 (Create a Budget) 선택
- 예산 설정 입력
- 입력 예:
텝플릿 사용 선택
템플릿: 월별 비용 예산 (Cost Budget)
예산 이름: My Monthly Cost Budget - 50
예산 금액: 50.00
이메일 수신자: your-email@example.com
예산 생성 선택
RX004 AWS CLI Setting Guide¶
AWS 콘솔 로그인¶
- 다음 웹사이트에 접속한 후 콘솔에 로그인
- 지역 선택
- 지역 선택 예 (아시아 태평양 서울):
ap-northeast-2
AWS 사용자 생성¶
다음 과정을 수행에 CLI를 사용해 AWS 리소스에 접근할 수 있는 IAM 사용자 계정을 생성합니다.
- AWS Console > IAM > 엑세스 관리 > 사용자 그룹 > 그룹 생성 선택 후 다음 그룹 생성
- 사용자 그룹 이름: rx004-iam_group-amplify_full_access
- 권한:
AdministratorAccess-Amplify
AmplifyBackendDeployFullAccess
- 사용자 그룹 이름: rx004-iam_group-dynamodb_full_access
- 권한:
AmazonDynamoDBFullAccess
- 사용자 그룹 이름: rx004-iam_group-iotcore_data_full_access
- 권한:
AWSIoTDataAccess
- 사용자 그룹 이름: rx004-iam_group-iotwireless_send_data_to_wireless_device
- 권한:
AWSIoTWirelessDataAccess
- AWS Console > IAM > 사용자 > 사용자 생성 선택 후 다음 사용자 생성
- 사용자 이름:
rx004-iam_user-all_full_access
그룹에 사용자 추가 선택
- 다음 사용자 그룹 선택:
rx004-iam_group-amplify_full_access
rx004-iam_group-dynamodb_full_access
rx004-iam_group-iotcore_data_full_access
rx004-iam_group-iotwireless_send_data_to_wireless_device
AWS Console > IAM > 엑세스 관리 > 사용자 > rx004-iam_user-all_full_access > 보안 자역 증명 > 액세스 키
- 액세스 키 만들기 선택 후 다음 액세스 키 생성
- 사용 사례: Command Line Interface (CLI)
- 설명 태그 값:
rx004-iam_user-all_full_access-cli_key
액세스 키 csv 파일 다운로드 (이 파일은 Amplify 개발 환경 설치 시 사용)
- 액세스 키 만들기 선택 후 다음 액세스 키 생성
- 사용 사례: 로컬 코드
- 설명 태그 값:
rx004-iam_user-all_full_access-local_code_key
액세스 키 csv 파일 다운로드 (이 파일은 AWS 시험용 프로그램 실행 시 사용)
윈도우즈에 Amplify 개발 환경 설치¶
관리자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령을 실행해 필요한 패키지 설치
choco install nodejs-lts -y
choco install awscli -y
명령 프롬프트(cmd.exe) 창 닫기
AWS 사용자 생성 과정에서 생성한 Command Line Interface (CLI) 용 액세스 키 csv 파일에서 Access key ID, Secret access key 값 확인
일반 사용자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령을 실행해 AWS CLI 구성 실행
aws configure
- 액세스 키 csv 파일에서 확인한 Access key ID, Secret access key 값 입력
Access key ID: …
Secret access key: …
- Default region name 입력
- 입력 예 (아시아 태평양 서울):
ap-northeast-2
- Default output format 입력
- 입력 예:
json
RX004 DynamoDB and Access Policy Setting Guide¶
AWS 콘솔 로그인¶
- 다음 웹사이트에 접속한 후 콘솔에 로그인
- 지역 선택
- 지역 선택 예 (아시아 태평양 서울):
ap-northeast-2
DynamoDB device registry table 생성¶
AWS Console > DynamoDB > 테이블 > 테이블 생성 선택
- 다음 내용을 입력해 테이블을 생성한다.
- 테이블 이름:
rx004-dynamodb_table-device_registry_001
- 파티션 키:
- 이름:
id
형식: String
- 정렬 키:
- 이름:
time
형식: Number
Device registry data 예¶
{
"id": {
"S": "ac1f09fffffffffd"
},
"time": {
"N": "1743690661923"
},
"altitude": {
"N": "70"
},
"device_profile": {
"S": "OTTA_KR920_A_M102"
},
"horizontal_accuracy": {
"N": "0"
},
"latitude": {
"N": "-35.89167"
},
"longitude": {
"N": "128.61139"
},
"service_prifile": {
"S": "UBID_Temperature_Humidity_Sensor"
},
"tag": {
"S": "KNU_GP_1309"
}
}
DynamoDB sensor data table 생성¶
AWS Console > DynamoDB > 테이블 > 테이블 생성 선택
- 다음 내용을 입력
- 테이블 이름:
rx004-dynamodb_table-sensor_data_001
- 파티션 키:
- 이름:
id
형식: String
- 정렬 키:
- 이름:
time
형식: Number
- Global Secondary Index (GSI) 설정
- 인덱스 이름:
id-sensing_time-index
- 파티션 키:
- 이름:
id
형식: String
- 정렬 키:
- 이름:
sensing_time
형식: Number
Projection type: ALL
테이블 생성
Sensor data 예¶
{
"id": {
"S": "ac1f09fffffffffd"
},
"time": {
"N": "1743690661923"
},
"battery": {
"N": "100"
},
"humidity": {
"N": "33.9"
},
"rssi": {
"N": "-47"
},
"sensing_time": {
"N": "1743690657000"
},
"snr": {
"N": "14"
},
"temperature": {
"N": "23.1"
}
}
테이블 ARN 확인¶
- AWS Console > DynamoDB > 테이블 > 대상 테이블 > 개요 에서 대상 테이블의 Amazon 리소스 이름(ARN)을 확인
- 대상 테이블:
rx004-dynamodb_table-device_registry_001
rx004-dynamodb_table-sensor_data_001
- ARN 예:
arn:aws:dynamodb:ap-northeast-2:869400000018:table/rx004-dynamodb_table-device_registry_001
arn:aws:dynamodb:ap-northeast-2:869400000018:table/rx004-dynamodb_table-sensor_data_001
Sensor Data View 용 정책 생성¶
- AWS Console > IAM > 엑세스 관리 > 정책 > 정책 생성 > JSON 탭 선택 후, 앞서 확인한 테이블 ARN을 참조해 정책을 입력
- 입력 예:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:Scan", "dynamodb:Query" ], "Resource": [ "arn:aws:dynamodb:ap-northeast-2:869400000018:table/rx004-dynamodb_table-device_registry_*", "arn:aws:dynamodb:ap-northeast-2:869400000018:table/rx004-dynamodb_table-sensor_data_*", "arn:aws:dynamodb:ap-northeast-2:869400000018:table/rx004-dynamodb_table-sensor_data_*/index/id-sensing_time-index" ] } ] }
마지막에 번호를 붙여 구분한 모든 테이블을 포함시키기 위해 테이블 ARN 마지막에 번호 대신 “*”를 붙인다.
- 다음 선택 후 아래 내용을 입력해 정책을 생성
- 정책 이름:
rx004-iam_policy-sensor_data_view
Sensor Data Put 용 정책 생성¶
- AWS Console > IAM > 엑세스 관리 > 정책 > 정책 생성 > JSON 탭 선택 후, 앞서 확인한 테이블 ARN을 참조해 정책을 입력
- 입력 예:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem" ], "Resource": [ "arn:aws:dynamodb:ap-northeast-2:869400000018:table/rx004-dynamodb_table-sensor_data_*" ] } ] }
마지막에 번호를 붙여 구분한 모든 테이블을 포함시키기 위해 테이블 ARN 마지막에 번호 대신 “*”를 붙인다.
- 다음 선택 후 아래 내용을 입력해 정책을 생성
- 정책 이름:
rx004-iam_policy-sensor_data_put
IoT Core message publish 용 정책 생성¶
- AWS Console > IAM > 엑세스 관리 > 정책 > 정책 생성 > JSON 탭 선택 후 정책을 입력
- 입력 예:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Publish", "Resource": "*" } ] }
- 다음 선택 후 아래 내용을 입력해 정책을 생성
- 정책 이름:
rx004-iam_policy-iotcore_publish
IoT Core LoRaWAN sending data to device 용 정책 생성¶
- AWS Console > IAM > 엑세스 관리 > 정책 > 정책 생성 > JSON 탭 선택 후 정책을 입력
- 입력 예:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotwireless:SendDataToWirelessDevice", "Resource": "*" } ] }
- 다음 선택 후 아래 내용을 입력해 정책을 생성
- 정책 이름:
rx004-iam_policy-rx004-iam_policy-iotwireless_send_data_to_wireless_device
RX004 IoTCore LoRaWAN Gateway Setting Guide¶
AWS 콘솔 로그인¶
- 다음 웹사이트에 접속한 후 콘솔에 로그인
- 지역 선택
- 지역 선택 예 (아시아 태평양 도쿄):
ap-northeast-1
현재는 서울 지역은 LoRaWAN 서비스를 지원하지 않으므로, 지원하는 가장 가까운 지역인 도쿄를 선택한다.
IoT Core LoRaWAN Gateway 생성¶
- AWS Console > AWS IoT > 관리 > LPWAN 디바이스 > 게이트웨이 > 게이트웨이 추가를 선택 후, 다음을 입력해 Gateway를 추가
- 입력 예:
게이트웨이 EUI: ac1f09fffffffffd
주파수 대역(RF 리전): KR920
이름: ubig004002
설명: WisGate Edge Lite 2 with LBT
AWS IoT 사물에 게이트웨어 연결: 체크
다음 선택
- 인증서 생성을 선택한 후 인증서 파일을 다운로드
- 파일 이름 예:
07c7ffff-2a79-42a9-a4ca-dffff28417d1.cert.pem (Client certificate)
07c7ffff-2a79-42a9-a4ca-dffff28417d1.private.key (Client key)
- 엔드 포인드 정보를 기록
- 엔드 포인드 정보 예:
- Configuration and Update Server(CUPS) 엔드포인트: (<CUPS URL>:<CUPS Port>)
https://AO4RFFFFFFD7W.cups.lorawan.ap-northeast-1.amazonaws.com:443
- LoRaWAN Network Server(LNS) 엔드포인트: (<LNS URL>:<LNS Port>)
wss://AO4RFFFFFFD7W.lns.lorawan.ap-northeast-1.amazonaws.com:443
- 서버 신뢰 인증서 다운로드를 선택해 인증서 다운로드
- 파일 이름 예:
cups.trust
lns.trust Trust (CA Certificate)
계정에 대한 IoTWirelessGatewayCertManagerRole IAM 역할을 생성하지 않은 경우 게이트웨이를 계속 추가하기 전에 역할을 생성
IoT Core LoRaWAN 용 단말장치 메시지 처리용 라우팅 규칙 생성¶
AWS Console > AWS IoT > 메시지 라우팅 > 규칙 > 규칙 생성 선택
- 아래 정보 입력 후, 다음 선택
- 규칙 이름:
LoRaWANMessageRouting
- 아래 정보 입력 후, 다음 선택
SQL 버전 : 2016-03-23
- SQL 문:
SELECT * FROM 'iot/topic'
- 아래 정보 입력 후, 다음 선택
- 작업1: Republish to AWS IoT Topic
- 주제:
rx004/sensor
IAM 역할: LoRaWANMessageRoutingRole (이 역할이 없으면 새 역할 생성을 선택해 생성)
- 작업2: Republish to AWS IoT Topic
- 주제:
monitoring/iot/topic
IAM 역할: LoRaWANMessageRoutingRole
생성 선택
IoT Core LoRaWAN 용 서버 메시지 처리용 Lambda 함수 및 라우팅 규칙 생성¶
AWS Console > Lambda > 함수 생성 > 새로 작성 선택
- 다음 정보 입력 후, 함수 생성 선택
- 함수 이름:
rx004_lambda_iotcore_lorawan_message_handler
런타임: Python 3.13
- 함수 입력
app/rx004_lambda_iotcore_lorawan_message_handler 참조
- Deploy > 구성 > 권한 > 역할 이름 클릭 > 권한 > 권한 추가 > 정책 연결 선택 후, 아래 항목 선택
rx004-iam_policy-sensor_data_put
rx004-iam_policy-iotcore_publish
권한 추가 선택
AWS Console > AWS IoT > 메시지 라우팅 > 규칙 > 규칙 생성 선택
- 아래 정보 입력 후, 다음 선택
- 규칙 이름:
rx004_iotcore_message_routing_sensor
- 아래 정보 입력 후, 다음 선택
SQL 버전 : 2016-03-23
- SQL 문:
SELECT * FROM 'rx004/sensor'
- 아래 정보 입력 후, 다음 선택
- 작업1: Lambda
- Lambda 함수:
rx004_lambda_iotcore_lorawan_message_handler
다음, 생성 선택
IoT Core LoRaWAN 용 uplink 메시지 처리용 Lambda 함수 및 라우팅 규칙 생성¶
AWS Console > Lambda > 함수 생성 > 새로 작성 선택
- 다음 정보 입력 후, 함수 생성 선택
- 함수 이름:
rx004_lambda_iotcore_lorawan_uplink_request_time_sync_handler
런타임: Python 3.13
- 함수 입력
app/rx004_lambda_iotcore_lorawan_uplink_request_time_sync_handler 참조
- Deploy > 구성 > 권한 > 역할 이름 클릭 > 권한 > 권한 추가 > 정책 연결 선택 후, 아래 항목 선택
rx004-iam_policy-iotwireless_send_data_to_wireless_device
권한 추가 선택
AWS Console > AWS IoT > 메시지 라우팅 > 규칙 > 규칙 생성 선택
- 아래 정보 입력 후, 다음 선택
- 규칙 이름:
rx004_iotcore_message_routing_uplink_request_time_sync
- 아래 정보 입력 후, 다음 선택
SQL 버전 : 2016-03-23
- SQL 문:
SELECT * FROM '+/uplink/request/time_sync'
- 아래 정보 입력 후, 다음 선택
- 작업1: Lambda
- Lambda 함수:
rx004_lambda_iotcore_lorawan_uplink_request_time_sync_handler
다음, 생성 선택
IoT Core LoRaWAN Gateway 등록¶
- 등록시 필요한 AWS IoT Core 정보 및 파일 예
Work mode: Basics station
Basic Station Server Type: LNS Server
Server URL: wss://AO4RFFFFFFD7W.lns.lorawan.ap-northeast-1.amazonaws.com
Server Port: 443
Autentication Mode: TLS Server & Client Authentication
Trust (CA Certificate): lns.trust
Client certificate: 07c7ffff-2a79-42a9-a4ca-dffff28417d1.cert.pem
Client key: 07c7ffff-2a79-42a9-a4ca-dffff28417d1.private.key
WisGate Edge Lite 2 (RAK7268V2/RAK7268CV2) 등록 방법¶
아래 링크의 웹페이지를 참조해 등록한다.
WisGate Developer D4H/D4H+/D4HP (RAK7248/RAK7248P/RAK7248C) 등록 방법¶
아래 링크의 웹페이지를 참조해 등록한다.
RX004 IoTCore LoRaWAN Device Setting Guide¶
AWS 콘솔 로그인¶
- 다음 웹사이트에 접속한 후 콘솔에 로그인
- 지역 선택
- 지역 선택 예 (아시아 태평양 도쿄):
ap-northeast-1
현재는 서울 지역은 LoRaWAN 서비스를 지원하지 않으므로, 지원하는 가장 가까운 지역인 도쿄를 선택한다.
IoT Core LoRaWAN 디바이스 프로필 추가¶
OTTA_KR920_A_M103 디바이스 프로필 추가¶
- AWS Console > AWS IoT > 관리 > LPWAN 디바이스 > 프로필 > 디바이스 프로필 추가를 선택한 후 다음 정보를 입력해 추가
디바이스 프로필 이름: OTTA_KR920_A_M103
주파수: KR920
MAC 버전: 1.0.3
리전 파라미터 버전: RP002-1.0.1
MaxEIRP: 13
클래래스 B 지원: 지원 안함
클래스 C 지원: 지원 안함
조인 지원: 지원
OTTA_KR920_A_M102 디바이스 프로필 추가¶
- AWS Console > AWS IoT > 관리 > LPWAN 디바이스 > 프로필 > 디바이스 프로필 추가를 선택한 후 다음 정보를 입력해 추가
디바이스 프로필 이름: OTTA_KR920_A_M102
주파수: KR920
MAC 버전: 1.0.2
리전 파라미터 버전: RP002-1.0.1
MaxEIRP: 13
클래래스 B 지원: 지원 안함
클래스 C 지원: 지원 안함
조인 지원: 지원
IoT Core LoRaWAN 서비스 프로필 추가¶
UBID_Temperature_Humidity_Sensor 서비스 프로필 추가¶
이 서비스 프로필은 디바이스 예제로 개발한 온습도 센서 디바이스를 LoRaWAN 네트워크에 연결하기 위해 사용됩니다.
- AWS Console > AWS IoT > 관리 > LPWAN 디바이스 > 프로필 > 서비스 프로필 추가를 선택한 후 다음 정보를 입력해 추가
이름: UBID_Temperature_Humidity_Sensor
게이트웨이 메타 데이터 추가: 체크
퍼블릭 네트워크 구성: 체크 안함
IoT Core LoRaWAN 에 디바이스 추가¶
UBID_Temperature_Humidity_Sensor 디바이스 추가¶
AWS Console > AWS IoT > 관리 > LPWAN 디바이스 > 디바이스 > 무선 디바이스 추가 를 선택한 후 다음 정보를 입력해 추가
- 입력 정보 예:
무선 디바이스 사양: OTAA v1.0.x
Device EUI: AC1F09FFFFFFFFFD
Application key: 5D26FA95E72601C03E410507FFFFFFFF
AppEUI/JoinEUI: AppEUI, CBCBCADAFFFFFFFF
디바이스 이름: ubid004xxx
디바이스 설명: UBID_Temperature_Humidity_Sensor_xxx
무선 디바이스 프로필: OTTA_KR920_A_M102
서비스 프로필: UBID_Temperature_Humidity_Sensor
대상 이름: ProcessLoRa
RX004 Amplify Sensor Data View Deployment Guide¶
AWS 콘솔 로그인¶
- 다음 웹사이트에 접속한 후 콘솔에 로그인
- 지역 선택
- 지역 선택 예 (아시아 태평양 서울):
ap-northeast-2
Amplify Sensor Data View App 생성¶
AWS Console > AWS Amplify > 새 앱 생성을 선택
앱 배포 > Github 선택
- github repository 선택
- branch 선택
예: ubinos-main
내 앱은 모노 리포지토리임 선택
- 앱 루트 디렉토리 선택
예: app/rx004_amplify_sensor_data_view
다음, 저장 및 배포
배포가 완료될 때까지 기다림
Amplify app backend 에 dynamodb 데이터 스캔 권한 추가¶
- AWS Console > AWS Amplify > 모든 앱 > 대상 앱 선택
예: rx004
- 브랜치 > 대상 브랜치 선택
예: ubinos-main
함수 > 함수 이름 선택
Lambda 에서 보기 > 구성 > 권한 선택
- 역할 이름 클릭 > 권한 > 권한 추가 > 정책 연결 선택 후 아래 정책 이름 입력
정책 이름: rx004-iam_policy-sensor_data_view
권한 추가 선택
Amplify app 열기¶
- AWS Console > AWS Amplify > 모든 앱 > 대상 앱 선택
예: rx004
- 개요 > 도메인을 선택해 앱 열기
앱 스크린샷

그림 88 rx004_amplify_sensor_data_view screenshot¶