使用 Amazon Cognito 在文件中配置 Amazon 凭证 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon Cognito 在文件中配置 Amazon 凭证

建议使用 Amazon Cognito 获得 Web 和移动应用程序的 Amazon 凭证。Amazon Cognito 避免在文件上硬编码 Amazon 凭证。它使用 Amazon 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 文件。将身份池 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),授予 Cognito_DynamoPoolUnauth 角色对 DynamoDB 的完整访问权限。

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

    或者可以授予对 DynamoDB 的精细访问权限。有关更多信息,请参见使用 IAM 策略条件实现精细访问控制

  5. 获取并复制 IAM 角色 Amazon Resource Name (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 程序。有关更多信息,请参阅 Amazon SDK for JavaScript 入门指南在 Web 浏览器中设置凭证