18

这是我从 API Gateway 自动生成的 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}"
    }
}

我查看了我的 cloudwatch 日志,通话成功。我将 API 网关绑定到 AWS lambda 作为无服务器功能设置。

我从未见过这些类型的错误,但今天我得到了其中的 5 个。随后的电话都奏效了。

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

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

编辑 4:编辑 3 错了,我打错了终点。使用 curl 访问我的 API OPTIONS 端点可以正常工作。

编辑 5:查看 cloudwatch 中的 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 Max Memory Used: 51 MB
[32m/aws/lambda/supercoolsoftware-prod-createInviteCode[0m [36m2018/02/26/[$LATEST]8578bb59ab0538558fabef7bd1f484a2[0m 2018-02-26T20:44:58.994Z e3g4f130-1b35-11e8-b0cf-e7f75f2e4dc1 Task timed out after 10.01 seconds

编辑 6:它还显示了 10000 毫秒的集成延迟......

[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Verifying Usage Plan for request: e2f406ec-1b35-11e8-bce8-e3c6368e1bfc. API Key:  API Stage: xxxxxxxxxx/prod
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) API Key  authorized because method 'POST /accounts/inviteCode' does not require API Key. Request will not contribute to throttle or quota limits
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Usage Plan check succeeded for API Key  and API Stage xxxxxxxxxx/prod
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Starting execution for request: e2f406ec-1b35-11e8-bce8-e3c6368e1bfc
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) HTTP Method: POST, Resource Path: /accounts/inviteCode
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Method request path: {}
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Method request query string: {}
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Method request headers: {Accept=application/json, x-amz-date=20180226T204447Z, CloudFront-Viewer-Country=US, CloudFront-Forwarded-Proto=https, CloudFront-Is-Tablet-Viewer=false, origin=https://app.supercoolsoftware.io, CloudFront-Is-Mobile-Viewer=false, Referer=https://app.supercoolsoftware.io/devices, User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36, X-Forwarded-Proto=https, CloudFront-Is-SmartTV-Viewer=false, Host=xxxxxxxxxx.execute-api.us-west-2.amazonaws.com, Accept-Encoding=gzip, deflate, br, dnt=1, x-amz-security-token=FQoDYXdzEK7//////////wEaDFrfZM8Y6J3xvLiS2iKTBF5YIv8VFsraozz/AxRzj10S9RzrOoJTswlhoOfX/gfGYPWP5PNQ1ue7IHEUeUpm+ewB5wANsbydmqGQzVCCvIZkYq+/1X0Iqr74rFuUWBO8ATrKtXBz7zJzpmLtXaOaIzwlFwq/6cKvh4r8HLvSjxBAG4H+ayyUU1IDKmUKAVtpCDvk9FUJM7D5zm4Wlt/yu8/dc3F4a8ID0it93GTQSSi/1YaDmGrkEJ3ySxxE0O0TAZzV50Yprj2gkOX4zNuPsQfWGenILaAog6FLw4asv1J+lE6zKgJtpSiYXyASf54jWnUT4VSiuHL2zU0p1B3tn/wkLF14dCS/IhzAtBgxpqGcRiqy6S05l3MsXJl3WHxMt1iSu5yNLLy2wjlg9j2BoEs18ravB [TRUNCATED]
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Method request body before transformations: {"deviceType":"USER","deviceName":"Me"}
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Endpoint request URI: https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:122312312312:function:supercoolsoftware-prod-createInviteCode/invocations
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Endpoint request headers: {x-amzn-lambda-integration-tag=e2f406ec-1b35-11e8-bce8-e3c6368e1bfc, Authorization=*******************************************************************************************************************************************************************************************************************************************************************************************************e57bd5, X-Amz-Date=20180226T204448Z, x-amzn-apigateway-api-id=xxxxxxxxxx, Accept=application/json, User-Agent=AmazonAPIGateway_xxxxxxxxxx, X-Amz-Security-Token=FQoDYXdzEK7//////////wEaDHJUDFmtbGGy6Q/bcyKOBn+NX/e9T3+kv8LYDm//MnuArciU8olgca3VHeUDpqmrYaD7w+RQtnmSVQvZ8VqZw0G13UUxen8Ppageped//Yq3QPOEAjLLPICkaplSQh//iDYHYcjEOcrSY/IdeNelF+npPONj/+8Yfg7CGjYa+CCIdTwlrygtAzucAkzn0VxmmAsnmbcXbw6OMJJKd9Ujz7xIsTGOo3RaBsgGfkxHVA/OtMTNEACCWu2KAus1cFxf+gJxVCS2lb0QxcA7dCqc4NyB9cwJXopG5oQSx1sZ8EbJvNcvvHNgumrxpr2qk5hmIJVVhmdqJ3HdZUd+xePNpwtY/pd84Iy7hyjucVX6RIsxfQOd+TYGrgJMIb4hdpAFXGKXlRLfl7E8Dpp5jpOpVW4uRXOvMGVzncUMfJH6ph/YAVPsKn6F [TRUNCATED]
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Endpoint request body after transformations: {"resource":"/accounts/inviteCode","path":"/accounts/inviteCode","httpMethod":"POST","headers":{"Accept":"application/json","Accept-Encoding":"gzip, deflate, br","Accept-Language":"en-US,en;q=0.9","CloudFront-Forwarded-Proto":"https","CloudFront-Is-Desktop-Viewer":"true","CloudFront-Is-Mobile-Viewer":"false","CloudFront-Is-SmartTV-Viewer":"false","CloudFront-Is-Tablet-Viewer":"false","CloudFront-Viewer-Country":"US","content-type":"application/json","dnt":"1","Host":"xxxxxxxxxx.execute-api.us-west-2.amazonaws.com","origin":"https://app.supercoolsoftware.io","Referer":"https://app.supercoolsoftware.io/devices","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36","Via":"2.0 cbec82431a010799f206b43dbd0489c3.cloudfront.net (CloudFront)","X-Amz-Cf-Id":"zM1gObCVuZ9UXh_beuWr-o9XomlnGGyYFWEn5HJNGk8cBQOMOSCMEw==","x-amz-date":"20180226T204447Z","x-amz-security-token":"FQoDYXdzEK7//////////wEaDFrfZM8Y6J3xvLiS2iKTBF5YIv8 [TRUNCATED]
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Sending request to https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/arn:aws:lambda:us-west-2:122312312312:function:supercoolsoftware-prod-createInviteCode/invocations
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Received response. Integration latency: 10026 ms
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Endpoint response body before transformations: {"errorMessage":"2018-02-26T20:44:58.994Z e2f4f130-1b35-11e8-b0cf-e7f75f2e4dc1 Task timed out after 10.01 seconds"}
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Endpoint response headers: {X-Amz-Executed-Version=$LATEST, x-amzn-Remapped-Content-Length=0, Connection=keep-alive, x-amzn-RequestId=e2f4f130-1b35-11e8-b0cf-e7f75f2e4dc1, Content-Length=115, X-Amz-Function-Error=Unhandled, Date=Mon, 26 Feb 2018 20:44:58 GMT, X-Amzn-Trace-Id=root=1-5a9471c0-0b361380a48e2bc0743673a5;sampled=0, Content-Type=application/json}
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Execution failed due to configuration error: Malformed Lambda proxy response
[32mAPI-Gateway-Execution-Logs_xxxxxxxxxx/prod[0m [36m69adc1e107f7f7d035d7baf04342e1ca[0m (e2f406ec-1b35-11e8-bce8-e3c6368e1bfc) Method completed with status: 502

编辑 7:这是我编写的每个函数的开始方式......

module.exports.unsubscribeFromDailyEmails = function(event, context, cb) {
  logRequest(event, context);
//more logic

function logRequest(event, context) {
  console.log('event: ' + JSON.stringify(event));
  console.log('context: ' + JSON.stringify(context));
}

我想强调一下,在我所说的情况下,永远不会达到 logRequest 功能——没有写入云手表的日志。是的,logRequest 是我在每个函数中做的第一件事。

编辑8:我在过去一周左右没有看到这种情况发生......所以也许它在AWS方面并且它已修复?如果我发现其他情况,我会更新。

编辑 9:我现在已经看到这发生在其他一些端点上,因为异常被抛出并且没有被处理。但是,这与 10000 集成延迟错误的情况不同。

4

2 回答 2

4

我认为您走在正确的轨道上,请与 cors 一起阅读此内容,它将为您很好地布局。 点击这里

于 2018-02-11T00:19:10.610 回答
0

希望您指的是自定义状态代码而不是 http 状态代码。如果连接成功,API 网关将只返回一个非零状态码。要隔离问题,您可以删除此设置中的任何自定义授权人。大多数情况下,来自自定义授权者的拒绝状态将是 403 禁止状态,但这里似乎有所不同。还要删除可能根据日志设置的任何基于配额的使用情况。在我看来,绝对数量 10000 是 API 网关中的配置。

于 2018-03-06T23:49:57.733 回答