Amazon Location Service の API キー機能が GA しました

2023.07.09

いわさです。

半年近く前に Amazon Location Service で API キーの機能がプレビュー提供されていました。

しばらく音沙汰がなかったですが、先日?本日? GA していました。

アップデートアナウンスはありませんが、マネジメントコンソールや AWS CLI/SDK からも利用可能で公式ドキュメントも更新されています。
確認したところ今回の GA にあわせてちょっと機能もアップデートされてました。

ジオコーディングとルート計算でも API キーが使えるようになった

API キー機能は、プレビュー時にはマップ(Maps)でのみ利用可能でしたが、今回の GA に併せて、ジオコーディング(Places)とルート計算ツール(Routes)でも API キーがサポートされました。
マップと同様に各機能の AP keys タブが追加されており、別で管理されている API キーの関連付けが出来るようになっています。

API キーのリソース編集からも既存の各サービスリソースを関連付け出来ます。

なお、ジオフェンスやトラッキングサービスについては API キーはサポートされていませんでした。

許可するアクションを設定出来るようになった

今回新しく API キー毎に「アクション」設定が出来るようになりました。
キーとリソースを関連付けした上で、さらに特定のアクションに絞ることが出来ます。

例えばジオコーディングであれば「SearchPlace~ 系の API は許可しないが GetPlace だけ許可するキー」のような使い方が出来ます。

サービスごとに次のアクションの単位それぞれ許可設定出来ます。

  • Maps
    • GetMap*
  • Places
    • SearchPlaceIndexForText
    • SearchPlaceIndexForPosition
    • SearchPlaceIndexForSuggestions
    • GetPlace
  • Routes
    • CalculateRoute
    • CalculateRouteMatrix

ジオコーディングで使ってみた

プレビュー時にはマップで使ってみたので、今回はジオコーディング機能で使ってみたいと思います。
AWS CLI から呼び出しを行おうと思いますが、入力に API キーを受け付ける必要があるので事前に AWS CLI を更新しておく必要があります。(v1.29.0+, v2.13.0+)

作成した API キーをインデックスに関連付けし、適当にアクションを許可します。
今回はSearchPlaceIndexForTextを使ってみようと思います。

まず、許可されていない IAM ユーザーで API キーなしでアクセスすると次のようになります。

% aws location search-place-index-for-text --index-name explore.place --text "札幌" --max-results 2 

An error occurred (UnrecognizedClientException) when calling the SearchPlaceIndexForText operation: The security token included in the request is invalid.

続いて、先程失敗したユーザーで API キーを指定してみます。
keyオプションで指定します。

% aws location search-place-index-for-text --index-name explore.place --text "札幌" --max-results 2 --key "v1.public.aaaaaaaaa.bbbbbbbbbbbb"
{
    "Results": [
        {
            "Place": {
                "Categories": [
                    "PointOfInterestType",
                    "School"
                ],
                "Country": "JPN",
                "Geometry": {
                    "Point": [
                        141.378351226,
                        43.094976673
                    ]
                },
                "Interpolated": false,
                "Label": "北海道札幌市東区札幌",
                "Municipality": "東区",
                "Region": "北海道"
            },
            "Relevance": 1
        },
        {
            "Place": {
                "Categories": [
                    "PointOfInterestType"
                ],
                "Country": "JPN",
                "Geometry": {
                    "Point": [
                        141.426564283,
                        43.07919936
                    ]
                },
                "Interpolated": false,
                "Label": "北海道札幌市白石区札幌",
                "Municipality": "白石区",
                "Region": "北海道",
                "SupplementalCategories": [
                    "Other Travel"
                ]
            },
            "Relevance": 1
        }
    ],
    "Summary": {
        "DataSource": "Esri",
        "MaxResults": 2,
        "ResultBBox": [
            141.378351226,
            43.07919936,
            141.426564283,
            43.094976673
        ],
        "Text": "札幌"
    }
}

SearchPlaceIndexForTextで結果を取得することが出来ましたね。

さいごに

本日は Amazon Location Service の API キー機能が GA したので変更点を確認し、新しくサポートされたリソースで使ってみました。

クライアントアプリケーションの都合で API キーを使いたいという声を私も聞いたことがあります。
正式リリースとなったので、これからはプロダクト利用時にも提案出来そうでありがたいですね。