资源处理程序返回消息:"解压缩的大小必须小于 262144000 字节 AWS Lambda 和 CDK,没有无服务器 .yaml 文件



我正试图获得一个与AWS CDK一起工作的Lambda函数。我在python中实现了lambda函数,并希望在lambda代码中包含外部库。目前这是我的CDK代码:

import aws_cdk as core
from aws_cdk import (
Stack,
aws_lambda as _lambda,
aws_apigateway as apigw,
)

class SportsTeamGeneratorStack(Stack):
def __init__(self, scope: Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)

my_lambda = _lambda.Function(self, 'HelloHandler',
runtime=_lambda.Runtime.PYTHON_3_8,
code=_lambda.Code.from_asset("lambda",
bundling= core.BundlingOptions(
image=_lambda.Runtime.PYTHON_3_8.bundling_image,
command=[
"bash", "-c",
"pip install --no-cache -r requirements.txt -t /asset-output && cp -au . /asset-output"
],
),
),
handler='hello.handler',
)
apigw.LambdaRestApi(
self, 'Endpoint',
handler=my_lambda,
)

这是我的Lambda代码:

import json
import pandas
def handler(event, context):
print('request: {}'.format(json.dumps(event)))
return {
'statusCode': 200,
'headers': {
'Content-Type': 'text/plain'
},
'body': 'Hello, CDK! You have hit {}n'.format(event['path'])
}

cdk代码在一个名为sports_team_generator的目录中,lambda代码在位于名为"的目录中的hello.py文件中;λ";。在";λ";目录,我还有requirements.txt文件,其中包含以下内容:

aws-cdk-lib==2.19.0
constructs>=10.0.0,<11.0.0
pytz==2022.1
requests==2.27.1
sportsipy==0.6.0
numpy==1.22.3
pandas==1.4.2
pyquery >= 1.4.0

我目前正试图避免使用ECR上传docker映像,然后将这些映像链接到控制台中的lambda函数,因为我想通过CDK完成所有操作。我觉得lambda本身就很小,不知道为什么它可能超过了尺寸要求。似乎是requirements.txt导致了这个问题,我不确定是否有解决方法。最好我会修复这个错误,尽管如果不可能,我可以创建一个docker映像并上传到ECR,如果可能的话,通过cdk将该ECR实例链接到lambda函数。如果有人有解决方案/建议,请告诉我。

恐怕您唯一的选择是从容器部署lambda,请参阅https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html

从zip解压缩的部署包的最大大小为250 MB。Lambda层也没有帮助,因为所有层的组合部署包大小需要低于250 MB。

但是,容器映像代码包的大小限制为10 GB。所以,如果您不能将lambda的包大小降低到250MB以下,容器就是您的选择。如何注册容器并将其用于lambda部署的指南位于https://docs.aws.amazon.com/lambda/latest/dg/images-create.html和https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/

相关内容

  • 没有找到相关文章

最新更新