使用 Amazon Cognito 在您的檔案中設定 AWS 登入資料 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Cognito 在您的檔案中設定 AWS 登入資料

建議使用 Amazon Cognito 來獲得您 Web 和行動應用程式的 AWS 登入資料。Amazon Cognito 可協助您避免在檔案上直接寫入 AWS 登入資料。這會使用 AWS Identity and Access Management (IAM) 角色來為應用程式的已驗證及未驗證使用者生成暫時性的登入資料。

例如,若要設定您的 JavaScript 檔案以使用 Amazon Cognito 未驗證角色來存取 Amazon DynamoDB Web 服務,請遵循以下方法:

設定登入資料來與 Amazon Cognito 互動
  1. 建立允許未驗證身分的 Amazon Cognito 身分集區。

    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 的檔案。使用在上一個步驟取得的 IdentityPoolId,來取代身分集區 ID (us-west-2:12345678-1ab2-123a-1234-a12345ab12)。

    { "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. Cognito_DynamoPoolUnauth 角色新增至 DynamoPool 身分集區。指定的格式是 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 登入資料。並依照上一步的程式碼修改 IdentityPoolIdRoleArn

    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 Web 服務執行您的 JavaScript 程式。如需詳細資訊,請參閱《AWS SDK for JavaScript 入門指南》中的在 Web 瀏覽器設定登入資料