发生错误:Artisan Lambda 函数 - 解压缩后的大小必须小于 220606645 字节(服务:Lambda,状态代码:4000

An error occured: ArtisanLambdaFunction - Unzipped size must be smaller than 220606645 bytes (Service: Lambda, Status Code: 4000

我试图使用 Bref 将我的 Laravel 应用程序部署到 AWS Lambda。 我试图排除几乎所有的图像、视频,但我仍然得到

Serverless Error ----------------------------------------
An error occurred: ArtisanLambdaFunction - Resource handler returned message: "Unzipped size must be smaller than 235311048 bytes (Service: Lambda, Status Code: 400 ...

我的serverless.yml文件是

service: my-laravel-application

provider:
    name: aws
    # The AWS region in which to deploy (us-east-1 is the default)
    region: eu-west-1
    # The stage of the application, e.g. dev, production, staging… ('dev' is the default)
    stage: dev
    runtime: provided.al2

package:
    individually: true
    # Directories to exclude from deployment
    exclude:
        - node_modules/**
        - public/storage/**
        - resources/assets/**
        - storage/**
        - tests/**
        - public/images/**
        - public/uploads/**
        - public/videos/**

functions:
    # This function runs the Laravel website/API
    web:
        handler: public/index.php
        timeout: 28 # in seconds (API Gateway has a timeout of 29 seconds)
        layers:
            - ${bref:layer.php-74-fpm}
        events:
            -   httpApi: '*'
    # This function lets us run artisan commands in Lambda
    artisan:
        handler: artisan
        timeout: 120 # in seconds
        layers:
            - ${bref:layer.php-74} # PHP
            - ${bref:layer.console} # The "console" layer

 plugins:  
    # We need to include the Bref plugin
    - ./vendor/bref/bref 

我试图从 zip 中排除几乎所有资产。尽管如此,我还是遇到了同样的错误。 压缩时,我的应用程序的总大小仅为 119.4 MB。

我可以通过将所有 public 资产添加到排除列表来解决此问题,从而将 zip 文件的大小减少到 43 MB。

解压zip时,解压后的总大小小于220606645字节

那么,

  1. 上传所有public文件夹文件和文件夹到S3
  2. 在环境中添加ASSET_URL
  3. 在我们尝试从 S3 访问文件的地方使用 asset() 函数