Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda 如何通过无服务器框架在AWS EFS上安装大型依赖项_Aws Lambda_Tensorflow2.0_Serverless Framework_Amazon Efs - Fatal编程技术网

Aws lambda 如何通过无服务器框架在AWS EFS上安装大型依赖项

Aws 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

我知道我们可以从EC2实例EFS中安装依赖项,然后在AWS lambda中设置装载路径和PythonPath,以便lambda现在拥有依赖项文件夹的路径

但是有没有办法从这种方法中消除EC2,而是从安装这些依赖项

我的场景是将tensorflow2依赖项(大于500 MB)上载到AWS lambda


任何潜在客户都会很有帮助,非常感谢。

是的,你可以。我不确定您是否已经在无服务器上设置了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模板无效:无效的模板属性或属性[扩展]```