无服务器框架 - 超出 AWS Lambda 依赖项限制

Serverless Framework - AWS Lambda dependency limit exceed

我正在使用 AWS(一种呼叫中心,使用 Twilio)从事无服务器项目。我之前已经构建了另外 2-3 个小项目。不过,我现在正在使用无服务器框架。到目前为止我还没有使用它。所以我在 AWS 和无服务器方面都是新手。

我正在关注下一个 link: https://serverless.com/blog/flask-python-rest-api-serverless-lambda-dynamodb/

所以我基本上使用这个 Python 依赖项:Flask、Twilio、boto3(用于 AWS)。请参阅下面的 requirements.txt。我卸载了一些软件包,但可能还有一些我可以清理的软件包:

boto3==1.9.84
botocore==1.12.84
certifi==2018.11.29
chardet==3.0.4
Click==7.0
docutils==0.14
Flask==1.0.2
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10
jmespath==0.9.3
lazy-object-proxy==1.3.1
MarkupSafe==1.1.0
pipdeptree==0.13.2
PyJWT==1.7.1
PySocks==1.6.8
python-dateutil==2.7.5
pytz==2018.9
requests==2.21.0
s3transfer==0.1.13
six==1.12.0
twilio==6.23.1
urllib3==1.24.1

使用无服务器框架,在安装 boto3 之前,我能够毫无问题地部署(无服务器部署)项目。但是,现在我超出了允许的依赖项大小并收到此错误:

An error occurred: AppLambdaFunction - Unzipped size must be smaller than 262144000 bytes (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

我卡在这上面了。我想我可以用老方法解决它,而不使用 Serverless Framework(直接在 AWS 中),但理想情况下我想解决这个问题。

是否可以部分安装boto3?我的意思是,一种只安装我需要的模块的方法。

还有其他想法吗?

提前致谢。

幸运的是,您不必在部署 Lambda 应用程序时捆绑 boto3。它是 Lambda python 执行环境中的 already present。随时从您的 requirements.txt.

中删除 boto3

请注意,AWS 建议您捆绑自己的,因为 Lambda 中的那个可能不是完全最新的,但只有当您想要使用 AWS 的最新功能或服务时,这才重要。我已经使用捆绑的 2 年多了,一次都没有问题。