本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建并运行 Amazon Cognito 用户池导入任务
本部分介绍如何使用 Amazon Cognito 控制台和 Amazon Command Line Interface(Amazon CLI)创建并运行用户群体导入作业。
从 CSV 文件导入用户(控制台)
以下过程介绍了如何从 CSV 文件导入用户。
从 CSV 文件导入用户(控制台)
-
转到 Amazon Cognito 控制台
。系统可能会提示您输入 Amazon 凭证。 -
选择 User Pools(用户池)。
-
从列表中选择现有用户池。
-
选择 Users(用户)选项卡。
-
在 Import users(导入用户)部分中,选择 Create an import job(创建导入作业)。
-
在 Create import job(创建导入作业)页面上,输入 Job name(作业名称)。
-
选择 Create a new IAM role(创建新的 IAM 角色)或者 Use an existing IAM role(使用现有 IAM 角色)。
-
如果您选择 Create a new IAM role(创建新的 IAM 角色),请输入新角色的名称。Amazon Cognito 将自动创建具有正确权限和信任关系的角色。创建导入作业的 IAM 主体必须具有创建 IAM 角色的权限。
-
如果您选择 Use an existing IAM role(使用现有 IAM 角色),请从 IAM role selection(IAM 角色选择)下的列表中选择一个角色。此角色必须具有 创建 CloudWatch Logs IAM 角色 中所述的权限和信任策略。
-
-
选择 Create job(创建作业)可提交作业,但稍后再启动。选择 Create and start job(创建并启动作业)可提交您的作业并立即启动。
-
如果您创建了作业但未启动作业,则可以稍后再启动。在 Users(用户)选项卡下的 Import users(导入用户)中,选择导入作业,然后选择 Start(开始)。您也可以从 Amazon SDK 提交 StartUserImportJob API 请求。
-
在 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 } }