Laravel Vapor+DynamoDB排队作业+120 MB json提要=413请求实体太大



我觉得我选择Vapor作为API电子商务平台是错误的——不确定。

我的API的关键部分是从供应商API获取产品提要,该提要采用json格式,大小约为120MB。理想情况下,我想要";sync";过程是一个排队的作业(甚至是一批作业-为每个包含其变体的产品模型划分为块(,但总体问题是我从DynamoDB获得413 Request Entity Too Large

{
"message": "Error executing "PutItem" on "https://dynamodb.eu-north-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://dynamodb.eu-north-1.amazonaws.com` resulted in a `413 Request Entity Too Large` response Unable to parse error information from response - Error parsing JSON: Syntax error",
"context": {
"exception": {
"class": "Aws\DynamoDb\Exception\DynamoDbException",
"message": "Error executing "PutItem" on "https://dynamodb.eu-north-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://dynamodb.eu-north-1.amazonaws.com` resulted in a `413 Request Entity Too Large` response Unable to parse error information from response - Error parsing JSON: Syntax error",
"code": 0,
"file": "/var/task/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:195",
"previous": {
"class": "GuzzleHttp\Exception\ClientException",
"message": "Client error: `POST https://dynamodb.eu-north-1.amazonaws.com` resulted in a `413 Request Entity Too Large` response",
"code": 413,
"file": "/var/task/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113"
}
},
"aws_request_id": "452bd124-548c-58a2-ac12-8a41e422e6a7"
},
"level": 400,
"level_name": "ERROR",
"channel": "staging",
"datetime": "2022-08-04T11:33:57.191435+00:00",
"extra": {}
}

蒸汽文件状态:

由于AWS Lambda的限制,文件直接上传到您的应用程序后端的大小只能达到大约4.5MB。这是一个AWS 施加的硬限制

来自谷歌的消息来源:

AWS Lambda有效载荷大小有6mb的硬性限制。这意味着我们不能在单个请求。

如果他们的应用程序使用AWS Lambda作为客户和AWS之间的中间人S3资产存储。

记住这一点,HTTP请求获取120MBjson提要";太大";让Lambda来处理。

此外,我发现一个消息来源说,排队作业的总负载大小限制为256kb-再也找不到消息来源了。

关于如何解决这个问题,有什么建议吗?

DynamoDB的每项限制为400kb。您正在尝试PutItem一个太大的项目。请参阅文档中的项目限制。

为了解决这个问题,你可以把你的项目分解成小块(我需要看看架构才能在这里给出任何建议(。您还可以将完整的120MB blob上传到S3,然后在DynamoDB中只存储快速查询所需的元数据+指向S3的指针。

最新更新