メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

Amazon Cognito を使用したファイルでの AWS 認証情報の設定

ウェブやモバイルアプリケーションの AWS 証明書を取得する推奨される方法は、Amazon Cognito を使用することです。Amazon Cognito は、ファイルで AWS 認証情報のハードコーディングを避けるうえで有効です。Amazon Cognito は IAM ロールを使用して、アプリケーションの認証されたユーザーと認証されていないユーザーの一時的な認証情報を生成します。

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

  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" }
  2. 次のポリシーを myCognitoPolicy.json という名前のファイルにコピーします。ID プール ID (us-west-2:12345678-1ab2-123a-1234-a12345ab12) を、前のステップで入手した独自の IdentityPoolId を使用して変更します。

    { "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" } } } ] }
  3. 前のポリシーを引き受ける IAM ロールを作成します。このようにして、Amazon Cognito は Cognito_DynamoPoolUnauth ロールを引き受けることができる信頼済みエンティティになります。

    aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
  4. 管理ポリシー (AmazonDynamoDBFullAccess) をアタッチして、DynamoDB サービスへのフルアクセスを Cognito_DynamoPoolUnauth ロールに付与します。

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \ --role-name Cognito_DynamoPoolUnauth

    注記

    または、DynamoDB へのきめ細かなアクセス権を付与できます。詳細については、「詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用」を参照してください。

  5. IAM ロールの ARN を取得してコピーします。

    aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
  6. 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
  7. ファイルで 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 Getting Started Guideの「ウェブブラウザでの認証情報の設定」を参照してください。