DynamoDB の Amazon Cognito を使用した AWS 認証情報の設定 - Amazon DynamoDB

DynamoDB の Amazon Cognito を使用した AWS 認証情報の設定

ウェブおよびモバイルアプリケーション用の 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" }
  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 ロールの Amazon リソースネーム (ARN) を取得してコピーします。

    aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
  6. DynamoPool ID プールに Cognito_DynamoPoolUnauth ロールを追加します。指定するフォーマットは KeyName=string です。ここで KeyNameunauthenticated で、文字列は前のステップで取得したロールの 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 入門ガイド」の「ウェブブラウザ内で認証情報を設定する」を参照してください。