gpt4 book ai didi

node.js - 上传的文件必须是非空的 zip(服务 : AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException;

转载 作者:行者123 更新时间:2023-12-03 12:14:07 26 4
gpt4 key购买 nike

我有一个简单的 Express/Node.js 应用程序,其中包含以下没有子目录的文件(除了 .serverless 和 node_modules)。

  • .serverless
  • node_modules
  • app.js
  • lambda.js
  • package.json
  • package-lock.json
  • serverless.yml

  • AWS 抛出此错误 - 发生错误:ApiLambdaFunction - 上传的文件必须是非空的 zip(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:5779d4c3-beaa-4bc2-b525-c1e89a82635a;代理:null)。
    当我访问代码上传到的 S3 存储桶时,.zip 文件不是空的。我能够看到 .zip 文件夹及其所有内容,但是, serverless deploy AWS CLI 操作失败,引发上述异常。任何帮助将问题归零将不胜感激。谢谢!
    以下是代码。
  • app.js
  • const express = require("express")
    const app = express();

    app.use(express.json());
    app.use(express.urlencoded({extended: false}));

    app.get("/", (req, res) => {
    res.status(200).send("Root endpoint")
    })

    app.post("/postReq", (req, res) => {
    res.status(200).send(req.body);
    })

    app.listen(8080, () => console.log("App started."))

  • lambda.js
  • 'use strict'
    const awsServerlessExpress = require('aws-serverless-express')
    const app = require('./app')
    const server = awsServerlessExpress.createServer(app)

    exports.handler = (event, context) => { awsServerlessExpress.proxy(server, event, context) }
  • package.json
  • {
    "name": "my-lambda",
    "version": "1.0.0",
    "description": "Lambda Function",
    "main": "app.js",
    "scripts": {
    "start": "node app.js",
    "deploy": "serverless deploy"
    },
    "author": "Aseem Savio",
    "license": "ISC",
    "dependencies": {
    "aws-serverless-express": "^3.4.0",
    "express": "^4.17.1"
    },
    "devDependencies": {
    "serverless": "^2.21.1"
    }
    }

  • serverless.yml
  • service: my-lambda-function

    provider:
    name: aws
    runtime: nodejs10.x
    memorySize: 512
    timeout: 15
    stage: production
    region: ap-south-1

    functions:
    api:
    handler: lambda.handler
    events:
    - http: ANY {proxy+}
    - http: ANY /
    以下是控制台日志。
    aseemsavio@aseem-ubuntu:~/projects/Node.js/my-lambda$ npm run deploy

    > my-lambda@1.0.0 deploy
    > serverless deploy

    Serverless: Configuration warning at 'functions.api.events[0].http': value 'ANY {proxy+}' does not satisfy pattern /^(?:\*|(GET|POST|PUT|PATCH|OPTIONS|HEAD|DELETE|ANY) (\/\S*))$/i
    Serverless:
    Serverless: Learn more about configuration validation here: http://slss.io/configuration-validation
    Serverless:
    Serverless: Deprecation warning: Starting with next major version, default value of provider.lambdaHashingVersion will be equal to "20201221"
    More Info: https://www.serverless.com/framework/docs/deprecations/#LAMBDA_HASHING_VERSION_V2
    Serverless: Deprecation warning: Starting with next major version, API Gateway naming will be changed from "{stage}-{service}" to "{service}-{stage}".
    Set "provider.apiGateway.shouldStartNameWithService" to "true" to adapt to the new behavior now.
    More Info: https://www.serverless.com/framework/docs/deprecations/#AWS_API_GATEWAY_NAME_STARTING_WITH_SERVICE
    Serverless: Packaging service...
    Serverless: Excluding development dependencies...
    Serverless: Uploading CloudFormation file to S3...
    Serverless: Uploading artifacts...
    Serverless: Uploading service my-lambda.zip file to S3 (917.12 KB)...
    Serverless: Validating template...
    Serverless: Updating Stack...
    Serverless: Checking Stack update progress...
    ................
    Serverless: Operation failed!
    Serverless: View the full error output: https://ap-south-1.console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stack/detail?stackId=arn%3Aaws%3Acloudformation%3Aap-south-1%3A617584887932%3Astack%2Fmy-lambda-production%2F6d6f6ed0-607d-11eb-a05e-02c8952955f8

    Serverless Error ---------------------------------------

    An error occurred: ApiLambdaFunction - Uploaded file must be a non-empty zip (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: 5779d4c3-beaa-4bc2-b525-c1e89a82635a; Proxy: null).

    Get Support --------------------------------------------
    Docs: docs.serverless.com
    Bugs: github.com/serverless/serverless/issues
    Issues: forum.serverless.com

    Your Environment Information ---------------------------
    Operating System: linux
    Node Version: 15.6.0
    Framework Version: 2.21.1 (local)
    Plugin Version: 4.4.2
    SDK Version: 2.3.2
    Components Version: 3.5.1

    npm ERR! code 1
    npm ERR! path /home/aseemsavio/projects/Node.js/my-lambda
    npm ERR! command failed
    npm ERR! command sh -c serverless deploy

    npm ERR! A complete log of this run can be found in:
    npm ERR! /home/aseemsavio/.npm/_logs/2021-01-27T09_38_04_670Z-debug.log
    aseemsavio@aseem-ubuntu:~/projects/Node.js/my-lambda$
    调试文件中的完整日志如下:
    0 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'deploy' ]
    1 info using npm@7.4.0
    2 info using node@v15.6.0
    3 timing config:load:defaults Completed in 1ms
    4 timing config:load:file:/usr/local/lib/node_modules/npm/npmrc Completed in 0ms
    5 timing config:load:builtin Completed in 0ms
    6 timing config:load:cli Completed in 1ms
    7 timing config:load:env Completed in 1ms
    8 timing config:load:file:/home/aseemsavio/projects/Node.js/my-lambda/.npmrc Completed in 0ms
    9 timing config:load:project Completed in 0ms
    10 timing config:load:file:/home/aseemsavio/.npmrc Completed in 0ms
    11 timing config:load:user Completed in 0ms
    12 timing config:load:file:/usr/local/etc/npmrc Completed in 1ms
    13 timing config:load:global Completed in 1ms
    14 timing config:load:cafile Completed in 0ms
    15 timing config:load:validate Completed in 0ms
    16 timing config:load:setUserAgent Completed in 0ms
    17 timing config:load:setEnvs Completed in 1ms
    18 timing config:load Completed in 5ms
    19 verbose npm-session 39866318e36c1c25
    20 timing npm:load Completed in 11ms
    21 timing command:run-script Completed in 49470ms
    22 verbose stack Error: command failed
    22 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
    22 verbose stack at ChildProcess.emit (node:events:379:20)
    22 verbose stack at maybeClose (node:internal/child_process:1065:16)
    22 verbose stack at Process.ChildProcess._handle.onexit (node:internal/child_process:296:5)
    23 verbose pkgid my-lambda@1.0.0
    24 verbose cwd /home/aseemsavio/projects/Node.js/my-lambda
    25 verbose Linux 5.8.0-38-generic
    26 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "deploy"
    27 verbose node v15.6.0
    28 verbose npm v7.4.0
    29 error code 1
    30 error path /home/aseemsavio/projects/Node.js/my-lambda
    31 error command failed
    32 error command sh -c serverless deploy
    33 verbose exit 1

    最佳答案

    此问题是由 archiverjs/node-archiver 引起的当前在 Node 版本 15.6.0 或更高版本上运行时,在无服务器内部使用的依赖项。
    正如许多人提出的here 将 Node 版本降级到当前的 LTS 版本 v14.15.4 或 v15.5.1 应该可以正常工作 正如 MX D 在他的 comment 中提到的那样.
    许多人在 CI/CD 管道中构建他们的包时都会遇到这个问题,因为他们使用的是 Node docker 镜像。
    例如在 GitLab 中,例如:

    default:
    image: node:alpine
    而不是 node:alpine,错误也应该发生在 node:latest 等上。这些行应该更改为上述特定的工作版本,如下所示:
    default:
    image: node:15.5.1

    关于node.js - 上传的文件必须是非空的 zip(服务 : AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65916681/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com