【问题标题】:Create an api in api gateway to invoke a lambda function在 api gateway 中创建一个 api 来调用一个 lambda 函数
【发布时间】:2020-09-12 20:27:38
【问题描述】:

我正在处理一个项目并尝试使用 API Gateway 来调用 lambda 函数。 lambda 函数用于更新 DynamoDB 项目。 DynamoDB 表用于保持网页访问者的运行计数。我需要创建一个 API 来调用 lambda 函数,但我不确定如何创建 API。感谢您提供任何帮助。

【问题讨论】:

    标签: amazon-web-services api aws-lambda amazon-dynamodb api-gateway


    【解决方案1】:

    一般步骤是:

    1. 在 API Gateway 和您的 Lambda 函数之间创建 AWS_PROXY 集成。这方面的示例在 AWS 教程中:Set up Lambda proxy integrations in API GatewaTutorial: Build a REST API with HTTP proxy integration

    2. 向您的函数添加/修改执行角色,使其能够访问 DynamoDB。这在 AWS 教程中有示例:Using AWS Lambda with Amazon DynamoDB

    3. 测试 API。可以直接在 API 网关控制台中完成,也可以使用 curlPostman 等外部工具完成。

    【讨论】:

    • 感谢您的回复。我的 Lambda 函数工作正常。当我从控制台手动执行它时,我可以看到 DynamoDB 中的计数增加,这正是我想要它做的。当我转到 API Gateway 并创建它时,我运行测试并获得 200 状态,但响应为空。我需要做什么才能从 Lambda 函数返回相同的值?我需要添加路径参数吗?查询字符串?
    • @FuriousStyles 如果您的网关中集成了 AWS_PROXY,则无需执行任何操作。来自客户端的整个请求都像 lambda 一样被过氧化,而来自 lambda 的整个响应都被过氧化给客户端。所以我认为错误是在 lambda 方面。您必须提供代码示例、错误消息、api 网关设置详细信息。否则只是猜测。您可以在新问题中提供详细信息,因为您似乎正在处理您发布的问题中的新问题。但无论如何,如果我的回答有帮助,我们将不胜感激。
    【解决方案2】:

    我发现了我的问题。在我的 lamdba 函数中,我需要将输出更改为 JSON 对象。一旦我做出改变,我就能让我的 API 正常工作。这是fix的链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多