제퍼넷 로고

Amazon Location Service 및 AWS 분석 서비스를 사용하여 과거 위치 데이터로부터 통찰력 확보 | 아마존 웹 서비스

시간

전 세계의 많은 조직은 최종 고객에게 서비스를 제공하기 위해 차량과 같은 물리적 자산의 사용에 의존합니다. 이러한 자산을 실시간으로 추적하고 결과를 저장함으로써 자산 소유자는 자산이 어떻게 사용되어 지속적으로 비즈니스 개선을 제공하고 향후 변화를 계획하는지에 대한 귀중한 통찰력을 얻을 수 있습니다. 예를 들어, 다수의 차량을 운영하는 배송 회사는 자사의 통제 범위를 벗어나는 현지 정책 변경(예: 초저배출 구역(ULEZ). 과거 차량 위치 데이터를 다른 소스의 정보와 결합함으로써 회사는 더 나은 의사 결정을 위한 경험적 접근 방식을 고안할 수 있습니다. 예를 들어, 회사의 조달 팀은 이 정보를 사용하여 정책 변경이 적용되기 전에 교체 우선 순위를 정할 차량을 결정할 수 있습니다.

개발자는 다음에서 지원을 사용할 수 있습니다. 아마존 위치 서비스 for 기기 위치 업데이트 게시아마존 이벤트 브리지 추적된 자산의 위치를 ​​저장하는 거의 실시간 데이터 파이프라인을 구축합니다. 아마존 단순 스토리지 서비스 (아마존 S3). 또한 다음을 사용할 수 있습니다. AWS 람다 다음과 같은 다른 소스의 데이터로 수신 위치 데이터를 강화합니다. 아마존 DynamoDB 차량 유지 관리 세부정보가 포함된 테이블입니다. 그런 다음 데이터 분석가는 다음을 사용할 수 있습니다. 지리공간 쿼리 기능 of 아마존 아테나 확장된 ULEZ의 제안된 경계 내에서 차량이 운행된 일수와 같은 통찰력을 얻기 위해. ULEZ 배기가스 배출 기준을 충족하지 못하는 차량은 해당 구역 내에서 운행하려면 일일 요금이 부과되기 때문에 차량 연식, 현재 주행거리, 현재 배기가스 배출 기준 등의 정비 데이터와 함께 위치 데이터를 활용해 배출량을 추정할 수 있습니다. 회사는 일일 수수료를 지출해야 할 것입니다.

이 게시물에서는 Amazon Location, EventBridge, Lambda를 사용하는 방법을 보여줍니다. 아마존 데이터 파이어호스, Amazon S3를 사용하여 위치 인식 데이터 파이프라인을 구축하고 이 데이터를 사용하여 의미 있는 통찰력을 얻습니다. AWS 접착제 그리고 아테나.

솔루션 개요

위치 기반 자산 관리를 위한 완전한 서버리스 솔루션입니다. 솔루션은 다음 인터페이스로 구성됩니다.

  • IoT 또는 모바일 애플리케이션 – 모바일 애플리케이션 또는 사물 인터넷(IoT) 장치를 사용하면 회사 차량을 사용하는 동안 추적할 수 있으며 현재 위치를 AWS의 데이터 수집 계층으로 안전하게 전송할 수 있습니다. 수집 접근 방식은 이 게시물의 범위에 포함되지 않습니다. 대신 솔루션의 Lambda 기능은 샘플 차량 여행을 시뮬레이션하고 Amazon 위치 추적기 객체를 무작위 위치로 직접 업데이트합니다.
  • 데이터 분석 – 비즈니스 분석가는 차량에서 수집된 위치 데이터를 포함하여 여러 데이터 소스에서 운영 통찰력을 수집합니다. 데이터 분석가는 "특정 차량이 역사적으로 제안된 구역 내에서 얼마나 오랜 시간을 보냈으며, 지난 12개월 동안 정책이 시행되었다면 수수료 비용은 얼마나 됩니까?"와 같은 질문에 대한 답을 찾고 있습니다.

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.
아키텍처 다이어그램

워크플로는 다음과 같은 주요 단계로 구성됩니다.

  1. Amazon Location의 추적 기능은 차량을 추적하는 데 사용됩니다. EventBridge 통합을 사용하면 필터링된 위치 업데이트가 EventBridge 이벤트 버스에 게시됩니다. 이 솔루션은 거리 기반 비용과 지터를 줄이기 위해 필터링합니다. 거리 기반 필터링은 장치가 30미터(98.4피트) 미만으로 이동한 위치 업데이트를 무시합니다.
  2. Amazon 위치 장치 위치 이벤트가 EventBridge에 도착합니다. default 버스 source: ["aws.geo"]detail-type: ["Location Device Position Event"]. 이러한 이벤트를 두 개의 다운스트림 대상인 Lambda 함수와 Firehose 전송 스트림으로 전달하기 위해 하나의 규칙이 생성됩니다.
  3. 이 게시물에서는 데이터를 S3 버킷에 커밋하는 다양한 접근 방식을 보여주기 위해 각 대상을 기반으로 하는 두 가지 패턴을 설명합니다.
    1. 람다 함수 – 첫 번째 접근 방식은 Lambda 함수를 사용하여 데이터 파이프라인의 코드를 사용하여 수신 위치 데이터를 직접 변환하는 방법을 보여줍니다. 결과를 S3 버킷에 저장하기 전에 별도의 데이터 저장소(예: DynamoDB 테이블 또는 고객 관계 관리 시스템)에서 추가 차량 정보를 가져와 데이터를 보강하도록 Lambda 함수를 수정할 수 있습니다. 이 모델에서는 각 수신 이벤트에 대해 Lambda 함수가 호출됩니다.
    2. Firehose 전달 스트림 – 두 번째 접근 방식은 Firehose 전송 스트림을 사용하여 수신 위치 업데이트를 버퍼링하고 일괄 처리한 후 수정 없이 S3 버킷에 저장합니다. 이 방법은 GZIP 압축을 사용하여 스토리지 소비 및 쿼리 성능을 최적화합니다. 다음을 사용할 수도 있습니다. 데이터 변환 Data Firehose의 기능은 Lambda 함수를 호출하여 일괄적으로 데이터 변환을 수행하는 것입니다.
  4. AWS Glue는 두 S3 버킷 경로를 모두 크롤링하고, 추론된 스키마를 기반으로 AWS Glue 데이터베이스 테이블을 채우고, AWS Glue 데이터 카탈로그를 통해 다른 분석 애플리케이션에서 데이터를 사용할 수 있도록 합니다.
  5. Athena는 S3 버킷에 저장된 위치 데이터에 대한 지리공간 쿼리를 실행하는 데 사용됩니다. 데이터 카탈로그는 Athena를 사용하는 분석 애플리케이션이 Amazon S3에 저장된 위치 데이터를 찾고, 읽고, 처리할 수 있도록 하는 메타데이터를 제공합니다.
  6. 이 솔루션에는 가상 여행에서 시뮬레이션된 위치 데이터로 Amazon 위치 추적기를 지속적으로 업데이트하는 Lambda 기능이 포함되어 있습니다. Lambda 함수는 예약된 EventBridge 규칙을 사용하여 정기적으로 트리거됩니다.

다음을 사용하여 이 솔루션을 직접 테스트할 수 있습니다. AWS 샘플 GitHub 리포지토리. 저장소에는 AWS 서버리스 애플리케이션 모델 이 솔루션을 시험해 보려면 (AWS SAM) 템플릿과 Lambda 코드가 필요합니다. 다음의 지침을 참조하세요. README 이 솔루션을 프로비저닝하고 해제하는 방법에 대한 단계는 파일을 참조하세요.

이 게시물의 일부 스크린샷에 있는 시각적 레이아웃은 귀하의 스크린샷과 다르게 보일 수 있습니다. AWS 관리 콘솔.

데이터 생성

이 섹션에서는 여정 데이터를 수동 또는 자동으로 생성하는 단계에 대해 설명합니다.

여정 데이터 수동 생성

다음을 사용하여 장치 위치를 수동으로 업데이트할 수 있습니다. AWS 명령 줄 인터페이스 (AWS CLI) 명령 aws location batch-update-device-position. 교체 tracker-name, device-id, PositionSampleTime 값을 자신의 것으로 설정하고 연속 업데이트가 30미터 이상 떨어져 있는지 확인하여 이벤트를 설정하세요. default EventBridge 이벤트 버스:

aws location batch-update-device-position --tracker-name <tracker-name> --updates "[{"DeviceId": "<device-id>", "Position": [<longitude>, <latitude>], "SampleTime": "<YYYY-MM-DDThh:mm:ssZ>"}]"

시뮬레이터를 사용하여 자동으로 여행 데이터 생성

제공된 AWS 클라우드 포메이션 템플릿은 EventBridge 예약 규칙과 차량의 추적기 업데이트를 시뮬레이션하는 관련 Lambda 함수를 배포합니다. 이 규칙은 기본적으로 활성화되어 있으며 다음에 의해 지정된 빈도로 실행됩니다. SimulationIntervalMinutes CloudFormation 매개변수. 데이터 생성 Lambda 함수는 차량의 기본 위치에서 오프셋된 무작위 위치로 Amazon 위치 추적기를 업데이트합니다.

차량 이름과 기본 위치는 차량.json 파일. 차량의 출발 위치는 매일 재설정되며, 현실적인 여행 시뮬레이션을 제공하기 위해 특정 날짜에 ULEZ 안팎으로 표류할 수 있는 기능을 제공하도록 기본 위치가 선택되었습니다.

여러분의 시간과 재능으로 규칙을 비활성화합니다 EventBridge 콘솔에서 예약된 규칙 세부 정보로 이동하여 일시적으로 또는 매개변수를 변경하세요. State: ENABLEDState: DISABLED 예약된 규칙 리소스의 경우 GenerateDevicePositionsScheduleRule FBI 증오 범죄 보고서 template.yml 파일. 이 변경 사항을 적용하려면 AWS SAM 템플릿을 다시 구축하고 다시 배포하십시오.

위치 데이터 파이프라인 접근 방식

이 섹션에 설명된 구성은 제공된 AWS SAM 템플릿에 의해 자동으로 배포됩니다. 이 섹션의 정보는 솔루션의 관련 부분을 설명하기 위해 제공됩니다.

Amazon Location 장치 위치 이벤트

Amazon Location은 다음 형식으로 장치 위치 업데이트 이벤트를 EventBridge에 보냅니다.

{
    "version":"0",
    "id":"<event-id>",
    "detail-type":"Location Device Position Event",
    "source":"aws.geo",
    "account":"<account-number>",
    "time":"<YYYY-MM-DDThh:mm:ssZ>",
    "region":"<region>",
    "resources":[
        "arn:aws:geo:<region>:<account-number>:tracker/<tracker-name>"
    ],
    "detail":{
        "EventType":"UPDATE",
        "TrackerName":"<tracker-name>",
        "DeviceId":"<device-id>",
        "SampleTime":"<YYYY-MM-DDThh:mm:ssZ>",
        "ReceivedTime":"<YYYY-MM-DDThh:mm:ss.sssZ>",
        "Position":[
            <longitude>, 
            <latitude>
	]
    }
}

선택적으로 입력 변환 장치 위치 이벤트 데이터가 목표에 도달하기 전에 형식과 내용을 수정합니다.

Lambda를 사용한 데이터 강화

이 패턴의 데이터 강화는 Lambda 함수 호출을 통해 촉진됩니다. 이 예에서는 이 함수를 호출합니다. ProcessDevicePosition, Python 런타임을 사용합니다. EventBridge 대상 정의에 사용자 지정 변환이 적용되어 다음 형식으로 이벤트 데이터를 수신합니다.

{
    "EventType":<EventType>,
    "TrackerName":<TrackerName>,
    "DeviceId":<DeviceId>,
    "SampleTime":<SampleTime>,
    "ReceivedTime":<ReceivedTime>,
    "Position":[<Longitude>,<Latitude>]
}

리팩토링과 같은 추가 변환을 적용할 수 있습니다. LatitudeLongitude 이벤트를 처리하는 다운스트림 비즈니스 로직에 필요한 경우 데이터를 별도의 키-값 쌍으로 분리합니다.

다음 코드는 Python 애플리케이션 논리를 보여줍니다. ProcessDevicePosition 람다 함수. 간결성을 위해 이 코드 조각에서는 오류 처리를 건너뛰었습니다. 전체 코드는 다음에서 확인할 수 있습니다. GitHub 레포.

import json
import os
import uuid
import boto3

# Import environment variables from Lambda function.
bucket_name = os.environ["S3_BUCKET_NAME"]
bucket_prefix = os.environ["S3_BUCKET_LAMBDA_PREFIX"]

s3 = boto3.client("s3")

def lambda_handler(event, context):
    key = "%s/%s/%s-%s.json" % (bucket_prefix,
                                event["DeviceId"],
                                event["SampleTime"],
                                str(uuid.uuid4())
    body = json.dumps(event, separators=(",", ":"))
    body_encoded = body.encode("utf-8")
    s3.put_object(Bucket=bucket_name, Key=key, Body=body_encoded)
    return {
        "statusCode": 200,
        "body": "success"
    }

앞의 코드는 EventBridge에서 수신한 각 장치 위치 이벤트에 대해 S3 객체를 생성합니다. 코드는 DeviceId 버킷에 객체를 쓰기 위한 접두사로 사용됩니다.

이전 Lambda 함수 코드에 추가 논리를 추가하여 다른 소스를 사용하여 이벤트 데이터를 강화할 수 있습니다. 예제는 GitHub 레포 DynamoDB 차량 유지 관리 테이블의 데이터로 이벤트를 강화하는 방법을 보여줍니다.

전제 조건 외에도 AWS 자격 증명 및 액세스 관리 (IAM) 역할에서 제공하는 권한 AWSBasicLambdaExecutionRoleWalk Through California 프로그램, ProcessDevicePosition 기능에는 S3를 수행하기 위한 권한이 필요합니다. put_object 데이터 강화 논리에 필요한 작업 및 기타 작업. 솔루션에 필요한 IAM 권한은 다음에 설명되어 있습니다. template.yml 파일.

{
    "Version":"2012-10-17",
    "Statement":[
        {
            "Action":[
                "s3:ListBucket"
            ],
            "Resource":[
                "arn:aws:s3:::<S3_BUCKET_NAME>"
            ],
            "Effect":"Allow"
        },
        {
            "Action":[
                "s3:PutObject"
            ],
            "Resource":[
                "arn:aws:s3:::<S3_BUCKET_NAME>/<S3_BUCKET_LAMBDA_PREFIX>/*"
            ],
            "Effect":"Allow"
        }
    ]
}

Amazon Data Firehose를 사용하는 데이터 파이프라인

Firehose 전송 스트림을 생성하려면 다음 단계를 완료하세요.

  1. Amazon Data Firehose 콘솔에서 다음을 선택합니다. Firehose 스트림 탐색 창에서
  2. 왼쪽 메뉴에서 Firehose 스트림 생성.
  3. 럭셔리 출처, 다음과 같이 선택 직접 넣기.
  4. 럭셔리 목적지선택한다. 아마존 S3.
  5. 럭셔리 Firehose 스트림 이름, 이름을 입력하십시오 (이 게시물의 경우 ProcessDevicePositionFirehose).
    Firehose 스트림 생성
  6. 분할 전략과 함께 위치 데이터가 저장되는 S3 버킷에 대한 세부 정보로 대상 설정을 구성합니다.
    1. 버킷 및 객체 접두사를 결정합니다.
    2. DeviceId 버킷에 객체를 쓰기 위한 추가 접두사로 사용됩니다.
  7. 사용 동적 파티셔닝새 줄 구분 기호 파티셔닝이 자동으로 이루어지도록 하기 위해 DeviceId, Amazon S3에 전달되는 객체의 레코드 사이에 새로운 줄 구분 기호가 추가됩니다.

이는 AWS Glue가 나중에 데이터를 크롤링하고 Athena가 개별 레코드를 인식하는 데 필요합니다.
Firehose 스트림의 대상 설정

EventBridge 규칙 생성 및 대상 연결

EventBridge 규칙 ProcessDevicePosition 두 가지 목표를 정의합니다. ProcessDevicePosition 람다 함수와 ProcessDevicePositionFirehose 배달 스트림. 규칙을 생성하고 대상을 연결하려면 다음 단계를 완료하십시오.

  1. EventBridge 콘솔에서 새 규칙을 만듭니다.
  2. 럭셔리 성함, 이름을 입력하십시오 (이 게시물의 경우 ProcessDevicePosition).
  3. 럭셔리 이벤트 버스¸ 선택 디폴트 값.
  4. 럭셔리 규칙 유형고르다 이벤트 패턴이 있는 규칙.
    EventBridge 규칙 세부 정보
  5. 럭셔리 이벤트 소스, 고르다 AWS 이벤트 또는 EventBridge 파트너 이벤트.
    EventBridge 이벤트 소스
  6. 럭셔리 방법, 고르다 패턴 형태 사용.
  7. . 이벤트 패턴 섹션, 지정 AWS 서비스 소스로, 아마존 위치 서비스 특정 서비스로 위치 장치 위치 이벤트 이벤트 유형으로.
    EventBridge 생성 방법
  8. 럭셔리 대상 1, 첨부 ProcessDevicePosition Lambda 함수를 대상으로 합니다.
    EventBridge 대상 1
  9. 우리는 사용 입력 변압기 S3 버킷에 커밋된 이벤트를 사용자 정의합니다.
    EventBridge 대상 1 변환기
  10. 구성 입력 경로 맵입력 템플릿 페이로드를 원하는 형식으로 구성합니다.
    1. 다음 코드는 입력 경로 맵입니다.
      {
          EventType: $.detail.EventType
          TrackerName: $.detail.TrackerName
          DeviceId: $.detail.DeviceId
          SampleTime: $.detail.SampleTime
          ReceivedTime: $.detail.ReceivedTime
          Longitude: $.detail.Position[0]
          Latitude: $.detail.Position[1]
      }

    2. 다음 코드는 입력 템플릿입니다.
      {
          "EventType":<EventType>,
          "TrackerName":<TrackerName>,
          "DeviceId":<DeviceId>,
          "SampleTime":<SampleTime>,
          "ReceivedTime":<ReceivedTime>,
          "Position":[<Longitude>, <Latitude>]
      }

  11. 럭셔리 대상 2을 선택하십시오 ProcessDevicePositionFirehose 전송 스트림을 대상으로 합니다.
    EventBridge 대상 2

이 대상에는 Firehose 전송 스트림에 하나 이상의 레코드를 쓸 수 있는 IAM 역할이 필요합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecords"
            ],
            "Resource": [
                "arn:aws:firehose:<region>:<account-id>:deliverystream/<delivery-stream-name>"
            ],
            "Effect": "Allow"
        }
    ]
}

AWS Glue를 사용하여 데이터를 크롤링하고 분류합니다.

충분한 데이터가 생성된 후 다음 단계를 완료하십시오.

  1. AWS Glue 콘솔에서 겉옷 탐색 창에서
  2. 생성된 크롤러를 선택하고, location-analytics-glue-crawler-lambdalocation-analytics-glue-crawler-firehose.
  3. 왼쪽 메뉴에서 달리기.

크롤러는 자동으로 데이터를 JSON 형식으로 분류하고, 레코드를 테이블과 파티션으로 그룹화하고, 관련 메타데이터를 AWS Glue 데이터 카탈로그에 커밋합니다.
겉옷

  1. 마지막 실행 두 크롤러의 상태는 다음과 같이 표시됩니다. 성공, 두 테이블(lambdafirehose)이(가) 생성되었습니다. 테이블 페이지.

솔루션은 수신 위치 데이터를 기반으로 분할합니다. deviceid 필드. 따라서 새로운 장치나 스키마 변경이 없는 한 크롤러를 다시 실행할 필요가 없습니다. 그러나 새 장치가 추가되거나 파티셔닝에 다른 필드가 사용되는 경우 크롤러를 다시 실행해야 합니다.
테이블

이제 Athena를 사용하여 테이블을 쿼리할 준비가 되었습니다.

Athena를 사용하여 데이터 쿼리

Athena는 호스팅되는 비정형, 반정형 및 정형 데이터를 분석하기 위해 구축된 서버리스 대화형 분석 서비스입니다. Athena 콘솔을 처음 사용하는 경우, 지시를 따르다 Amazon S3에서 쿼리 결과 위치를 설정합니다. Athena를 사용하여 데이터를 쿼리하려면 다음 단계를 완료하세요.

  1. Athena 콘솔에서 쿼리 편집기를 엽니다.
  2. 럭셔리 데이터 소스선택한다. AwsDataCatalog.
  3. 럭셔리 데이터베이스선택한다. location-analytics-glue-database.
  4. 옵션 메뉴(세로 점 3개)에서 테이블 미리보기 두 테이블의 내용을 쿼리합니다.
    테이블 미리보기

쿼리는 현재 테이블에 저장된 10개의 샘플 위치 레코드를 표시합니다. 다음 스크린샷은 미리보기의 예입니다. firehose 테이블. 그만큼 firehose 테이블은 Amazon 위치 추적기의 수정되지 않은 원시 데이터를 저장합니다.
쿼리 결과
이제 지리공간 쿼리를 실험해 볼 수 있습니다. 2021년 런던 ULEZ 확장을 위한 GeoJSON 파일 리포지토리의 일부이며 이미 두 Athena 테이블과 호환되는 쿼리로 변환되었습니다.

  1. 에서 내용을 복사하여 붙여넣으세요. 1-firehose-athena-ulez-2021-create-view.sql 에서 찾은 파일 examples/firehose 폴더를 쿼리 편집기에 넣습니다.

이 쿼리는 ST_Within 기록된 위치가 다각형으로 정의된 ULEZ 구역 내부인지 외부인지 확인하는 지리공간 기능입니다. 라는 새로운 뷰 ulezvehicleanalysis_firehose 새 열로 생성됩니다. insidezone, 기록된 위치가 영역 내에 존재하는지 여부를 캡처합니다.

간단한 파이썬 유틸리티 다운로드한 GeoJSON 파일에서 발견된 폴리곤 피처를 폴리곤 피처로 변환하는 기능이 제공됩니다. ST_Polygon 문자열을 기반으로 잘 알려진 텍스트 형식 Athena 쿼리에서 직접 사용할 수 있습니다.

  1. 왼쪽 메뉴에서 미리보기 보기 를 시청하여 이에 대해 더 많은 정보를 얻을 수 있습니다. ulezvehicleanalysis_firehose 내용을 탐색하려면 보기를 클릭하세요.
    미리보기보기

이제 이 뷰에 대해 쿼리를 실행하여 포괄적인 통찰력을 얻을 수 있습니다.

  1. 에서 내용을 복사하여 붙여넣으세요. 2-firehose-athena-ulez-2021-query-days-in-zone.sql 에서 찾은 파일 examples/firehose 폴더를 쿼리 편집기에 넣습니다.

이 쿼리는 각 차량이 ULEZ에 진입한 총 일수와 예상되는 총 요금이 얼마인지를 설정합니다. 쿼리는 다음을 사용하여 매개변수화되었습니다. ? 자리표시자 문자. 매개변수화된 쿼리 다른 매개변수 값을 사용하여 동일한 쿼리를 다시 실행할 수 있습니다.

  1. 일일 수수료 금액을 입력하세요. 매개 변수 1를 클릭한 다음 쿼리를 실행하세요.
    쿼리 편집기

결과에는 각 차량, 제안된 ULEZ에서 보낸 총 일수, 입력한 일일 요금을 기준으로 한 총 요금이 표시됩니다.
쿼리 결과
다음을 사용하여 이 연습을 반복할 수 있습니다. lambda 테이블. 데이터 lambda 테이블은 Lambda 함수에 의해 처리될 때 차량 유지 관리 DynamoDB 테이블에 있는 추가 차량 세부 정보로 보강됩니다. 솔루션은 다음 필드를 지원합니다.

  • MeetsEmissionStandards (부울)
  • Mileage (숫자)
  • PurchaseDate (문자열, in YYYY-MM-DD 체재)

새 데이터가 도착하면 이를 보강할 수도 있습니다.

  1. DynamoDB 콘솔의 아래에서 차량 유지 관리 테이블을 찾습니다. 테이블. 테이블 이름이 출력으로 제공됩니다. VehicleMaintenanceDynamoTable 배포된 CloudFormation 스택에 있습니다.
  2. 왼쪽 메뉴에서 테이블 항목 탐색 테이블의 내용을 보려면
  3. 왼쪽 메뉴에서 아이템 생성 차량에 대한 새로운 기록을 작성합니다.
    아이템 생성
  4. 엔터 버튼 DeviceId (예 : vehicle1 문자열로), PurchaseDate (예 : 2005-10-01 문자열로), Mileage (예 : 10000 숫자로) 및 MeetsEmissionStandards (다음과 같은 값으로 False 부울로).
  5. 왼쪽 메뉴에서 아이템 생성 기록을 만들려고.
    아이템 생성
  6. 새로 생성된 기록을 다른 차량(예: vehicle2 or vehicle3), 매번 속성 값을 조금씩 수정합니다.
  7. 다시 실행 location-analytics-glue-crawler-lambda 새 데이터가 생성된 후 AWS Glue 크롤러는 새 필드가 포함된 스키마 업데이트가 등록되었는지 확인합니다.
  8. 에서 내용을 복사하여 붙여넣으세요. 1-lambda-athena-ulez-2021-create-view.sql 에서 찾은 파일 examples/lambda 폴더를 쿼리 편집기에 넣습니다.
  9. 미리보기 ulezvehicleanalysis_lambda 보기를 통해 새 열이 생성되었는지 확인하세요.

등의 오류가 있는 경우 Column 'mileage' cannot be resolved 메시지가 표시되거나, 데이터 강화가 발생하지 않거나, AWS Glue 크롤러가 아직 스키마 업데이트를 감지하지 못했습니다.

경우 미리보기 테이블 옵션 DynamoDB 테이블에 레코드를 생성하기 전의 결과만 반환하는 경우 다음을 사용하여 쿼리 결과를 내림차순으로 반환합니다. sampletime (예 : order by sampletime desc limit 100;).
쿼리 결과
이제 현재 배기가스 배출 기준을 충족하지 않는 차량에 초점을 맞추고 연간 주행거리(최신 주행거리/차량 연식을 사용하여 계산)를 기준으로 내림차순으로 차량을 주문합니다.

  1. 에서 내용을 복사하여 붙여넣으세요. 2-lambda-athena-ulez-2021-query-days-in-zone.sql 에서 찾은 파일 examples/lambda 폴더를 쿼리 편집기에 넣습니다.
    쿼리 결과

이 예에서는 당사 차량 중 5대가 배출가스 기준을 충족하지 못하는 것으로 보고되었음을 알 수 있습니다. 또한, 연간 높은 주행거리를 ​​축적한 차량과 제안된 ULEZ에서 보낸 일수도 확인할 수 있습니다. 이제 차량 운영자는 이러한 차량의 교체 우선순위를 결정할 수 있습니다. 위치 데이터는 수집 당시의 최신 차량 유지 관리 데이터로 보강되므로 정의된 기간 동안 실행되도록 이러한 쿼리를 더욱 발전시킬 수 있습니다. 예를 들어 지난 1년간의 마일리지 변경 사항을 고려할 수 있습니다.

데이터 강화의 동적 특성으로 인해 쿼리 결과와 함께 Amazon S3에 커밋되는 모든 새 데이터는 DynamoDB 차량 유지 관리 테이블에서 레코드가 업데이트될 때 변경됩니다.

정리

다음의 지침을 참조하세요. README 이 솔루션에 대해 프로비저닝된 리소스를 정리하기 위한 파일입니다.

결론

이 게시물에서는 Amazon Location, EventBridge, Lambda, Amazon Data Firehose 및 Amazon S3를 사용하여 위치 인식 데이터 파이프라인을 구축하고, 수집된 장치 위치 데이터를 사용하여 AWS Glue 및 Athena를 통해 분석 통찰력을 얻는 방법을 보여주었습니다. 이러한 자산을 실시간으로 추적하고 결과를 저장함으로써 회사는 차량이 얼마나 효과적으로 활용되고 있는지에 대한 귀중한 통찰력을 얻고 향후 변화에 더 잘 대응할 수 있습니다. 이제 자체 장치 추적 데이터 및 분석 요구 사항을 사용하여 이 샘플 코드를 확장해 볼 수 있습니다.


저자에 관하여

앨런 피티 AWS의 수석 파트너 솔루션 아키텍트입니다. Alan은 GSI(글로벌 시스템 통합업체) 및 GISV(글로벌 독립 소프트웨어 공급업체)가 AWS 서비스를 사용하여 복잡한 고객 문제를 해결하도록 돕습니다. AWS에 합류하기 전에 Alan은 시스템 통합업체에서 아키텍트로 일하면서 비즈니스 요구 사항을 기술 솔루션으로 변환했습니다. 업무 외적으로 Alan은 IoT 매니아이자 영국 시골의 진흙탕 길을 달리는 것을 좋아하는 열정적인 달리기 선수입니다.

파라그 스리바스타바 AWS의 솔루션스 아키텍트로서 기업 고객의 성공적인 클라우드 채택 및 마이그레이션을 지원합니다. 그는 전문적인 경력을 쌓는 동안 복잡한 디지털 혁신 프로젝트에 광범위하게 참여해 왔습니다. 그는 또한 주소의 지리공간적 측면을 중심으로 혁신적인 솔루션을 구축하는 데 열정을 쏟고 있습니다.

spot_img

최신 인텔리전스

spot_img