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

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

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

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

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

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

从 .csv 文件导入用户的步骤

  1. 选择创建导入任务

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

  3. 如果这是您首次创建用户导入任务,则Amazon Web Services Management Console将自动为您创建 IAM 角色。否则,您可以从IAM 角色列表,或者让Amazon Web Services Management Console为您创建新角色。

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

  5. 选择创建作业

  6. 要启动任务,请选择开始

导入用户 (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 角色 (Amazon CLI, API)中收到的角色 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命令。

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 } }