我了解我们可以从 EC2实例在 EFS 中安装依赖项,然后在AWS lambda中设置安装路径和PythonPath,以便lambda现在具有以下路径:依赖文件夹。
但是有没有办法从这种方法中消除EC2,而是从 serverless framework 安装那些依赖项?
我的情况是将tensorflow2依赖关系(> 500 MB)上传到AWS lambda。
任何潜在客户都会有所帮助和赞赏。
答案 0 :(得分:0)
可以。我不确定您是否已经在无服务器上设置了EFS。 但是,假设已经完成,则可以明确地告诉无服务器lambda项目要连接到哪个vpc以及要使用哪些EFS IAM角色。
我没有EFS设置的详细信息,但是在我的项目中,它看起来像这样:
name: aws
profile: abcd
runtime: python3.8
region: us-west-1
vpc:
securityGroupIds:
- sg-065647b2292ad63a2
subnetIds:
- subnet-02ad3xxxxxxxxxxxx
- subnet-02ca2xxxxxxxxxxxx
- subnet-01a14xxxxxxxxxxxx
# Allow RW access to EFS services
iamManagedPolicies:
- "arn:aws:iam::aws:policy/AmazonElasticFileSystemClientReadWriteAccess"
在功能部分下,只需确保定义环境变量以指向您的库/代码:
functions:
myfunc:
runtime: python3.8
handler: myhandler
environment:
PYTHONPATH: /mnt/efs/lib/python3.8/site-packages
LD_LIBRARY_PATH: /mnt/efs/lib/python3.8/site-packages
最后是资源:
resources:
extensions:
MyfuncLambdaFunction:
Properties:
FileSystemConfigs:
- Arn: arn:aws:elasticfilesystem:us-west-1:123456789012:access-point/fsap-0012abcde1234ab12
LocalMountPath: /mnt/efs
FYI的Tensorflow,您可以结合使用将其降低到60MB左右 lambc / docker-lambda和
但是,从长远来看,无论如何,使用EFS还是会更好的,值得一提。