Amazon Location Service の 5 種類のリソースが AWS CDK の Alpha module で実装可能になりました

Amazon Location Service の 5 種類のリソースが AWS CDK の Alpha module で実装可能になりました

Clock Icon2024.11.29

こんにちは、製造ビジネステクノロジー部の若槻です。

Amazon Location Service は、地理空間データと位置情報を利用した機能をアプリケーションに簡単に追加できる AWS サービスです。

https://aws.amazon.com/jp/location/

Amazon Location Service では主に以下の 5 種類のリソースを管理して利用します。

  • Map
  • PlaceIndex
  • RouteCalculator
  • GeofenceCollection
  • Tracker

そして最近リリースされた AWS CDK v2.169.0 では、Alpha module において Map がサポートされ、上記の 5 種類すべてのリソースが L2 コンストラクトで実装可能になりました。

https://github.com/aws/aws-cdk/releases/tag/v2.169.0

今回は AWS CDK の Alpha module で Amazon Location Service のリソースの実装を試してみました。

試してみた

CDK パッケージのアップデート

Alpha Module を含めた AWS CDK モジュールを v2.169.0 以降にアップデートします。

npm i -D @aws-cdk/aws-location-alpha@latest aws-cdk-lib@latest aws-cdk@latest

CDK 実装

今回行った AWS CDK の実装コードは下記のようになります。

lib/main-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as location from '@aws-cdk/aws-location-alpha';

export class MainStack extends cdk.Stack {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    /**
     * Map
     */
    new location.Map(this, 'Map', {
      style: location.Style.VECTOR_ESRI_NAVIGATION,
      customLayers: [location.CustomLayer.POI],
      politicalView: location.PoliticalView.INDIA, // 既定は NONE
    });

    /**
     * PlaceIndex
     */
    new location.PlaceIndex(this, 'PlaceIndex', {
      dataSource: location.DataSource.HERE, // 既定は Esri
      intendedUse: location.IntendedUse.STORAGE, // 既定は SINGLE_USE
    });

    /**
     * RouteCalculator
     */
    new location.RouteCalculator(this, 'RouteCalculator', {
      dataSource: location.DataSource.ESRI,
    });

    /**
     * GeofenceCollection
     */
    const geofenceCollection = new location.GeofenceCollection(
      this,
      'GeofenceCollection',
      {
        // kmsKey: key, // 既定は AWS managed key
      }
    );

    /**
     * Tracker
     */
    new location.Tracker(this, 'Tracker', {
      geofenceCollections: [geofenceCollection],
      eventBridgeEnabled: true, // 既定は false
      positionFiltering: location.PositionFiltering.DISTANCE_BASED, // 既定は TIME_BASED
      // kmsKey: key, // 既定は AWS managed key
      // kmsKeyEnableGeospatialQueries: true, // 既定は false。kmsKey が指定されている場合のみ使用可能
    });
  }
}

上記実装を CDK デプロイして作成します。

作成されたリソースの確認

デプロイにより作成されたリソースをマネジメントコンソールから確認してみます。

Map

Map はアプリケーションなどに埋め込む地図を提供するリソースです。

指定したマップスタイル(VectorEsriNavigation)、カスタムレイヤーズ(POI)、ポリティカルビュー(India)が設定された Map が作成されています。

POI (Point of Interest) レイヤーが追加されていると、マップ上に施設や店、観光地などの地理情報が追加で表示されるようになります。
https://dev.classmethod.jp/articles/location-service-places-content-maps/

またポリティカルビューを使用すると、領土紛争がある地域を地図上でどの政治観点で表示するかを指定することができます。
https://dev.classmethod.jp/articles/location-service-add-political-views/

PlaceIndex

PlaceIndex は地名や施設名の検索やジオコーディング、リバースジオコーディングを行うための API を提供するリソースです。

指定したデータソース(Here)および Intended use が設定された PlaceIndex が作成されています。

Intended use は位置情報の検索結果データの保存方法を指定するプロパティで、結果データを一時的にのみ使用するため保存しない場合は SingleUse、キャッシュや分析のために保存したい場合は Storage を指定します。

https://docs.aws.amazon.com/location/latest/developerguide/places-intended-use.html

RouteCalculator

RouteCalculator は Route とも呼ばれ、ルート検索や経路計算を行うための API を提供するリソースです。

指定したデータソース(Esri)が設定された RouteCalculator が作成されています。

GeofenceCollection

GeofenceCollection は Map 上の仮想的な境界線の定義である Geofences をセットとして管理するためのリソースです。後述の Tracker が境界を超えた際にイベントを発行することができます。

CDK により作成された GeofenceCollection です。Geofences の作成は Alpha Module ではまだサポートされておらず、手動で追加するか L1 コンストラクトで実装する必要があります。

Tracker

Tracker はデバイスの位置情報の更新を管理するリソースです。

CDK により 作成された Tracker です。先程の GeofenceCollection が紐づけられています。

また境界を超えた際に EventBridge によるイベントを発行する設定と、位置情報のフィルタリング方法(距離ベース)が設定されています。

Tracker と EventBridge の連携については下記も合わせてご参照ください。
https://dev.classmethod.jp/articles/location-service-device-updates-eventbridge/

おわりに

Amazon Location Service の 5 種類のリソースが AWS CDK の Alpha module で実装可能になったので共有しました。

以前にも Amazon Location Service のリソースを CDK で実装する方法について記事を書いたことがあったのですが、その際は L1 Construct を使用していたのでリソース名の自動命名ができないなど不便な点がありましたが、Alpha module ではそれも解消されていてより使いやすくなりました。

https://dev.classmethod.jp/articles/creating-amazon-location-service-resources-with-aws-cdk

地理空間データや位置情報を活用したアプリケーションを開発する際に Amazon Location Service がますます選択肢としやすくなったのではないでしょうか。

以上

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.