【问题标题】:How to install large dependencies on AWS EFS via serverless framework如何通过无服务器框架在 AWS EFS 上安装大型依赖项
【发布时间】:2020-07-16 13:07:10
【问题描述】:

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

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

我的方案是将 tensorflow2 依赖项(>500 MB)上传到 AWS lambda。

任何线索都会有所帮助和赞赏。

【问题讨论】:

    标签: aws-lambda tensorflow2.0 serverless-framework amazon-efs


    【解决方案1】:

    是的,你可以。我不确定您是否已经在无服务器上设置了 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
    

    对于 tensorflow,仅供参考,您可以使用以下组合将其降低到 60MB 左右 lambc/docker-lambda 和

    tensorflow packaging

    但从长远来看,无论如何使用 EFS 会更好,只是值得一提。

    【讨论】:

    • 这样就可以创建 EFS 并在所需路径的 EFS 中安装依赖项?
    • 没有。我所描述的将允许您的 serverlass 堆栈通过您或您的 DevOps 人员需要单独设置的 VPN 与 EFS 设置进行通信。例如,我们有另一个使用 EC2 实例部署的单独 EFS cloudformation 堆栈。这是一个开发环境。然后,每当开发人员创建开发环境无服务器项目时,他需要将我之前描述的参数和属性添加到他的无服务器脚本中。所需路径由您的 DevOps 设置,可能通过 venv 设置。
    • 我们今天有机会部署它,但由于无服务器尝试在 lambda 函数之前部署资源部分而失败,但这里这些扩展正在等待连接到 lambda 函数,对吗?跨度>
    • 我可以查看错误日志吗?您是否已经在 AWS 中设置了独立的 EFS 环境?
    • 扩展是否需要任何无服务器插件?它给了我这个错误:```错误:CloudFormation模板无效:无效的模板属性或属性[扩展]```
    猜你喜欢
    • 2021-08-23
    • 1970-01-01
    • 2021-03-07
    • 2016-08-16
    • 2021-02-27
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 2021-06-05
    相关资源
    最近更新 更多