相关疑难解决方法(0)

如何从Amazon API Gateway将查询字符串或路由参数传递给AWS Lambda

例如,如果我们想要使用

GET /user?name=bob

要么

GET /user/bob

您如何将这两个示例作为参数传递给Lambda函数?

我在文档中看到了关于设置"映射到"的内容,但我在API网关控制台中找不到该设置.

  • method.request.path.parameter-name对于parameter-name在"方法请求"页面中定义的路径参数.
  • method.request.querystring.parameter-name对于parameter-name在"方法请求"页面中定义的名称的查询字符串参数.

即使我定义了查询字符串,我也看不到这些选项中的任何一个.

amazon-web-services aws-lambda aws-api-gateway

310
推荐指数
13
解决办法
21万
查看次数

通过 API GW 调用时,AWS Lambda Go 函数未获取请求正文

首先,有人可能会说这个问题与HTTP request body not getting to AWS lambda function via AWS API GatewayGetting json body in aws Lambda via API gateway非常相似

但是,这些问题都没有解决使用 Golang 的问题,我遇到的问题是找到event与 Node.js 文档中随处使用的参数等效的参数。

这是我的 Lambda 函数:

package main

import (
    "context"
    "encoding/json"
    "github.com/aws/aws-lambda-go/lambda"
    "github.com/aws/aws-lambda-go/events"
    "log"
)

type MyReturn struct {
    Response string `json:"response"`
}

type APIGWResponse struct {
    IsBase64Encoded bool              `json:"isBase64Encoded"`
    StatusCode      int               `json:"statusCode"`
    Headers         map[string]string `json:"headers"`
    Body            string            `json:"body"`
}

func handle(ctx context.Context, name MyReturn) (APIGWResponse, error) {
    log.Print("Called by …
Run Code Online (Sandbox Code Playgroud)

go aws-lambda aws-api-gateway aws-lambda-go

9
推荐指数
1
解决办法
5760
查看次数

AWS Lambda:澄清从事件对象检索数据

目前,我认为我对如何从lambda函数提取/传递数据有基本的误解,我正在寻求澄清

示例:假设我想将一些数据传递给lambda函数,即{"hello":"world"}通过在AWS API Gateway中创建REST端点将数据传递给该Lambda函数来实现

目前,我了解有三种提取数据的方法:

1)event.queryStringParameters(有意义)

例如 我们可以将查询参数附加到请求URL:https : //fakefakefake.execute-api.us-west-2.amazonaws.com/test/myapi?hello=world以及lambda函数中:

const data = event.queryStringParameters.hello; // 'world'
Run Code Online (Sandbox Code Playgroud)

2)event.body(很有意义,由于“ Lambda代理集成”,这是可能的)

例如 如果我们使用Lambda代理集成将数据附加到POST / PUT / etc请求的主体中(即转发所有数据),则可以event.body在lambda函数中通过&访问它(但请确保JSON.parse event.body)因为Lambda代理集成将通过字符串化JSON(无效/“真实” JSON)传递:

const parsedBody = JSON.parse(event.body); // should wrap in try/catch
const data = parsedBody.hello; // 'world'
Run Code Online (Sandbox Code Playgroud)

3)直接在事件对象上(不清楚)

例如 目前尚不清楚这种情况-通过API网关中的REST端点设置将数据传递给lambda函数,然后可以从事件对象直接访问它?

const data = event.hello; // 'world'
Run Code Online (Sandbox Code Playgroud)

例如在案例3中,如何在Lambda函数中的事件对象上“直接”传递数据的示例是什么?我认为这种情况要求我在设置API / Lambda时创建一个“映射模板”,但是我仍然不清楚。

对于简单的Node脚本,情况2似乎具有从字符串化JSON解析事件主体的“开销”,因此这是可以理解的缺点,但是除了如何做到这一点,为什么情况3或何时将是情况3?

javascript amazon-web-services node.js aws-lambda aws-api-gateway

4
推荐指数
2
解决办法
709
查看次数