Aws lambda 如何通过无服务器框架在AWS EFS上安装大型依赖项
我知道我们可以从EC2实例在EFS中安装依赖项,然后在AWS lambda中设置装载路径和PythonPath,以便lambda现在拥有依赖项文件夹的路径 但是有没有办法从这种方法中消除EC2,而是从安装这些依赖项 我的场景是将tensorflow2依赖项(大于500 MB)上载到AWS lambdaAws lambda 如何通过无服务器框架在AWS EFS上安装大型依赖项,aws-lambda,tensorflow2.0,serverless-framework,amazon-efs,Aws Lambda,Tensorflow2.0,Serverless Framework,Amazon Efs,我知道我们可以从EC2实例在EFS中安装依赖项,然后在AWS lambda中设置装载路径和PythonPath,以便lambda现在拥有依赖项文件夹的路径 但是有没有办法从这种方法中消除EC2,而是从安装这些依赖项 我的场景是将tensorflow2依赖项(大于500 MB)上载到AWS lambda 任何潜在客户都会很有帮助,非常感谢。是的,你可以。我不确定您是否已经在无服务器上设置了EFS。 但假设这已经完成,那么您可以明确地告诉您的无服务器lambda项目要连接到什么vpc以及要使用什么E
任何潜在客户都会很有帮助,非常感谢。是的,你可以。我不确定您是否已经在无服务器上设置了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"
在“函数”部分下,请确保定义了指向libs/代码的环境变量:
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
仅供参考,对于tensorflow,您可以使用以下组合将其降低到约60MB
lambc/docker lambda和
但从长远来看,您使用EFS会更好,这一点值得一提。这样可以创建EFS,并在EFS中按所需路径安装依赖项?不。我所描述的将允许您的serverlass堆栈通过您或您的DevOps人员需要单独设置的VPN与EFS设置进行通信。例如,我们有另一个单独的EFS cloudformation堆栈,它是使用EC2实例部署的。这是一个开发环境。然后,每当开发人员创建一个development env serverless项目时,他都需要将我前面描述的参数和属性添加到他的serverless脚本中。所需的路径由您的DevOps设置,可能是通过venv设置设置的。我们今天有机会部署它,但失败了,因为无服务器尝试在lambda函数之前部署resources部分,但这里这些扩展正在等待连接到lambda函数,对吗?我可以查看错误日志吗?您是否已经在AWS中设置了独立的EFS环境?扩展是否需要任何无服务器插件?它给了我以下错误:```错误:CloudFormation模板无效:无效的模板属性或属性[扩展]```