Amazon Web Services 한국 블로그

Amazon Location Service 경로, 장소 및 지도를 위한 새로운 API 출시

오늘 Amazon Location Service는 개발자에게 보다 일관되고 간소화된 경험을 제공하기 위해 경로, 장소지도 기능을 확장하고 개선하는 17개의 신규 및 향상된 API를 출시했습니다. 이러한 업데이트는 향상된 기능을 도입하고 간소화된 마이그레이션을 제공함으로써 다양한 애플리케이션에서 Amazon Location Service의 접근성과 유용성을 높입니다.

이제 고급 경로 최적화, 통행료 계산, GPS 트레이스 스내핑, 정적 및 동적 렌더링 옵션이 포함된 다양한 지도 스타일에 액세스하고 관심 지점에 대한 상세한 정보를 사용하여 근접성 기반 검색 및 예측 제안을 수행할 수 있습니다.

Amazon에서는 대부분의 로드맵이 고객 피드백을 기반으로 합니다. Amazon Location Service로 애플리케이션을 구축하는 많은 고객은 위치 기반 데이터를 사용하여 작업할 때 특정 용도로 구축된 API와 보다 세분화된 정보(예: 연락처 정보 및 영업 시간)가 필요하다는 의견을 공유했습니다. 현재 API 세트는 많은 고객에게 유용한 도구를 제공하고 있지만 개발자들은 세부 경로 계획, 근접성 기반 검색, 추가 장소 세부 정보, 정적 지도 이미지와 같은 추가 기능에 대한 요구를 표명했습니다. 이러한 새 API는 상기한 요청을 해결하고 보다 포괄적이고 즉시 사용 가능한 위치 솔루션을 제공합니다.

새로운 기능 및 향상된 기능
오늘 출시에서는 고객의 피드백에 직접 응답하여 10개의 업데이트된 API와 7개의 완전히 새로운 API를 소개합니다. 각 서비스(경로, 장소, 지도)에는 보다 광범위한 사용 사례를 지원하도록 설계된 특정 개선 사항이 포함되어 있습니다.

경로
이제 Amazon Location Routes API는 고급 경로 계획 및 사용자 지정 옵션을 지원하므로 사용자는 다음을 수행할 수 있습니다.

  • 특정 이동 시간 또는 거리 내의 서비스 지역을 식별하는 CalculateIsolines
  • 이동 시간 또는 거리를 최소화할 수 있도록 가장 효율적인 경유지 순서를 결정하는 OptimizeWaypoints
  • 유료 도로가 포함된 경로에 대한 정확한 비용 추정치를 제공하는 통행료 계산
  • 도로망에 지점을 스내핑하여 GPS 트레이스를 정밀하게 일치시킬 수 있는 SnapToRoads

이러한 기능을 통해 사용자를 위해 더 정확한 동적 경로 경험을 설계할 수 있습니다. 예를 들어 물류 회사는 실시간 교통량을 고려하고 배송에 소요되는 비용을 최소화하도록 운전자 경로를 실시간으로 최적화할 수 있습니다.

지도
업데이트된 Amazon Location Maps API에는 숙련된 지도 제작자가 제작한 다양한 용도의 지도 스타일이 포함되어 있습니다. 이러한 지도 스타일은 출시 시간을 단축하고 사용자 지정 지도를 생성할 필요가 없는 전문적인 디자인을 제공합니다. 또한 개발자는 정적 지도 이미지 기능을 사용하여 애플리케이션 내에 정적 지도를 통합할 수 있으므로 지속적인 데이터 스트리밍의 필요성이 줄어들고 상호 작용이 필요하지 않은 사용 사례에서 성능을 개선할 수 있습니다.

Maps API의 주요 기능은 다음과 같습니다.

  • 타일 세트에서 지정된 X, Y, Z축 값의 타일을 다운로드하는 GetTile
  • 스타일에 대한 정보를 반환하는 GetStyleDescriptor
  • 보고 또는 시각화 목적으로 비대화형 지도를 렌더링할 수 있는 GetStaticMap

장소
위치 데이터 세분성 확대에 대한 요청을 해결하기 위해 더 상세한 검색 기능을 제공하도록 Amazon Location Places API를 개선했습니다. 새로운 기능에는 다음이 포함됩니다.

  • 근접성 기반 쿼리를 지원하고 예측 텍스트 기능을 통해 더 나은 사용자 경험을 제공하는 SearchNearbyAutocomplete
  • 영업 시간, 연락처 정보, 관심 지점에 대한 추가 속성 등의 범주를 포함한 향상된 비즈니스 세부 정보

이러한 기능은 음식 배달 서비스 또는 소매 애플리케이션과 같이 사용자가 주변 위치에 대한 자세한 정보가 필요한 애플리케이션에 특히 유용합니다. 고객이 음식 배달 애플리케이션을 열고 SearchNearby를 사용하여 주변 레스토랑을 검색하고 영업 시간, 연락처 정보와 같은 레스토랑 세부 정보를 검색하여 이용 가능 여부를 확인한다고 가정해 보겠습니다. 한 운전자에게 여러 배달 주문이 할당되면 애플리케이션은 OptimizeWaypoints를 사용하여 가장 효율적인 픽업 및 배달 경로를 제안합니다. 운전자가 경로를 따라 이동할 때 SnaptoRoads는 정확한 위치 시각화를 제공하여 고객의 실시간 추적 경험을 향상시킵니다.

실행 중인 향상된 위치 서비스
API 직접 호출은 간단합니다. AWS Command Line Interface(AWS CLI), AWS SDK 중 하나 또는 일반 REST API를 사용할 수 있습니다. 하지만 웹 또는 모바일 앱에서 지도에 정보를 표시하려면 몇 가지 추가 설정이 필요합니다. 이 프로세스는 잘 문서화되어 있지만 여기서 모두 다루기에는 너무 상세합니다. 이 데모에서는 API 사용에 초점을 맞출 것입니다.

Amazon Location Service를 사용하면 AWS API 인증(AWS Sigv4 인증) 또는 API 키를 사용하는 두 가지 방법으로 API 직접 호출을 인증할 수 있습니다. 최종 사용자가 인증되지 않거나 Amazon Cognito와의 통합이 불가능한 모바일 애플리케이션의 개발자에게는 API 키가 더 편리할 수 있습니다. 이는 프론트엔드 애플리케이션에 권장되는 인증 방법입니다.

여기서는 API의 다양한 용도와 용이한 애플리케이션 통합을 보여주기 위해 데모의 각 단계에 AWS CLI, cURL 및 그래픽 REST API 클라이언트를 함께 사용합니다.

1단계: API 키 생성

먼저 AWS CLI를 사용하여 애플리케이션을 위한 API 키를 생성합니다. AWS Management Console에서 API 키를 관리할 수도 있습니다.

REGION=eu-central-1
KEYNAME=geo-key-seb

aws location create-key --region ${REGION} --key-name ${KEYNAME} --restrictions \
AllowActions="geo-routes:*","geo-places:*","geo-maps:*",\
AllowResources="arn:aws:geo-routes:${REGION}::provider/default",\
"arn:aws:geo-places:${REGION}::provider/default",\
"arn:aws:geo-maps:${REGION}::provider/default" \
--no-expiry 

{
    "Key": "v1.public.ey...cy",
    "KeyArn": "arn:aws:geo:eu-central-1:02345678901:api-key/geo-key-seb",
    "KeyName": "geo-key-seb",
    "CreateTime": "2024-09-29T09:35:53.115000+00:00"
}

이 명령은 API 키를 생성합니다. 이제 이 키를 사용하여 Amazon Location API를 직접적으로 호출할 수 있습니다.

2단계: 지리 좌표 가져오기

다음으로 cURL을 사용하여 GeoCode를 직접적으로 호출하고 QueryText 파라미터에 주소를 전달하여 프랑스 릴 도심의 지리 좌표(경도위도)를 검색합니다.

$ curl --silent -X "POST" "https://places.geo.eu-central-1.amazonaws.com/v2/geocode?key=v1.public.ey...cy" \
       -d $'{ "QueryText": "Grand Place, Lille, France" }' 
 
{"ResultItems":[{"PlaceId":"AQ...5U","PlaceType":"Street","Title":"Grand'Place, 59800 Lille, France",
                 "Address":{"Label":"Grand'Place, 59800 Lille, France",
                 "Country":{"Code2":"FR","Code3":"FRA","Name":"France"},
                 "Region":{"Code":"HDF","Name":"Hauts-de-France"},"SubRegion":{"Name":"Nord"},
                 "Locality":"Lille","District":"Centre","PostalCode":"59800",
                 "Street":"Grand'Place","StreetComponents":[{"BaseName":"Grand'Place","Language":"fr"}]},
                 "Position":[3.06361,50.63706],
                 "MapView":[3.0628,50.6367,3.06413,50.63729],
                 "MatchScores":{"Overall":1,"Components":{"Address":{"Country":1,"Locality":1,"Intersection":[1]}}}}]}

그러면 도심의 GPS 좌표 [3.06361, 50.63706]를 비롯한 여러 데이터 포인트가 반환됩니다.

3단계: 주변 장소 검색

검색한 좌표를 사용하여 REST API 클라이언트 도구로 SearchNearby API를 직접적으로 호출하여 릴 도심 주변의 관심 장소를 찾습니다.

Amazon Location Service - 관심 장소에 대한 API 직접 호출

화면 오른쪽에서 API 응답을 읽을 수 있습니다. 식당, 은행, 주차장과 같은 주변 장소의 목록입니다. 범주를 지정하거나 검색 지역을 제한하여 검색을 더욱 세분화할 수 있습니다.

SearchNearby API는 검색을 경계 상자 이내로 제한하거나 비즈니스 체인, 범주, 국가 또는 식품 유형을 포함 또는 제외시킬 수 있는 선택적 필터 파라미터를 허용합니다.

"Filter": {
   "BoundingBox": [ number ],
   "ExcludeBusinessChains": [ "string" ],
   "ExcludeCategories": [ "string" ],
   "ExcludeFoodTypes": [ "string" ],
   "IncludeBusinessChains": [ "string" ],
   "IncludeCategories": [ "string" ],
   "IncludeCountries": [ "string" ],
   "IncludeFoodTypes": [ "string" ]
},

주변 관심 장소를 검색한 결과, 결과 중 하나가 세계적으로 유명한 🍔인 맥도날드였습니다.

Amazon Location Service - SearchNearby 결과

4단계: 주행 경로 얻기

마지막으로 AWS CLI를 사용하여 벨기에 브뤼셀과 프랑스 두 도심 간의 주행 경로를 계산합니다.

aws location calculate-routes    \
    --origin 4.35278 50.84687      \
    --destination 3.06361 50.63706 \
    --key "v1.public.ey...cy"

응답에는 지도에 경로를 렌더링하기 위한 폴리라인과 단계별 주행 경로 목록이 포함됩니다.

...
          "TravelMode": "Car",
          "Type": "Vehicle",
          "VehicleLegDetails": {
            "TravelSteps": [
              {
                "Duration": 15,
                "Distance": 75,
                "ExitNumber": [],
                "GeometryOffset": 0,
                "Type": "Depart"
              },
              {
                "Duration": 10,
                "Distance": 8,
                "ExitNumber": [],
                "GeometryOffset": 2,
                "Type": "Turn",
                "TurnStepDetails": {
                  "Intersection": [],
                  "SteeringDirection": "Right",
                  "TurnIntensity": "Typical"
                }
              },
...

5단계: 지도에 주행 경로 표시

지도에서 경로를 시각화하기 위해 웹 및 모바일 애플리케이션에서 지도를 표시하기 위한 렌더링 엔진인 MapLibre 라이브러리를 사용합니다. Amazon Location Service 개발자 안내서에 따라 경로를 표시하는 기본 앱을 빌드했습니다.

Amazon Location Service - 경로가 표시된 지도

MapLibre 외에도 AWS Amplify를 사용하여 애플리케이션에 Amazon Location 데이터를 통합하고 표시할 수 있습니다.

시작하기
Amazon Location Service는 이러한 신규 및 업데이트된 API를 통해 비즈니스 요구에 맞는 보다 포괄적인 지도 작성 및 위치 데이터 제품군을 제공합니다. 이를 통해 개발자의 민첩성과 확장성을 높여 개발 수명 주기를 가속화할 수 있습니다.

시작하려면 지금 바로 업데이트된 Amazon Location Service 개발자 안내서를 살펴보고 이러한 기능을 통합해 보세요. Amazon Location Service 페이지를 방문하여 자세히 알아보거나 자주 사용하는 AWS SDK가 포함된 API를 사용해 애플리케이션을 개선할 수 있는 방법을 확인할 수도 있습니다.

— seb