Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

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

本部分介绍如何使用 Amazon Cognito 控制台和 AWS Command Line Interface 创建并运行用户池导入任务。

使用 Amazon Cognito 控制台从 .csv 文件导入用户

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

使用 Amazon Cognito 控制台从 .csv 文件导入用户的步骤

  1. 选择 Create import job

  2. 键入 Job name。任务名称可以包含大写和小写字母 (a-z、A-Z)、数字 (0-9) 和以下特殊字符:+ = , . @ 和 -.

  3. 如果这是您首次创建用户导入任务,则 AWS 管理控制台 将自动为您创建 IAM 角色。否则,您可以从 IAM Role 列表中选择现有角色,也可以让 AWS 管理控制台为您创建新角色。

  4. 选择 Upload CSV 并选择要从中导入用户的 .csv 文件。

  5. 选择 Create job

  6. 要启动任务,请选择 Start

使用 AWS 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 } }