AWS
AWS IoT FleetWise 캠페인을 여러 차량에 배포하기
횲
2024. 1. 24. 10:32
728x90
Fleet이란?
Fleet 개념
- Fleet은 여러 대의 차량을 동시에 관리할 수 있습니다.
- 하나의 차량과 하나의 Fleet이 연결될 수 있습니다.
- 하나의 차량이 여러 개의 Fleet에 속할 수 있습니다.
Fleet 관련 CLI
Fleet의 목록 출력하기
aws iotfleetwise list-fleets
Fleet 생성하기
aws iotfleetwise create-fleet \
--fleet-id {fleet의 id} \
--description {설명} \
--signal-catalog-arn {신호 카탈로그의 ARN}
Fleet과 차량을 연결하기
aws iotfleetwise associate-vehicle-fleet --fleet-id {fleet의 ID} --vehicle-name {차량 이름}
Fleet에 어떤 차량이 연결되어 있는지 확인하기
aws iotfleetwise list-fleets-for-vehicle --vehicle-name {차량 이름}
aws iotfleetwise list-vehicles-in-fleet --fleet-id {fleet의 ID}
Fleet과 차량 연결 해제하기
aws iotfleetwise disassociate-vehicle-fleet --fleet-id {Fleet의 ID} --vehicle-name {차량 이름}
Timestream DB
- Timestream DB를 CLI로 생성하여 캠페인 배포 시 데이터가 수집되어 Timestream으로 저장될 수 있도록 한다.
Timestream DB 생성
aws timestream-write create-database --database-name {Timestream DB 이름}
Timestream DB 테이블 생성
aws timestream-write create-table \
--database-name {Timestream DB 이름} \
--table-name {생성할 Timestream DB 테이블 이름} \
--retention-properties "{\"MemoryStoreRetentionPeriodInHours\":2, \
\"MagneticStoreRetentionPeriodInDays\":2}"
캠페인
캠페인 관련 CLI
캠페인 생성
- 차량이 연결된 Fleet에 캠페인을 배포합니다.
aws iotfleetwise create-campaign --name {생성할 캠페인 이름} --signal-catalog-arn {신호 카탈로그 ARN} --target-arn {캠페인을 배포할 Fleet의 ARN} --cli-input-json {데이터 수집 규칙이 있는 json 캠페인 파일} --data-destination-configs "[{\"s3Config\":{\"bucketArn\":\"{S3 버킷 ARN}\",\"prefix\":\"test-campaign-s3-collected-data\",\"dataFormat\":\"JSON\",\"storageCompressionFormat\":\"NONE\"}}]"
캠페인 승인
- 각 차량에 접속해서 캠페인 배포를 승인합니다.
aws iotfleetwise update-campaign --name {캠페인 이름} --action APPROVE
캠페인 관련 콘솔 작업
1. IoT FleetWise > 캠페인 > 캠페인 생성
2. 1단계 캠페인 구성
- 캠페인 이름 : test-campaign
- 구성 옵션 선택 : 데이터 수집 체계 업로드
- json 파일을 업로드 합니다.
{
"compression": "SNAPPY",
"diagnosticsMode": "OFF",
"spoolingMode": "TO_DISK",
"collectionScheme": {
"conditionBasedCollectionScheme": {
"conditionLanguageVersion": 1,
"expression": "$variable.`Vehicle.ABS.DemoBrakePedalPressure` > 7000",
"minimumTriggerIntervalMs": 1000,
"triggerMode": "ALWAYS"
}
},
"postTriggerCollectionDuration": 1000,
"signalsToCollect": [
{
"name": "Vehicle.ECM.DemoEngineTorque"
},
{
"name": "Vehicle.ABS.DemoBrakePedalPressure"
}
]
}
- json 파일을 업로드하면 데이터 수집 체계 세부 정보에 자동으로 내용이 채워집니다.
- 여기에서 캠페인 기간을 추가로 설정해줍니다.
3. 2단계 스토리지 대상 정의
- 다음과 같이 설정해줍니다.
- Timestream에 대한 서비스 액세스의 IAM 역할은 다음 신뢰관계와 정책을 가지고 있는 역할을 선택합니다.
- 신뢰관계
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "iotfleetwise.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "timestreamIngestion",
"Effect": "Allow",
"Action": [
"timestream:WriteRecords",
"timestream:Select",
"timestream:DescribeTable"
],
"Resource": "arn:aws:timestream:eu-central-1:{계정번호}:database/{Timestream DB 이름}/*"
},
{
"Sid": "timestreamDescribeEndpoint",
"Effect": "Allow",
"Action": [
"timestream:DescribeEndpoints"
],
"Resource": "*"
}
]
}
4. 3단계 차량 추가 단계에서는 목록에 있는 차량을 선택해줍니다.
5. 캠페인의 상태가 RUNNING이고 캠페인 배포 상태가 HEALTHY이면 데이터가 정상적으로 수집되는 것을 확인할 수 있습니다.
Fleet을 이용해 CLI로 여러 차량으로부터 데이터를 수집하는 방법과 콘솔을 이용해 수집하는 방법에 대해 알아보았습니다.
728x90