创建并运行 Amazon Cognito 用户池导入任务 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建并运行 Amazon Cognito 用户池导入任务

本部分介绍如何使用 Amazon Cognito 控制台和 Amazon Command Line Interface(Amazon CLI)创建并运行用户群体导入作业。

从 CSV 文件导入用户(控制台)

以下过程介绍了如何从 CSV 文件导入用户。

从 CSV 文件导入用户(控制台)
  1. 转到 Amazon Cognito 控制台。系统可能会提示您输入 Amazon 凭证。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池。

  4. 选择 Users(用户)选项卡。

  5. Import users(导入用户)部分中,选择 Create an import job(创建导入作业)。

  6. Create import job(创建导入作业)页面上,输入 Job name(作业名称)。

  7. 选择 Create a new IAM role(创建新的 IAM 角色)或者 Use an existing IAM role(使用现有 IAM 角色)。

    1. 如果您选择 Create a new IAM role(创建新的 IAM 角色),请输入新角色的名称。Amazon Cognito 将自动创建具有正确权限和信任关系的角色。创建导入作业的 IAM 主体必须具有创建 IAM 角色的权限。

    2. 如果您选择 Use an existing IAM role(使用现有 IAM 角色),请从 IAM role selection(IAM 角色选择)下的列表中选择一个角色。此角色必须具有 创建 CloudWatch Logs IAM 角色 中所述的权限和信任策略。

  8. 选择 Create job(创建作业)可提交作业,但稍后再启动。选择 Create and start job(创建并启动作业)可提交您的作业并立即启动。

  9. 如果您创建了作业但未启动作业,则可以稍后再启动。在 Users(用户)选项卡下的 Import users(导入用户)中,选择导入作业,然后选择 Start(开始)。您也可以从 Amazon SDK 提交 StartUserImportJob API 请求。

  10. Users(用户)选项卡下的 Import users(导入用户)中,监控用户导入作业的进度。如果您的作业不成功,则可以选择 Status(状态)值。如需更多详细信息,请选择 View the CloudWatch logs for more details(查看 CloudWatch Logs 以获取详细信息),在 CloudWatch Logs 控制台中查看任意问题。

导入用户(Amazon CLI)

以下 CLI 命令可用于将用户导入到用户池:

  • create-user-import-job

  • get-csv-header

  • describe-user-import-job

  • list-user-import-jobs

  • start-user-import-job

  • stop-user-import-job

要获取这些命令的命令行选项列表,请使用 help 命令行选项。例如:

aws cognito-idp get-csv-header help

创建用户导入任务

创建 CSV 文件后,请通过运行以下 CLI 命令创建用户导入作业,其中,JOB_NAME 是您为作业选择的名称,USER_POOL_ID 是将新用户添加到的用户群体的用户群体 ID,ROLE_ARN 是您在 创建 CloudWatch Logs IAM 角色 中收到的角色 ARN:

aws cognito-idp create-user-import-job --job-name "JOB_NAME" --user-pool-id "USER_POOL_ID" --cloud-watch-logs-role-arn "ROLE_ARN"

响应中返回的 PRE_SIGNED_URL 在 15 分钟内有效。在此之后,它将过期,而您必须创建新的用户导入任务以获取新的 URL。

例 示例响应:
{ "UserImportJob": { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl": "PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

用户导入任务的状态值

在对用户导入命令的响应中,您将看到以下 Status 值当中的其中一个值:

  • Created – 任务已创建但未启动。

  • Pending – 转换状态。您已启动任务,但它尚未开始导入用户。

  • InProgress – 任务已启动,正在导入用户。

  • Stopping – 您已停止任务,但任务尚未停止导入用户。

  • Stopped – 您已停止任务,且任务已停止导入用户。

  • Succeeded – 任务已成功完成。

  • Failed – 任务因错误而停止。

  • Expired – 您创建了一个任务,但未在 24-48 小时内启动任务。与任务关联的所有数据已删除,且任务无法启动。

上传 CSV 文件

使用以下 curl 命令将包含用户数据的 CSV 文件上传到您从 create-user-import-job 命令的响应中获取的预签名 URL。

curl -v -T "PATH_TO_CSV_FILE" -H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL"

在此命令的输出中,查找 "We are completely uploaded and fine" 这一短语。此短语表示文件已成功上传。

描述用户导入任务

要获取用户导入任务的描述,请使用以下命令,其中,USER_POOL_ID 是用户池 ID,JOB_ID 是创建用户导入任务时返回的任务 ID。

aws cognito-idp describe-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
例 示例响应:
{ "UserImportJob": { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl": "PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

在上一示例输出中,PRE_SIGNED_URL 是您上传 CSV 文件的目标 URL。ROLE_ARN 是您创建角色时收到的 CloudWatch Logs 角色 ARN。

列出用户导入任务

要列出用户导入任务,请使用以下命令:

aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 2
例 示例响应:
{ "UserImportJobs": [ { "Status": "Created", "SkippedUsers": 0, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 }, { "CompletionDate": 1470954227.701, "StartDate": 1470954226.086, "Status": "Failed", "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "CompletionMessage": "Too many users have failed or been skipped during the import.", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn":"ROLE_ARN", "FailedUsers": 5, "CreationDate": 1470953929.313 } ], "PaginationToken": "PAGINATION_TOKEN" }

任务按创建日期 (从近到远) 排列。第二项任务之后的 PAGINATION_TOKEN 字符串表示此列表命令还有其他结果。要列出更多结果,请使用 --pagination-token 选项,如下所示:

aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 10 --pagination-token "PAGINATION_TOKEN"

启动用户导入任务

要启动用户导入任务,请使用以下命令:

aws cognito-idp start-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"

每个账户每次只能有一个导入任务处于活动状态。

例 示例响应:
{ "UserImportJob": { "Status": "Pending", "StartDate": 1470957851.483, "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957431.965 } }

停止用户导入任务

要停止正在进行的用户导入任务,请使用以下命令。停止任务后,无法重新启动该任务。

aws cognito-idp stop-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
例 示例响应:
{ "UserImportJob": { "CompletionDate": 1470958050.571, "StartDate": 1470958047.797, "Status": "Stopped", "UserPoolId": "USER_POOL_ID", "ImportedUsers": 0, "SkippedUsers": 0, "JobName": "JOB_NAME", "CompletionMessage": "The Import Job was stopped by the developer.", "JobId": "JOB_ID", "PreSignedUrl":"PRE_SIGNED_URL", "CloudWatchLogsRoleArn": "ROLE_ARN", "FailedUsers": 0, "CreationDate": 1470957972.387 } }