use*_*896 5 endpoint amazon-web-services amazon-cloudfront aws-lambda
我有一个Lambda函数,它需要几个数组(〜6)并返回所有可能的组合。
当有数百种可能的组合时,Lambda成功。但是,当有数千种可能性时,我会失败(下面的响应)。
请注意,我正在双向压缩/解压缩JSON,以使有效负载尽可能小。
我正在使用最大内存(1536)和20秒超时来运行它。
关于什么原因的任何想法?
{
"state": "rejected",
"reason": {
"name": "StatusCodeError",
"statusCode": 504,
"message": "504 - [object Object]",
"error": {
"message": "Endpoint request timed out"
},
"options": {
"uri": "https://blahblah/prod/getCombinations",
"method": "POST",
"timeout": 120000,
"json": {...
},
"simple": true,
"resolveWithFullResponse": false
},
"response": {
"statusCode": 504,
"body": {
"message": "Endpoint request timed out"
},
"headers": {
"content-type": "application/json",
"content-length": "41",
"connection": "close",
"date": "Thu, 20 Aug 2015 20:39:53 GMT",
"x-amzn-requestid": "965d3b8d-477b-11e5-99d6-4102846d4b1e",
"x-cache": "Error from cloudfront",
"via": "1.1 b1103856e287e98f322630821d3c6e5b.cloudfront.net (CloudFront)",
"x-amz-cf-id": "Dhk7ylTq6RDE74smC8uF8ajms8rpU0fp2dnexn4_I3qIXgvrrsg48w=="
},
"request": {
"uri": {
"protocol": "https:",
"slashes": true,
"auth": null,
"host": "blahblah",
"port": 443,
"hostname": "blahblah",
"hash": null,
"search": null,
"query": null,
"pathname": "/prod/getCombinations",
"path": "/prod/getCombinations",
"href": "https://blahblah"
},
"method": "POST",
"headers": {
"accept": "application/json",
"content-type": "application/json",
"content-length": 10201
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从字面上读取Amazon CloudFront 504 响应“端点请求超时”,即504 网关超时通常表示服务器充当网关或代理,并且没有收到来自上游服务器的及时响应。
CloudFront 符合此标准,如自定义错误响应中所述,例如:
服务器错误表示源服务器有问题。例如,HTTP 服务器繁忙或不可用。当发生服务器错误时,您的源服务器向 CloudFront 返回 500 范围内的 HTTP 状态代码,或者CloudFront 在特定时间段内未从您的源服务器获得响应并假设为 504 状态代码(网关超时) . [强调我的]
正如迈克尔谢天谢地指出的那样,CloudFront 自己的自定义源请求超时为30 秒:
DELETE、OPTIONS、PATCH、POST 和 POST 请求 – 如果源在 30 秒内没有响应,CloudFront 将断开连接并且不会再次尝试联系源。如有必要,客户端可以重新提交请求。
鉴于您的AWS Lambda函数的超时时间较短,为 20 秒,我怀疑您的数据集太大,无法在 20 秒内通过 POST 请求(大概是通过Amazon API 网关?!)传输和处理。
| 归档时间: |
|
| 查看次数: |
7204 次 |
| 最近记录: |