相关疑难解决方法(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万
查看次数

来自AWS Lambda的MongoDB连接

我正在寻找使用连接到MongoDB数据库的AWS Lambda/API Gateway创建RESTful API.我已经读过与MongoDB的连接相对昂贵,因此最好的做法是在建立连接后保留连接以便重用,而不是为每个新查询建立新连接.

这对于普通应用程序来说非常简单,因为您可以在启动期间建立连接并在应用程序生命周期内重用它.但是,由于Lambda被设计为无国籍,因此保持这种联系似乎不太直接.

因此,我想知道什么是解决此数据库连接问题的最佳方法?我是否每次调用Lambda函数时都强制建立新连接,或者是否有办法池/缓存这些连接以获得更有效的查询?

谢谢.

mongodb amazon-web-services node.js aws-lambda

52
推荐指数
3
解决办法
1万
查看次数

随机状态代码:连接到lambda的AWS api网关上的502错误

我使用代理集成使用api网关暴露了多个lambdas.我不时会收到状态代码为502的奇怪错误.在lambda云监视日志中没有任何内容.下面我发布了api网关日志以获取示例请求:

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Received response. Integration latency: 231 ms

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response body before transformations:
{
    "Message": "An error occurred and the request cannot be processed.",
    "Type": "Service"
}

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response headers: 
{
    Connection=keep-alive, 
    x-amzn-RequestId=0cbc9dee-f1bd-11e7-857b-91f7f814692c, 
    x-amzn-ErrorType=ServiceException, 
    Content-Length=86, 
    Date=Fri, 05 Jan 2018 02:06:32 GMT, 
    Content-Type=application/json
}

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Execution failed due to configuration error: Malformed Lambda proxy response

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Method completed with status: 502
Run Code Online (Sandbox Code Playgroud)

基本上似乎api网关无法到达lambda并且调用lambda返回:

(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response body before transformations:
{
    "Message": "An error occurred and the request cannot be processed.", …
Run Code Online (Sandbox Code Playgroud)

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

20
推荐指数
1
解决办法
2014
查看次数

API网关响应状态为0,集成延迟10000ms

这是我从API网关自动生成的javascript SDK中获得的错误.

{
    "data": "",
    "status": 0,
    "statusText": "",
    "headers": {

    },
    "config": {
        "method": "POST",
        "headers": {
            "Content-Type": "application/json",
            "Accept": "application/json",
            "x-amz-date": "20180127T231842Z",
            "Authorization": "AWS4-HMAC-SHA256 Credential=.....",
            "x-amz-security-token": "....."
        },
        "timeout": 0,
        "transformRequest": [null],
        "transformResponse": [null],
        "url": "https://somevalues.execute-api.us-west-2.amazonaws.com/env/some/path",
        "data": "{\"startDay\":0,\"endDay\":1}"
    }
}
Run Code Online (Sandbox Code Playgroud)

我查看了我的cloudwatch日志,并且呼叫成功了.我将API网关绑定到AWS lambda作为无服务器功能设置.

我从未见过这些类型的错误,但今天我得到了其中的5个错误.后续调用全部奏效.

编辑:这可能与CORS设置有关吗?每隔一段时间API网关似乎打嗝并且不会发送回适当的CORS.可能是功能冷的时候?我不确定...

编辑2:我刚刚验证 - 我的所有OPTIONS端点(用于CORS的端点)都不需要auth或api密钥.所以我认为不是这样的.

编辑4:编辑3错了,我正在击中错误的端点.使用curl命中我的API OPTIONS端点可以正常工作.

编辑5:查看云观察中的API网关日志,这就是它们的样子......此时完全丢失了.

[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m START RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1 Version: $LATEST
[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m END RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1
[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m REPORT RequestId: e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1   Duration: 10007.96 ms   Billed Duration: 10000 ms   Memory Size: 128 MB …
Run Code Online (Sandbox Code Playgroud)

aws-lambda aws-api-gateway api-gateway

16
推荐指数
1
解决办法
916
查看次数

由于配置错误,执行失败:Java 中的 Lambda 代理响应格式错误

我的函数是通过代理 API 网关调用的。该函数执行正常,但 API 调用返回 502 错误:

Mon Dec 30 18:16:25 UTC 2019 : Endpoint response body before transformations: "{}"
Mon Dec 30 18:16:25 UTC 2019 : Execution failed due to configuration error: Malformed Lambda proxy response
Mon Dec 30 18:16:25 UTC 2019 : Method completed with status: 502
Run Code Online (Sandbox Code Playgroud)

响应应该是字符串化的 JSON,并且应包含状态代码、正文和标头。所有这些都包含在下面,但由于配置错误,我仍然收到 Execution failed: Malformed Lambda proxy response。帮助?

package example;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import javax.json.bind.JsonbConfig;

/**
 *
 * …
Run Code Online (Sandbox Code Playgroud)

java aws-lambda aws-api-gateway

5
推荐指数
2
解决办法
4622
查看次数

为什么我从Postman得到此{“ message”:“内部服务器错误”}

我是AWS新手,{"message": "Internal server error"}在Postman中使用API​​ Gateway运行Lambda函数时遇到了麻烦。

我已经检查了CloudWatchLogs,日志中没有显示错误。但是邮递员返回了{"message": "Internal server error"}这个错误。

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

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