추적 시작 - Amazon Location Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

추적 시작

이 섹션에서는 디바이스 위치를 포착하는 추적 애플리케이션을 빌드하는 방법을 안내합니다.

트래커 생성

디바이스의 위치 업데이트를 저장하고 처리하는 트래커 리소스를 생성합니다. Amazon Location Service 콘솔, AWS CLI 또는 Amazon Location API를 사용할 수 있습니다.

트래커 리소스에 저장된 각 위치 업데이트에는 위치 정확도 측정값과 저장하려는 위치 또는 디바이스에 대한 메타데이터 필드를 최대 3개까지 포함할 수 있습니다. 메타데이터는 키-값 쌍으로 저장되며 속도, 방향, 타이어 공기압 또는 엔진 온도와 같은 정보를 저장할 수 있습니다.

트래커는 위치 업데이트가를 수신하면 이를 필터링합니다. 이렇게 하면 디바이스 경로의 시각적 노이즈(지터라고 함)가 줄어들고 잘못된 지오펜스 출입 이벤트 수가 줄어듭니다. 또한 지오펜스 평가 시작 횟수를 줄여 비용을 관리하는 데 도움이 됩니다.

트래커는 비용을 관리하고 위치 업데이트의 지터를 줄이는 데 도움이 되는 세 가지 위치 필터링 옵션을 제공합니다.

  • 정확도 기반정확도 측정을 제공하는 모든 디바이스와 함께 사용할 수 있습니다. 대부분의 모바일 디바이스는 이 정보를 제공합니다. 각 위치 측정의 정확도는 GPS 위성 수신, 풍경, Wi-Fi 및 Bluetooth 디바이스의 근접성 등 다양한 환경 요인의 영향을 받습니다. 대다수 모바일 디바이스를 포함한 디바이스는 대부분 측정과 함께 측정의 정확도 추정치를 제공할 수 있습니다. AccuracyBased 필터링을 사용하면 Amazon Location는 디바이스가 측정된 정확도보다 적게 움직인 경우 위치 업데이트를 무시합니다. 예를 들어 디바이스에서 두 번 연속 업데이트의 정확도 범위가 5m와 10m인 경우, 디바이스가 15m 미만으로 이동하면 Amazon Location은 두 번째 업데이트를 무시합니다. Amazon Location은 무시한 업데이트를 지오펜스와 비교하여 평가하거나 저장하지 않습니다.

    정확도가 제공되지 않으면 0으로 처리되며, 측정값은 완전히 정확한 것으로 간주됩니다.

    참고

    정확도 기반 필터링을 사용하여 모든 필터링을 제거할 수도 있습니다. 정확도 기반 필터링을 선택했지만 모든 정확도 데이터를 0으로 재정의하거나 정확도를 완전히 생략하는 경우 Amazon Location은 업데이트를 필터링하지 않습니다.

  • 거리 기반디바이스가 정확도 측정을 제공하지 않지만 필터링을 활용하여 지터를 줄이고 비용을 관리하려는 경우에 사용합니다. DistanceBased 필터링은 디바이스가 30m (98.4피트) 미만으로 이동한 위치 업데이트를 무시합니다. DistanceBased 위치 필터링을 사용하는 경우 Amazon Location은 지오펜스에 대해 무시된 업데이트를 평가하거나 업데이트를 저장하지 않습니다.

    iOS 및 Android 디바이스의 평균 정확도를 포함하여 대부분의 모바일 디바이스의 정확도는 15m 이내입니다. 대부분의 애플리케이션에서 DistanceBased 필터링은 디바이스 궤적을 맵에 표시할 때 위치 부정확성의 영향을 줄이고, 디바이스가 지오펜스 경계 근처에 있을 때 여러 번의 연속적인 출입 이벤트로 인한 바운싱 효과를 줄일 수 있습니다. 또한 링크된 지오펜스를 기준으로 평가하거나 디바이스 위치를 검색하기 위한 호출을 줄여 애플리케이션 비용을 절감할 수 있습니다.

  • 시간 기반 - (기본값) 디바이스가 위치 업데이트를 매우 자주(30초에 한 번 이상) 보내고 모든 업데이트를 저장하지 않고도 거의 실시간으로 지오펜스를 평가하려는 경우에 사용합니다. TimeBased 필터링에서는 모든 위치 업데이트가 연결된 지오펜스 컬렉션에 대해 평가되지만 모든 위치 업데이트가 저장되는 것은 아닙니다. 업데이트 빈도가 30초 이상인 경우 각 고유 디바이스 ID에 대해 30초당 하나의 업데이트만 저장됩니다.

참고

필터링 방법과 위치 업데이트 빈도를 결정할 때는 추적 애플리케이션 비용을 염두에 두세요. 모든 위치 업데이트에 대해 요금이 청구되며 연결된 각 지오펜스 컬렉션에 대한 위치 업데이트 평가 비용은 한 번 청구됩니다. 예를 들어, 시간 기반 필터링을 사용할 때 트래커가 두 개의 지오펜스 컬렉션에 연결된 경우 모든 위치 업데이트는 위치 업데이트 요청 1회와 지오펜스 컬렉션 평가 2회로 계산됩니다. 디바이스의 위치 업데이트를 5초마다 보고하고 시간 기반 필터링을 사용하는 경우 각 디바이스에 대해 시간당 720건의 위치 업데이트와 1,440회의 지오펜스 평가에 대한 요금이 청구됩니다.

청구서는 각 컬렉션의 지오펜스 수에 영향을 받지 않습니다. 각 지오펜스 컬렉션에는 최대 50,000개의 지오펜스가 포함될 수 있으므로 가능한 경우 지오펜스를 더 적은 컬렉션으로 결합하여 지오펜스 평가 비용을 절감할 수 있습니다.

기본적으로 추적되는 기기가 연결된 지오펜스에 들어오거나 나갈 때마다 EventBridge 이벤트가 발생합니다. 자세한 설명은 트래커를 지오펜스 컬렉션에 연결 섹션을 참조하세요.

트래커 리소스에 대해 필터링된 모든 위치 업데이트에 대해 이벤트를 활성화할 수 있습니다. 자세한 설명은 트래커의 업데이트 이벤트를 활성화합니다. 섹션을 참조하세요.

참고

자체 AWS KMS 고객 관리형 키를 사용하여 데이터를 암호화하려는 경우 경계 다각형 쿼리 기능이 기본적으로 비활성화됩니다. 이 경계 다각형 쿼리 기능을 사용하면 디바이스 위치 표현이 AWS KMS 관리형 키를 사용하여 암호화되지 않기 때문입니다. 하지만 정확한 디바이스 위치는 여전히 관리형 키를 사용하여 암호화됩니다.

트래커를 만들거나 업데이트할 때 KmsKeyEnableGeospatialQueries 파라미터를 true로 설정하여 경계 다각형 쿼리 기능을 옵트인하도록 선택할 수 있습니다.

Console

Amazon Location 콘솔을 사용하여 트래커를 만들려

  1. https://console.aws.amazon.com/location/에서 Amazon Location Service 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 트래커를 선택합니다.

  3. 트래커 생성을 선택합니다.

  4. 다음 필드를 입력합니다.

    • 이름 – 고유한 이름을 입력합니다. 예를 들면 다음과 같습니다. ExampleTracker 최대 100자입니다. 유효한 항목에는 영숫자 문자, 하이픈, 마침표 및 밑줄이 포함됩니다.

    • 설명 – 선택적 설명을 입력합니다.

  5. 위치 필터링에서 트래커 리소스를 사용하려는 방식에 가장 적합한 옵션을 선택합니다. 위치 필터링을 설정하지 않은 경우 기본 설정은 TimeBased입니다. 자세한 내용은 이 가이드의 트래커 항목과 Amazon Location Service Tracker API 참조의 PositionFiltering 항목을 참조하세요.

  6. (선택 사항) 태그 아래에 태그 을 입력합니다. 이렇게 하면 새 지오펜스 컬렉션에 태그가 추가됩니다. 자세한 내용을 알아보려면 리소스 태그 지정을 참조하세요.

  7. (선택 사항) 고객 관리형 키 암호화에서 고객 관리형 키 추가를 선택할 수 있습니다. 그러면 사용자가 기본 AWS 소유 암호화를 통해 생성, 소유 및 관리하는 대칭 고객 관리형 키가 추가됩니다. 자세한 내용은 저장 데이터 암호화를 참조하세요.

  8. (선택 사항) 에서 KmsKeyEnableGeospatialQueries지리공간 쿼리를 활성화하도록 선택할 수 있습니다. 이를 통해 고객 AWS KMS 관리형 키를 사용하여 데이터를 암호화하면서 경계 다각형 쿼리 기능을 사용할 수 있습니다.

    참고

    경계 다각형 쿼리 기능을 사용하는 경우 디바이스 위치 표현은 AWS KMS 관리형 키를 사용하여 암호화되지 않습니다. 하지만 정확한 디바이스 위치는 여전히 관리형 키를 사용하여 암호화됩니다.

  9. (선택 사항) EventBridge 구성에서 필터링된 위치 업데이트에 대한 EventBridge 이벤트를 활성화하도록 선택할 수 있습니다. 그러면 이 트래커에 있는 디바이스의 위치 업데이트가 위치 필터링 평가를 충족할 때마다 이벤트가 전송됩니다.

  10. 트래커 생성을 선택합니다.

API

Amazon Location API를 사용하여 트래커를 만들려면

Amazon Location Trackers API에서 CreateTracker 작업을 사용합니다.

다음 예시에서는 API 요청을 사용하여 라는 트래커를 생성합니다 ExampleTracker. 트래커 리소스는 고객 데이터를 암호화하는 고객 관리 AWS KMS 키와 연결되어 있으며, 에서 EventBridge 포지션 업데이트를 활성화하지 않습니다.

POST /tracking/v0/trackers Content-type: application/json { "TrackerName": "ExampleTracker", "Description": "string", "KmsKeyEnableGeospatialQueries": false, "EventBridgeEnabled": false, "KmsKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "PositionFiltering": "AccuracyBased", "Tags": { "string" : "string" } }

KmsKeyEnableGeospatialQueries가 활성화된 상태로 트래커 생성

다음 예시에서는 파라미터 KmsKeyEnableGeospatialQueries가 true로 설정되어 있습니다. 이렇게 하면 고객 AWS KMS 관리형 키를 사용하여 데이터를 암호화하는 동시에 경계 다각형 쿼리 기능을 사용할 수 있습니다.

경계 다각형 쿼리 기능 사용에 대한 자세한 내용은 항목을 참조하세요.

참고

경계 다각형 쿼리 기능을 사용하는 경우 디바이스 위치 표현은 AWS KMS 관리형 키를 사용하여 암호화되지 않습니다. 하지만 정확한 디바이스 위치는 여전히 관리형 키를 사용하여 암호화됩니다.

POST /tracking/v0/trackers Content-type: application/json { "TrackerName": "ExampleTracker", "Description": "string", "KmsKeyEnableGeospatialQueries": true, "EventBridgeEnabled": false, "KmsKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "PositionFiltering": "AccuracyBased", "Tags": { "string" : "string" } }
AWS CLI

AWS CLI 명령을 사용하여 트래커를 만들려면

create-tracker 명령을 사용합니다.

다음 예제에서는 AWS CLI 를 사용하여 라는 ExampleTracker트래커를 생성합니다. 트래커 리소스는 고객 데이터를 암호화하는 고객 관리 AWS KMS 키와 연결되어 있으며, 포지션 업데이트는 활성화되지 않습니다. EventBridge

aws location \ create-tracker \ --tracker-name "ExampleTracker" \ --position-filtering "AccuracyBased" \ --event-bridge-enabled false \ --kms-key-enable-geospatial-queries false \ --kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"

KmsKeyEnableGeospatialQueries가 활성화된 상태로 트래커 생성

다음 예시에서는 파라미터 KmsKeyEnableGeospatialQueries가 true로 설정되어 있습니다. 이렇게 하면 고객 AWS KMS 관리형 키를 사용하여 데이터를 암호화하는 동시에 경계 다각형 쿼리 기능을 사용할 수 있습니다.

경계 다각형 쿼리 기능 사용에 대한 자세한 내용은 항목을 참조하세요.

참고

경계 다각형 쿼리 기능을 사용하는 경우 디바이스 위치 표현은 AWS KMS 관리형 키를 사용하여 암호화되지 않습니다. 하지만 정확한 디바이스 위치는 여전히 관리형 키를 사용하여 암호화됩니다.

aws location \ create-tracker \ --tracker-name "ExampleTracker" \ --position-filtering "AccuracyBased" \ --event-bridge-enabled false \ --kms-key-enable-geospatial-queries true \ --kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"
참고

청구는 사용량에 따라 달라집니다. 다른 AWS 서비스 사용 시 요금이 부과될 수 있습니다. 자세한 정보는 Amazon Location Service 가격을 참조하세요.

트래커 편집을 선택하여 트래커가 생성된 후 설명, 포지션 필터링EventBridge 구성을 편집할 수 있습니다.

요청 인증

트래커 리소스를 생성하고 지오펜스를 기준으로 디바이스 위치를 평가할 준비가 되었으면 요청을 인증할 방법을 선택합니다.

  • 서비스에 액세스하는 방법을 알아보려면 Amazon Location Service 액세스를 참조하세요.

  • 인증되지 않은 요청이 있는 디바이스 위치를 게시하려면 Amazon Cognito를 사용하는 것이 좋습니다.

    다음 예제는 권한 부여를 위한 Amazon Cognito 자격 증명 풀 사용, AWS JavaScript SDK v3 및 Amazon 로케이션을 사용하는 방법을 보여줍니다. 인증 도우미

    import { LocationClient, BatchUpdateDevicePositionCommand } from "@aws-sdk/client-location"; import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; // Unauthenticated identity pool you created const identityPoolId = "us-east-1:1234abcd-5678-9012-abcd-sample-id"; // Create an authentication helper instance using credentials from Cognito const authHelper = await withIdentityPoolId(identityPoolId); const client = new LocationClient({ region: "us-east-1", // The region containing both the identity pool and tracker resource ...authHelper.getLocationClientConfig(), // Provides configuration required to make requests to Amazon Location }); const input = { TrackerName: "ExampleTracker", Updates: [ { DeviceId: "ExampleDevice-1", Position: [-123.4567, 45.6789], SampleTime: new Date("2020-10-02T19:09:07.327Z"), }, { DeviceId: "ExampleDevice-2", Position: [-123.123, 45.123], SampleTime: new Date("2020-10-02T19:10:32Z"), }, ], }; const command = new BatchUpdateDevicePositionCommand(input); // Send device position updates const response = await client.send(command);

디바이스 위치로 트래커를 업데이트합니다.

디바이스를 추적하기 위해 디바이스 위치 업데이트를 트래커에 게시할 수 있습니다. 나중에 트래커 리소스에서 이러한 디바이스 위치 또는 디바이스 위치 기록을 검색할 수 있습니다.

각 위치 업데이트에는 디바이스 ID, 타임스탬프, 위치가 포함되어야 합니다. 필요에 따라 정확도 및 최대 3개의 키-값 쌍을 비롯한 기타 메타데이터를 포함시킬 수 있습니다.

트래커가 하나 이상의 지오펜스 컬렉션에 연결된 경우, 트래커에 지정한 필터링 규칙에 따라 해당 지오펜스를 기준으로 업데이트가 평가됩니다. 디바이스가 영역 내부에서 외부로 또는 그 반대로 이동하여 지오펜스 영역을 침해하는 경우, 내부로 이벤트가 수신됩니다. EventBridge 이러한 ENTER 이벤트 또는 EXIT 이벤트에는 디바이스 ID, 타임스탬프, 관련 메타데이터를 비롯한 위치 업데이트 세부 정보가 포함됩니다.

참고

위치 필터링에 대한 자세한 내용은 트래커 생성 섹션을 참조하세요.

지오펜스 이벤트에 대한 자세한 내용은 아마존을 통한 아마존 로케이션 서비스 이벤트에 대응하기 EventBridge 단원을 참조하세요.

다음 방법 중 하나를 사용하여 디바이스 업데이트를 전송합니다.

  • AWS IoT Core 리소스에 MQTT 업데이트를 전송하고 이를 트래커 리소스에 연결합니다.

  • Amazon Location Trackers API, AWS CLI 또는 Amazon Location API를 사용하여 위치 업데이트를 전송합니다. AWS SDK를 사용하여 iOS 또는 Android 애플리케이션에서 API를 호출할 수 있습니다.

API

Amazon Location API를 사용하여 위치 업데이트를 보내려면

Amazon Location Trackers API에서 BatchUpdateDevicePosition 작업을 사용합니다.

다음 예시에서는 API 요청을 사용하여 기기 위치 업데이트를 추적기에 게시합니다. ExampleDeviceExampleTracker

POST /tracking/v0/trackers/ExampleTracker/positions Content-type: application/json { "Updates": [ { "DeviceId": "1", "Position": [ -123.12245146162303, 49.27521118043802 ], "SampleTime": "2022-10-24T19:09:07.327Z", "PositionProperties": { "name" : "device1" }, "Accuracy": { "Horizontal": 10 } }, { "DeviceId": "2", "Position": [ -123.1230104928471, 49.27752402723152 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "3", "Position": [ -123.12325592118916, 49.27340530543111 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "4", "Position": [ -123.11958813096311, 49.27774641063121 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "5", "Position": [ -123.1277418058896, 49.2765989015285 ], "SampleTime": "2022-10-02T19:09:07.327Z" }, { "DeviceId": "6", "Position": [ -123.11964267059481, 49.274188155916534 ], "SampleTime": "2022-10-02T19:09:07.327Z" } ] }
AWS CLI

AWS CLI 명령을 사용하여 위치 업데이트를 전송하려면

batch-update-device-position 명령을 사용합니다.

다음 예시에서는 AWS CLI a를 사용하여 ExampleDevice-1과 ExampleDevice-2에 대한 기기 위치 업데이트를 트래커에 ExampleTracker게시합니다.

aws location batch-update-device-position \ --tracker-name ExampleTracker \ --updates '[{"DeviceId":"ExampleDevice-1","Position":[-123.123,47.123],"SampleTime":"2021-11-30T21:47:25.149Z"},{"DeviceId":"ExampleDevice-2","Position":[-123.123,47.123],"SampleTime":"2021-11-30T21:47:25.149Z","Accuracy":{"Horizontal":10.30},"PositionProperties":{"field1":"value1","field2":"value2"}}]'

트래커에서 디바이스의 위치 기록 가져오기

Amazon Location 트래커 리소스는 추적한 모든 디바이스의 위치 기록을 30일 동안 유지합니다. 트래커 리소스에서 모든 관련 메타데이터를 포함한 디바이스 위치 기록을 검색할 수 있습니다. 다음 예시에서는 AWS CLI 또는 Amazon Location API를 사용합니다.

API

Amazon Location API를 사용하여 트래커에서 디바이스 위치 기록을 가져오려면

Amazon Location Trackers API에서 GetDevicePositionHistory 작업을 사용합니다.

다음 예시에서는 API URI 요청을 사용하여 시작 19:05:07 (포함) ExampleDevice에서 ExampleTracker시작하여 19:20:07 (제외) 에서 종료되는 트래커에서 기기 위치 기록을 가져옵니다2020–10–02.

POST /tracking/v0/trackers/ExampleTracker/devices/ExampleDevice/list-positions Content-type: application/json { "StartTimeInclusive": "2020-10-02T19:05:07.327Z", "EndTimeExclusive": "2020-10-02T19:20:07.327Z" }
AWS CLI

AWS CLI 명령을 사용하여 트래커에서 디바이스 위치 기록을 가져오려면

get-device-position-history 명령을 사용합니다.

다음 예제에서는 AWS CLI 를 사용하여 from from 19:05:07 (포함) 및 on (제외) 에서 끝나는 19:20:07 (제외) 라는 ExampleTracker트래커에서 기기 위치 기록을 가져옵니다2020–10–02. ExampleDevice

aws location \ get-device-position-history \ --device-id "ExampleDevice" \ --start-time-inclusive "2020-10-02T19:05:07.327Z" \ --end-time-exclusive "2020-10-02T19:20:07.327Z" \ --tracker-name "ExampleTracker"

디바이스 위치를 나열합니다.

API를 사용하거나 Amazon Location ListDevicePositions API를 사용하여 트래커의 디바이스 위치 목록을 볼 수 있습니다. AWS CLI ListDevicePositions API를 호출하면 해당 트래커와 연결된 모든 디바이스의 최신 위치 목록이 반환됩니다. 기본적으로 이 API는 지정된 트래커에 대한 결과 페이지당 100개의 최신 디바이스 위치를 반환합니다. 특정 리전 내의 디바이스만 반환하려면 FilterGeometry 파라미터를 사용하여 경계 다각형 쿼리를 생성하세요. 이렇게 하면 ListDevicePositions 호출할 때 폴리곤 안에 있는 디바이스만 반환됩니다.

참고

자체 AWS KMS 고객 관리형 키를 사용하여 데이터를 암호화하려는 경우 경계 다각형 쿼리 기능이 기본적으로 비활성화됩니다. 이 기능을 사용하면 디바이스 위치 표현이 AWS KMS 관리형 키를 사용하여 암호화되지 않기 때문입니다. 하지만 정확한 디바이스 위치는 여전히 관리형 키를 사용하여 암호화됩니다.

경계 다각형 쿼리 기능을 선택할 수 있습니다. 트래커를 만들거나 업데이트할 때 KmsKeyEnableGeospatialQueries 파라미터를 true로 설정하면 됩니다.

API

Amazon Location Trackers API에서 ListDevicePositions 작업을 사용합니다.

다음 예시는 선택적 파라미터 FilterGeometry를 사용하여 다각형 영역의 디바이스 위치 목록을 가져오기 위한 API 요청입니다. 이 예시에서는 Polygon 배열로 정의된 영역에 있는 3개의 디바이스 위치를 반환합니다.

POST /tracking/v0/trackers/TrackerName/list-positions HTTP/1.1 Content-type: application/json { "FilterGeometry": { "Polygon": [ [ [ -123.12003339442259, 49.27425121147397 ], [ -123.1176984148229, 49.277063620879744 ], [ -123.12389509145294, 49.277954183760926 ], [ -123.12755921328647, 49.27554025235713 ], [ -123.12330236586217, 49.27211836076236 ], [ -123.12003339442259, 49.27425121147397 ] ] ] }, "MaxResults": 3, "NextToken": "1234-5678-9012" }

다음은 ListDevicePositions에 대한 응답의 예입니다:

{ "Entries": [ { "DeviceId": "1", "SampleTime": "2022-10-24T19:09:07.327Z", "Position": [ -123.12245146162303, 49.27521118043802 ], "Accuracy": { "Horizontal": 10 }, "PositionProperties": { "name": "device1" } }, { "DeviceId": "3", "SampleTime": "2022-10-02T19:09:07.327Z", "Position": [ -123.12325592118916, 49.27340530543111 ] }, { "DeviceId": "2", "SampleTime": "2022-10-02T19:09:07.327Z", "Position": [ -123.1230104928471, 49.27752402723152 ] } ], "NextToken": "1234-5678-9012" }
CLI

list-trackers 명령을 사용합니다.

다음 예시는 다각형 영역에 있는 디바이스 목록을 가져오는 AWS CLI입니다.

aws location list-device-positions TODO: add arguments add props for filter geo