API キーを使用してアプリケーションへの認証されていないゲストアクセスを許可する
アプリケーションで Amazon Location Service API を呼び出すときは、通常、API 呼び出しを行う権限を持つ認証済みユーザーとしてこの呼び出しを行います。ただし、アプリケーションのすべてのユーザーを認証したくないケースも場合もあるでしょう。例えば、会社の所在地を表示する Web アプリケーションを、ログインしているかどうかに関係なく、Web サイトを使用するすべてのユーザーが利用できるようにしたい場合があります。この場合API キーを使ってAPI 呼び出しを行うという方法もあります。
API キーは、AWS アカウント内の特定の Amazon Location Service リソースと、それらのリソースに対して実行できる特定のアクションに関連付けられたキー値です。アプリケーションの API キーを使用して、それらのリソースの Amazon Location API を認証なしで呼び出すことができます。例えば、API キーをマップリソース MyMap とGetMap*
アクションに関連付けると、その API キーを使用するアプリケーションはそのリソースで作成されたマップを表示できるようになり、アカウントの他の使用量と同様にアカウントに請求されます。同じ API キーを使用しても、マップリソースの変更または更新の権限は付与されません。リソースの使用のみが許可されます。
注記
API キーはマップ、配置、ルートリソースでのみ使用でき、これらのリソースを変更または作成することはできません。アプリケーションが他のリソースにアクセスしたり、認証されていないユーザーがアクションにアクセスしたりする必要がある場合は、Amazon Cognito を使用して API キーと一緒に、または代わりに API キーへのアクセスを提供することができます。詳細については、「Amazon Cognito を使用してアプリケーションへの認証されていないゲストアクセスを許可する」を参照してください。
API キーには、AWS アカウント 内の 1 つ以上のリソースへのアクセスを許可するプレーンテキストの値が含まれています。API キーをコピーしたユーザーは、同じリソースにアクセスできます。これを回避するには、API キーを作成するときに API キーの使用ができるドメインを指定することができます。これらのドメインはリファラーと呼ばれます。必要に応じて、API キーの有効期限を設定して短期間の API キーを作成することもできます。
トピック
API キーと Amazon Cognito の比較
API キーと Amazon Cognito は、似たようなシナリオでも同じような方法で使用されます。では、なぜ一方を他方よりも優先して使用するのでしょうか。以下のリストでは、その 2 つの違いをいくつか紹介します。
-
API キーは、マップ、プレース、ルートリソースでのみ、また特定のアクションでのみ利用可能です。Amazon Cognito は、ほとんどの Amazon Location Service API へのアクセスを認証するために使用されます。
-
API キーを使用したマップリクエストのパフォーマンスは、通常、Amazon Cognito を使用した同様のシナリオよりも高速です。認証が簡単なため、短期間に同じマップタイルを再度取得したときに、サービスとキャッシュされたリクエストへのラウンドトリップが少なくなります。
-
Amazon Cognito では、Amazon Cognito フェデレーション ID を使用して、独自の認証プロセスを使用したり、複数の認証方法を組み合わせたりできます。詳細については、「Amazon Cognito 開発者ガイド」の「Getting Started with Federated Identities」を参照してください。
API キーを作成する
API キーを作成し、AWS アカウントの 1 つまたは複数のリソースに関連付けることができます。
API キーは、Amazon Location Service コンソール、AWS CLI、または Amazon Location API を使用して作成することができます。
API キーを使用して Amazon Location API を呼び出す
API キーを作成したら、そのキーバリューを使用してアプリケーションの Amazon Location API を呼び出すことができます。
API キーをサポートする API には、API キーバリューを取る追加パラメータがあります。例えば、GetPlace
API を呼び出す場合、以下のようにキーパラメータを入力できます
GET /places/v0/indexes/
IndexName
/places/PlaceId
?key=KeyValue
この値を入力すれば、通常のように AWS Sig v4 で API コールを認証する必要はありません。
JavaScript 開発者の場合は、Amazon Location JavaScript 認証ヘルパー を使用して API キーを使用した API オペレーションの認証に役立てることができます。
モバイルデベロッパーの場合は、以下の Amazon Location Mobile Authentication SDK を使用できます。
AWS CLIユーザーの場合、Sig v4 での署名を避けるため、--key
パラメータを使用する場合は--no-sign-request
パラメータも使用する必要があります。
注記
Amazon Location Service への呼び出しに key
と AWS Sig v4 署名の両方を含めると、API キーのみが使用されます。
API キーを使用してマップをレンダリングする
API キー値を使用すると、MapLibre を使用してアプリケーションでマップをレンダリングすることができます。これは、ユーザーが直接呼び出す他の Amazon Location API の API キーを使用する場合とは少し異なります。MapLibre がこれらの呼び出しを自動的に行うからです。
次のサンプルコードは、API キーを使用して MapLibre GL JS マップコントロールを使用して単純なウェブページにマップをレンダリングする方法を示しています。このコードが正しく動作するためには、v1.public.your-api-key-value
、us-east-1
、ExampleMap
の各文字列を、AWS アカウントと一致する値に置き換えてください。
<!-- index.html --> <html> <head> <link href="https://unpkg.com/maplibre-gl@1.14.0/dist/maplibre-gl.css" rel="stylesheet" /> <style> body { margin: 0; } #map { height: 100vh; } </style> </head> <body> <!-- Map container --> <div id="map" /> <!-- JavaScript dependencies --> <script src="https://unpkg.com/maplibre-gl@1.14.0/dist/maplibre-gl.js"></script> <script> const apiKey = "
v1.public.your-api-key-value
"; // API key const region = "us-east-1
"; // Region const mapName = "ExampleMap
"; // Map name // URL for style descriptor const styleUrl = `https://maps.geo.${region}.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor?key=${apiKey}`; // Initialize the map const map = new maplibregl.Map({ container: "map", style: styleUrl, center: [-123.1187, 49.2819], zoom: 11, }); map.addControl(new maplibregl.NavigationControl(), "top-left"); </script> </body> </html>
API キーの有効期間を管理する
無期限に機能する API キーの作成ができます。ただし、一時的な API キーを作成したり、API キーを定期的にローテーションしたり、既存の API キーを取り消したりする場合は、API キーの有効期限を使用できます。
新しい API キーを作成したり、既存の API キーを更新したりするときに、その API キーの有効期限を設定することができます。
-
API キーの有効期限が切れると、キーは自動的に無効化されます。非アクティブなキーはマップリクエストには使用できなくなります。
-
API キーは、非アクティブ化してから 90 日後に削除することができます。
-
まだ削除していない非アクティブなキーがある場合は、有効期限を将来の時間に更新することで復元できます。
-
永久キーを作成するには、有効期限を削除することができます。
-
過去 7 日以内に使用された API キーを非アクティブ化しようとすると、変更の確認を求めるメッセージが表示されます。Amazon Location Service API またはAWS CLIを使用している場合は、
ForceUpdate
パラメータを true に設定しない限り、エラーが表示されます。