选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

对 HTTP API Lambda 集成的问题进行故障排查

聚焦模式
对 HTTP API Lambda 集成的问题进行故障排查 - Amazon API Gateway

以下内容为您在将 AWS Lambda 集成 与 HTTP API 结合使用时可能遇到的错误和问题提供故障排除建议。

问题:我的 API 与 Lambda 集成返回 {"message":"Internal Server Error"}

要解决此内部服务器错误,请将$context.integrationErrorMessage日志记录变量添加到日志格式中,然后查看 HTTP API 的日志。为此,请执行以下操作:

要使用 创建日志组AWS Management Console
  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 选择日志组

  3. 选择创建日志组

  4. 输入日志组名称,然后选择创建

  5. 记下您的日志组的 Amazon 资源名称 (ARN)。ARN 格式为 arn:aws:logs:region: account-id:log-group:log-group-name。您需要日志组 ARN 才能为 HTTP API 启用访问日志记录。

添加 $context.integrationErrorMessage 日志记录变量
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择您的 HTTP API。

  3. 监控下,选择日志记录

  4. 选择 API 的一个阶段。

  5. 选择编辑,然后启用访问日志记录。

  6. 日志目标输入您在上一步中创建的安全组的 ARN。

  7. 对于日志格式,选择 CLF。API Gateway 创建一个示例日志格式。

  8. $context.integrationErrorMessage 添加到日志格式的末尾。

  9. 选择保存

查看 API 的日志
  1. 生成日志。使用浏览器或 curl 调用您的 API。

    $curl https://api-id.execute-api.us-west-2.amazonaws.com/route
  2. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  3. 选择您的 HTTP API。

  4. 监控下,选择日志记录

  5. 选择您启用了日志记录的 API 阶段。

  6. 选择查看 CloudWatch 中的日志

  7. 选择最新的日志流以查看 HTTP API 的日志。

  8. 您的日志条目应类似于以下内容:

    CloudWatch Logs 日志条目,显示来自 Lambda 的集成错误消息。

因为我们已将 $context.integrationErrorMessage 添加到日志格式,所以我们在日志中会看到一条总结此问题的错误消息。

您的日志可能包含不同的错误消息,以指示您的 Lambda 函数代码存在问题。在这种情况下,检查您的 Lambda 函数代码,并验证您的 Lambda 函数以所需格式返回响应。如果您的日志不包含错误消息,请在日志格式中添加 $context.error.message$context.error.responseType 以获取更多信息以帮助进行故障排除。

在这种情况下,日志显示 API Gateway 不具备调用 Lambda 函数所需的权限。

当您在 API Gateway 控制台中创建 Lambda 集成时,API Gateway 会自动配置权限以调用 Lambda 函数。当您使用 AWS CLI、AWS CloudFormation 或开发工具包创建 Lambda 集成时,您必须授予 API Gateway 调用函数的权限。以下 add-permission 命令向不同的 HTTP API 路由授予调用 Lambda 函数的权限。

例 示例 – 针对 HTTP API 的 $default 阶段和 $default 路由
aws lambda add-permission \ --function-name my-function \ --statement-id apigateway-invoke-permissions \ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/\$default/\$default"
例 示例 – 针对 HTTP API 的 prod 阶段和 test 路由
aws lambda add-permission \ --function-name my-function \ --statement-id apigateway-invoke-permissions \ --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-west-2:123456789012:api-id/prod/*/test"

在 Lambda 控制台的权限选项卡中确认函数策略

尝试再次调用您的 API。您应该看到 Lambda 函数的响应。

下一主题:

JWT 授权方

上一主题:

故障排除
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。