对自定义身份提供商问题进行故障排除 - AWS Transfer Family

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

对自定义身份提供商问题进行故障排除

本节介绍了 Transfer Family 中与自定义身份提供者相关的问题的可能解决方案。

对 API Gateway 集成错误进行故障排除

描述

用户无法使用您的 Transfer Family 服务器进行身份验证,并且在测试您的身份提供商时,您会看到以下错误:

{ "Response": "", "StatusCode": 500, "Message": "Internal server error" }

原因

API Gateway 集成错误可能由以下原因导致:

  • API Gateway 配置不正确

  • 未正确处理 Lambda 函数错误

  • API Gateway 和 Lambda 之间的权限问题

  • 来自 Lambda 函数的响应格式不正确

解决方案

要排除 API Gateway 集成错误,请执行以下操作:

  1. 查看您的 Lambda 函数日志,了解详细的错误信息:

    • 在 CloudWatch 控制台中,导航到日志组 >/aws/lambda/your-function-nam e

    • 查找指出根本原因的错误消息或堆栈跟踪

  2. 验证您的 Lambda 函数返回的响应格式是否正确:

    { "Role": "arn:aws:iam::123456789012:role/TransferUserRole", "HomeDirectory": "/mybucket/home/username" }
  3. 为 API Gateway 启用详细 CloudWatch 日志:

    • 在 API Gateway 控制台中,选择你的 API,然后选择阶段

    • 选择您的阶段,然后在 “日志/跟踪” 下启用 “日志” CloudWatch

    • 将日志级别设置为 “错误” 或 “信息”

  4. 直接测试您的 API Gateway 终端节点:

    curl -X POST https://your-api-id.execute-api.region.amazonaws.com/prod/servers/your-server-id/users/username/config \ -H "Content-Type: application/json" \ -d '{"Password": "password"}'
  5. 验证 API Gateway 和 Lambda 之间的权限:

    • 确保 API Gateway 有权调用您的 Lambda 函数

    • 检查您的 Lambda 函数的执行角色是否具有必要的权限

对 Lambda 函数超时进行故障排除

描述

当用户尝试使用自定义身份提供商向您的 Transfer Family 服务器进行身份验证时,他们会遇到长时间的延迟,然后是身份验证失败。在您的 Lambda 日志中,您会看到超时错误。

原因

用于自定义身份提供商的 Lambda 函数的默认超时时间为 3 秒。如果您的身份验证逻辑花费的时间超过此超时时间(例如,查询外部数据库或对第三方身份提供商进行 API 调用时),则该函数将超时,身份验证将失败。

解决方案

要解决 Lambda 超时问题,请执行以下操作:

  1. 增加 Lambda 函数的超时时间:

    • 在 Lambda 控制台中,导航到您的函数并选择配置选项卡

    • 在 “常规配置” 下,单击 “编辑”

    • 增加超时值(对于身份验证功能,建议最多 15 秒)

  2. 优化您的 Lambda 函数代码:

    • 使用连接池进行数据库查询

    • 为经常访问的数据实现缓存

    • 在身份验证期间尽量减少外部 API 调用

  3. 考虑使用 Lambda 预配置并发来消除冷启动:

    aws lambda put-provisioned-concurrency-config \ --function-name my-authentication-function \ --qualifier prod \ --provisioned-concurrent-executions 5
  4. 使用 CloudWatch 指标监控 Lambda 性能并为持续时间阈值设置警报

解决持续的 Lambda 超时问题

描述

使用 Lambda 函数进行身份验证时,用户会遇到持续的超时问题。

原因

Lambda 无法访问用于进行身份验证的相应 AWS 服务(例如 DynamoDB、Secrets Manager 或其他身份提供商)。

解决方案

验证子网是否可以访问 AWS 服务。或者,如果连接到互联网身份提供商(例如 Okta),请验证 Lambda 函数的子网是否可以通过 NAT 网关访问互联网

排除KeyError异常问题

描述

在你的 Transfer Family 日志条目中,你会注意到 KeyError “” 异常。

原因

最有可能的原因是用户或identity_provider记录格式错误或缺少必填字段。

解决方案

查看位于ERRORS日志组中的/aws/transfer/your-server-id日志以获取线索。