

# DynamoDB の Amazon Cognito を使用した AWS 認証情報の設定
<a name="Cognito.Credentials"></a>

ウェブおよびモバイルアプリケーション用の AWS 認証情報を取得する際には、Amazon Cognito を使用することをお勧めします。Amazon Cognito を使用すると、AWS 認証情報をファイル上でハードコーディングする必要がありません。AWS Identity and Access Management (IAM) ロールを使用して、アプリケーションの認証されたユーザーと認証されていないユーザーのために一時的な認証情報が生成されます。

 たとえば、Amazon Cognito の認証されていないロールを使用して Amazon DynamoDB ウェブサービスにアクセスするように JavaScript ファイルを設定するには、次の手順を実行します。

**Amazon Cognito と統合する認証情報を設定するには**

1.  認証されていない ID を許可する Amazon Cognito ID プールを作成します。

   ```
   aws cognito-identity create-identity-pool \
       --identity-pool-name DynamoPool \
       --allow-unauthenticated-identities \
       --output json
   {
       "IdentityPoolId": "us-west-2:12345678-1ab2-123a-1234-a12345ab12",
       "AllowUnauthenticatedIdentities": true,
       "IdentityPoolName": "DynamoPool"
   }
   ```

1.  次のポリシーを `myCognitoPolicy.json` という名前のファイルにコピーします。ID プール ID (*us-west-2:12345678-1ab2-123a-1234-a12345ab12*) を、前のステップで取得した独自の `IdentityPoolId` に置き換えます。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Federated": "cognito-identity.amazonaws.com"
         },
         "Action": "sts:AssumeRoleWithWebIdentity",
         "Condition": {
           "StringEquals": {
             "cognito-identity.amazonaws.com:aud": "us-west-2:12345678-1ab2-123a-1234-a12345ab12"
           },
           "ForAnyValue:StringLike": {
             "cognito-identity.amazonaws.com:amr": "unauthenticated"
           }
         }
       }
     ]
   }
   ```

------

1.  以前のポリシーを予期する IAM ロールを作成します。このようにして、Amazon Cognito は `Cognito_DynamoPoolUnauth` ロールを引き受けられる信頼済みエンティティになります。

   ```
   aws iam create-role --role-name Cognito_DynamoPoolUnauth \
   --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
   ```

1.  管理ポリシー (`AmazonDynamoDBFullAccess`) をアタッチして、DynamoDB へのフルアクセスを `Cognito_DynamoPoolUnauth` ロールに許可します。

   ```
   aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \
   --role-name Cognito_DynamoPoolUnauth
   ```
**注記**  
 または、DynamoDB へのきめ細かなアクセスを許可することもできます。詳細については、「[詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html)」を参照してください。

1.  IAM ロールの Amazon リソースネーム (ARN) を取得してコピーします。

   ```
   aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json 
   ```

1.  `DynamoPool` ID プールに `Cognito_DynamoPoolUnauth` ロールを追加します。指定するフォーマットは `KeyName=string` です。ここで `KeyName` は `unauthenticated` で、文字列は前のステップで取得したロールの ARN です。

   ```
   aws cognito-identity set-identity-pool-roles \
   --identity-pool-id "us-west-2:12345678-1ab2-123a-1234-a12345ab12" \
   --roles unauthenticated=arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth --output json
   ```

1.  ファイルで Amazon Cognito 認証情報を指定します。それに応じて `IdentityPoolId` および `RoleArn` を変更します。

   ```
   AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId: "us-west-2:12345678-1ab2-123a-1234-a12345ab12",
   RoleArn: "arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth"
   });
   ```

 Amazon Cognito 認証情報を使用して、DynamoDB ウェブサービスに対して JavaScript プログラムを実行できます。詳細については、「AWS SDK for JavaScript 入門ガイド」の「[ウェブブラウザ内で認証情報を設定する](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/setting-credentials-browser.html)」を参照してください。