可以从 aws codebuild buildspec.yml 文件的 'pre-build' 部分跳过 'npm install' 命令吗

is it okay to skip 'npm install' command from 'pre-build' section of aws codebuild buildspec.yml file

我有一个通过 aws codebuild 部署的 lambda 函数。

我当前的 yml 配置如下所示

version: 0.1
phases:
  pre_build:
    commands:
    - FUNCTION_NAME=$FUNCTION_NAME
    - ZIP_NAME=$ZIP_NAME
    - BUCKET_NAME=$BUCKET_NAME
    - npm install --silent --no-progress
    - zip -r $ZIP_NAME.zip .
    - aws s3 cp $ZIP_NAME.zip s3://$BUCKET_NAME/
  build:
    commands:
    - echo $FUNCTION_NAME Deployment started!!!
    - aws lambda update-function-code --function-name $FUNCTION_NAME --s3-bucket $BUCKET_NAME --s3-key $ZIP_NAME.zip

artifacts:
  files: $ZIP_NAME.zip

部署时由于我的文件超过最大大小限制而出现构建错误

An error occurred (InvalidParameterValueException) when calling the UpdateFunctionCode operation: Unzipped size must be smaller than 262144000 bytes

所以有什么方法可以解决这个问题,而无需从我的实际代码中删除任何内容

是否可以从预构建部分删除 'npm install' 并添加到构建部分?

根据AWS Lambda limits

  • 解压缩限制为 250 MB,压缩限制为 50MB

将您的 lambda 转换为基于 docker 的解决方法之一,因为 lambda 最多接受 10GB docker 图像,但您需要先构建 docker 图像,这将增加 CI/CD 构建 + ECR 存储的管理和成本。

  • 此外,lambda 需要 IAM 权限才能拉取 ECR。