DynamoDB の Amazon Cognito を使用した AWS 認証情報の設定
ウェブおよびモバイルアプリケーション用の AWS 認証情報を取得する際には、Amazon Cognito を使用することをお勧めします。Amazon Cognito を使用すると、AWS 認証情報をファイル上でハードコーディングする必要がありません。AWS Identity and Access Management (IAM) ロールを使用して、アプリケーションの認証されたユーザーと認証されていないユーザーのために一時的な認証情報が生成されます。
たとえば、Amazon Cognito の認証されていないロールを使用して Amazon DynamoDB ウェブサービスにアクセスするように JavaScript ファイルを設定するには、次の手順を実行します。
Amazon Cognito と統合する認証情報を設定するには
-
認証されていない 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" }
-
次のポリシーを
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" } } } ] }
-
以前のポリシーを予期する IAM ロールを作成します。このようにして、Amazon Cognito は
Cognito_DynamoPoolUnauth
ロールを引き受けられる信頼済みエンティティになります。aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
-
管理ポリシー (
AmazonDynamoDBFullAccess
) をアタッチして、DynamoDB へのフルアクセスをCognito_DynamoPoolUnauth
ロールに許可します。aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \ --role-name Cognito_DynamoPoolUnauth
注記
または、DynamoDB へのきめ細かなアクセスを許可することもできます。詳細については、「詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用」を参照してください。
-
IAM ロールの Amazon リソースネーム (ARN) を取得してコピーします。
aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
-
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
-
ファイルで 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 入門ガイド」の「ウェブブラウザ内で認証情報を設定する」を参照してください。