Amazon Cognito を使用して認証する - Amazon Location Service

Amazon Cognito を使用して認証する

Amazon Cognito 認証は、フロントエンド SDK リクエストで AWS Identity and Access Management (IAM) ユーザーを直接使用する代わりに使用できます。

Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。Amazon Cognito の認証されていない アイデンティティプールを Amazon Location と組み合わせて使用すると、スコープが限定された一時的なAWS 認証情報をアプリケーションから取得できます。

詳細については、「Amazon Cognito デベロッパーガイド」の「ユーザープールの使用を開始する」を参照してください。

以下の場合は、この認証形式を使用します。

  • 認証されていないユーザー — 匿名ユーザーがいるウェブサイトがある場合は、Amazon Cognito アイデンティティプールを使用できます。

    詳細については、「Amazon Cognito を使用して認証する」セクションを参照してください。

  • 独自の認証 — 独自の認証プロセスを使用する場合や、複数の認証方法を組み合わせたい場合は、Amazon Cognito フェデレーテッド ID を使用できます。

    詳細については、「Amazon Cognito デベロッパーガイド」の「フェデレーテッドアイデンティティの使用開始」を参照してください。

Amazon Cognito と Amazon Location Service を使用する

以下のアクションで、認証されていない ID ロールに関連付けられた AWS Identity and Access Management (IAM) ポリシーを使用できます。

Maps

Maps アクションのリスト

  • geo-maps:GetStaticMap

  • geo-maps:GetTile

注記

上記のアクションのリソース名は次のとおりです。

arn:aws:geo-maps:region::provider/default
Places

Places アクションのリスト:

  • geo-places:Geocode

  • geo-places:ReverseGeocode

  • geo-places:SearchNearby

  • geo-places:SearchText

  • geo-places:Autocomplete

  • geo-places:Suggest

  • geo-places:GetPlace

注記

上記のアクションのリソース名は次のとおりです。

arn:aws:geo-places:region::provider/default
Routes

Routes アクションのリスト:

  • geo-routes:CalculateRoutes

  • geo-routes:CalculateRouteMatrix

  • geo-routes:CalculateIsolines

  • geo-routes:OptimizeWaypoints

  • geo-routes:SnapToRoads

注記

上記のアクションのリソース名は次のとおりです。

arn:aws:geo-routes:region::provider/default
Geofences and Trackers

Geofences および Trackers アクションのリスト

  • geo:GetGeofence

  • geo:ListGeofences

  • geo:PutGeofence

  • geo:BatchDeleteGeofence

  • geo:BatchPutGeofence

  • geo:BatchEvaluateGeofences

  • geo:GetDevicePosition*

  • geo:ListDevicePositions

  • geo:BatchDeleteDevicePositionHistory

  • geo:BatchGetDevicePosition

  • geo:BatchUpdateDevicePosition

注記

上記のアクションのリソース名は次のとおりです。

arn:aws:geo:region:accountID:tracker/ExampleTracker
Previous version

以前のバージョンのアクションのリスト:

  • geo:GetMap*

  • geo:SearchPlaceIndexForText

  • geo:SearchPlaceIndexForPosition

  • geo:GetPlace

  • geo:CalculateRoute

  • geo:CalculateRouteMatrix

注記

上記のアクションのリソース名は次のとおりです。

マップ

arn:aws:geo:region:accountID:map/ExampleMap

場所

arn:aws:geo:region:accountID:place-index/ExamplePlaceIndex

Routes

arn:aws:geo:region:accountID:route-calculator/ExampleCalculator

Amazon Cognito アイデンティティプールを作成する

Amazon Cognito アイデンティティプールを作成して、認証されていないゲストが、Amazon Cognito コンソール、AWS CLI、またはAmazon Cognito API 経由でアプリケーションにアクセスできるようにすることができます。

重要

作成するプールは、使用している Amazon Location Service リソースと同じ AWS アカウント および AWS リージョンにある必要があります。

Console

Amazon Cognito コンソールを使用して、アイデンティティプールを作成するには

  1. Amazon Cognito コンソールに移動します。

  2. [アイデンティティプールの管理] を選択します。

  3. [新しいアイデンティティプールの作成] を選択し、アイデンティティプールの名前を入力します。

  4. 折りたたみ式の [認証されていない ID] セクションで、[認証されていない ID に対してアクセスを有効にする] を選択します。

  5. [プールの作成] を選択します。

  6. アイデンティティプールで使用する IAM ロールを選択します。

  7. [詳細を表示] を展開します。

  8. [認証されていない ID] に、ロール名を入力します。

  9. [ポリシードキュメントの表示] セクションを展開し、[編集] を選択してポリシーを追加します。

  10. リソースへのアクセスを許可するポリシーを追加します。

    注記

    アクションのリストについては、上の Amazon Cognito と Amazon Location Service を使用する セクションを参照してください。

    { "Version": "2012-10-17", "Statement": [ { Sid": "RoutesReadOnly", Effect": "Allow", Action": [ // add comma separated value from the previous section ], Resource": "value from previous section" } ] }
  11. [許可] を選択してアイデンティティプールを作成します。

ウェブで Amazon Cognito のアイデンティティプールを使用する

次の例では、作成した認証されていないアイデンティティプールを認証情報と交換し、その認証情報を使用して CalculateIsolines を呼び出します。この作業を簡素化するために、この例では Amazon Location の「認証ヘルパーの使用方法」の手順を使用します。これは認証情報の取得と更新の両方の代わりになります。

この例では AWS の SDK for JavaScript v3 を使用します。

import { GeoRoutesClient, CalculateIsolinesCommand , } from "@aws-sdk/client-geo-routes"; // ES Modules import import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; const identityPoolId = "<identity pool ID>"; // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef const authHelper = await withIdentityPoolId(identityPoolId); const client = new GeoRoutesClient({ ...authHelper.getClientConfig(), region: "<region>", // The region containing the identity pool }); const input = { DepartNow: true, TravelMode: "Car", Origin: [-123.12327, 49.27531], Thresholds: { Time: [5, 10, 30], }, }; const command = new CalculateIsolinesCommand(input); const response = await client.send(command); console.log(JSON.stringify(response, null, 2))