

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Cognito を使用して認証する
<a name="authenticating-using-cognito"></a>

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

Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。アプリケーションがスコープダウンされた一時的な AWS 認証情報を取得する方法として、Amazon Location で Amazon Cognito の認証されていない ID プールを使用できます。

詳細については、「*Amazon Cognito デベロッパーガイド*」の「[ユーザープールの使用を開始する](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-user-pools.html)」を参照してください。

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

  詳細については、「[Amazon Cognito を使用して認証する](#authenticating-using-cognito)」セクションを参照してください。
+ **独自の認証** — 独自の認証プロセスを使用する場合や、複数の認証方法を組み合わせたい場合は、Amazon Cognito フェデレーテッド ID を使用できます。

  詳細については、「*Amazon Cognito デベロッパーガイド*」の「[フェデレーテッドアイデンティティの使用開始](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html)」を参照してください。

## Amazon Cognito と Amazon Location Service を使用する
<a name="cognito-and-location"></a>

認証されていない 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
```
**ルート**  

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

------

## Amazon Cognito アイデンティティプールを作成する
<a name="cognito-create-user-pool"></a>

Amazon Cognito ID プールを作成して、Amazon Cognito コンソール、、または Amazon CognitoAmazon Cognito APIs を使用して AWS CLI、認証されていないゲストがアプリケーションにアクセスできるようにします。

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

------
#### [ Console ]

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

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)に移動します。

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

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

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

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

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

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

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

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

1. リソースへのアクセスを許可するポリシーを追加します。
**注記**  
アクションのリストについては、上の [Amazon Cognito と Amazon Location Service を使用する](#cognito-and-location) セクションを参照してください。

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
     Sid": "RoutesReadOnly",
     Effect": "Allow",
     Action": [
           // add comma separated value from the previous section
         ],
     Resource": "value from previous section"
       }
     ]
   }
   ```

1. **[許可]** を選択してアイデンティティプールを作成します。

------

## ウェブで Amazon Cognito のアイデンティティプールを使用する
<a name="identity-pool-js"></a>

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

この例では、 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))
```