如何排查 Amazon Cognito 中导入过程的常见错误?

2 分钟阅读
0

我想排查 Amazon Cognito 中导入过程的常见错误。

简短描述

以下是与 Amazon Cognito 导入过程相关的常见错误:

用户迁移 AWS Lambda 触发器导入错误:

  • AccessDeniedException
  • UserCodeSyntaxError
  • ResourceNotFoundException
  • ImportModuleError

CSV 文件导入错误:

  • 意外的标头
  • 失败/跳过的用户
  • 导入作业已过期
  • 无效的属性值
  • CloudWatch Logs 角色缺少权限

解决方法

您使用 CSV 文件或 Lambda 触发器在 Amazon Cognito 中导入时,错误会记录在 Amazon CloudWatch Logs 中。在您的 AWS 账户中查看并搜索这些错误。

用户迁移 Lambda 触发器导入错误

AccessDeniedException:

Lambda 角色缺少执行 Amazon Cognito 操作的 AWS Identity and Access Management(IAM)权限时,就会记录此错误。例如,AdminInitiateAuthAccessDeniedException 错误类似如下内容:

An error occurred (AccessDeniedException) when calling the AdminInitiateAuth operation: User: arn:aws:sts::ACCOUNT_ID:assumed-role/TestingMigration-role/TestingMigration is not authorized to perform: cognito-idp:AdminInitiateAuth on resource: arn:aws:cognito-idp:eu-central-1:ACCOUNT_ID:userpool/eu-central-1_YYYYOOOO
    because no identity-based policy allows the cognito-idp:AdminInitiateAuth action

要解决 AccessDeniedException 错误,请执行以下操作:

  1. 打开 IAM console(IAM 控制台)。
  2. 在导航窗格中,选择 Roles(角色)并找到 Lambda 执行角色。
  3. 选择 IAM 角色的 Permissions(权限)选项卡。
  4. 展开权限策略,查看与用户关联的权限。
  5. 确保该策略包含以下参数:
    Actions(操作)列表中的 cognito-idp:AdminInitiateAuth
    EffectAllow
  6. 如果策略不包含这些参数,请更新策略以包含这些参数。
    -或者-
    创建遵循参数的新策略,并将该策略附加到 IAM 角色。有关更多信息,请参阅编辑客户托管式策略(控制台)

UserCodeSyntaxError:

在您的 Lambda 代码中发现代码问题时,会记录此错误。例如,缩进问题。

UserCodeSyntaxError 错误类似如下内容:

[ERROR] Runtime.UserCodeSyntaxError: Syntax error in module 'lambda_function': unexpected indent

要解决此错误,请务必检查代码中使用的语法是否正确。

ResourceNotFoundException:

在您的 AWS 账户或 AWS 区域中找不到 Lambda 代码中引用的资源时,就会记录此错误。例如,Amazon Cognito 应用程序客户端。

ResourceNotFoundException 错误类似如下内容:

[ERROR] ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the AdminInitiateAuth operation: User pool client 52rXXXXXXXXXXXXXXXXXXge does not exist.

要解决此错误,请确认您的 AWS 账户和区域中存在有问题的资源。然后,确认您正确指定了 Lambda 代码中的 ID、名称或 Amazon 资源名称(ARN)。

ImportModuleError:

您尝试导入或引用 Lambda 代码中不存在的模块时,会记录此错误。

ImportModuleError 错误类似如下内容:

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named lambda_function

要解决此错误,请确认您尝试在代码中导入的模块不包含任何拼写错误或未引用不存在的模块。

CSV 文件导入错误

意外的标头:

您的 CSV 文件中指定的标头出现缺失或格式错误的问题时,就会记录此错误。

意外的标头错误类似如下内容:

The header in the CSV file does not match the expected headers. Use the GetCSVHeader API to get the expected headers.

要解决此错误,请执行以下操作:

通过运行以下命令获取正确标头的列表,其中 USER_POOL_ID 是您要将用户导入的用户群体:

aws cognito-idp get-csv-header --user-pool-id "USER_POOL_ID"

您也可以使用 Amazon Cognito 控制台下载 CSV 文件标头。有关更多信息,请参阅 Downloading the CSV file header (console)(下载 CSV 文件标头(控制台))。

失败或跳过的用户:

出现用户引用重复的问题或 CSV 文件中缺少必需字段时,就会记录此错误。例如,email_verifiedcognito:mfa_enabled

失败或跳过的用户错误类似如下内容:

Too many users have failed or been skipped during the import.

要解决此错误,请确保从 CSV 文件中删除重复的用户并指定了必需的属性。有关更多信息,请参阅创建用户导入 CSV 文件

导入作业已过期:

创建作业,但在 24 至 48 小时内未启动作业时,会记录此错误。

导入作业已过期错误类似如下内容:

The user import job has expired.

要解决此问题,请使用以下命令启动用户导入作业:

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

您也可以使用 Amazon Cognito 控制台启动作业。有关更多信息,请参阅从 CSV 文件导入用户(控制台)

**注意:**每个账户一次只能激活一个导入作业。

无效的属性值:

此错误表示您的 CSV 文件中指定的属性值无效。

无效的属性值错误类似如下内容:

The User Record contains an invalid value for [attribute].

要解决此问题,请检查指定的属性值是否有效。有关属性值的更多信息,例如电话号码的正确格式,请参阅用户群体属性

CloudWatch Logs 角色缺少权限:

此错误表示为 CSV 导入过程指定的 CloudWatch Logs 角色存在以下某种问题:

  • 缺少权限,诸如创建日志组或流。
  • 信任关系策略的主体无效。

CloudWatch Logs 角色缺少权限错误类似如下内容:

配置的 CloudWatch Logs 角色缺少权限或其信任策略无效。

要解决此问题,请确保您拥有对 CloudWatch 操作的身份权限。另外,请确保允许 cognito-idp.amazonaws.com 作为信任关系策略中的服务主体。有关更多信息,请参阅 Creating the CloudWatch Logs IAM role(创建 CloudWatch Logs IAM 角色)。


AWS 官方
AWS 官方已更新 1 年前