gpt4 book ai didi

node.js - 无法创建 AWS CloudFormation 堆栈

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

我正在将项目的 Node 版本更改为 14,并尝试将其自定义部署到我的暂存环境中进行测试。但是将版本更改为14后,运行serverless deploy --stage <some-name>时出现以下错误:-

Resource handler returned message: "Uploaded file must be a non-empty zip (Service: Lambda, Status Code: 400, Request ID: fcd74175-94cd-4fd9-81ec-4a27042a685e)" (RequestToken: 54f90861-af13-989c-be06-cdb17f4b5f39, HandlerErrorCode: InvalidRequest)

以下是控制台日志:-

Running "serverless" from node_modules
Serverless: Deprecation warning: bin/serverless is deprecated, use bin/serverless.js instead
More Info: https://www.serverless.com/framework/docs/deprecations/#BIN_SERVERLESS
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service get-payment-methods.zip file to S3 (102.27 MB)...
Serverless: Validating template...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.............................................
Serverless: Stack create finished...

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

Stack with id <stack-name> does not exist

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

Your Environment Information ---------------------------
Operating System: darwin
Node Version: 16.13.1
Framework Version: 1.83.3 (local)
Plugin Version: 3.8.4
SDK Version: 2.3.2
Components Version: 2.34.9

我经历了 Uploaded file must be a non-empty zip (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; 中给出的解决方案。我尝试升级无服务器版本。我还尝试使用 Node 版本 14.19.1 和 14.15.4。但我不断收到同样的错误。

这是我的 package.json 文件:-

{
"name": "GetPaymentMethods",
"description": "GetPaymentMethods WebService",
"version": "0.0.1",
"private": true,
"dependencies": {
"@sentry/node": "5.12.0",
"aws-serverless-express": "3.1.3",
"cors": "^2.8.4",
"dotenv": "8.0.0",
"express": "4.16.2",
"axios": "0.18.0",
"node": "14.19.1"
},
"devDependencies": {
"mocha": "5.0.0",
"nyc": "^15.1.0",
"moxios": "^0.4.0",
"serverless-domain-manager": "^2.6.0",
"serverless-sentry": "^1.2.0",
"sinon": "^6.1.4",
"supertest": "3.0.0",
"unit.js": "2.0.0",
"serverless-newrelic-lambda-layers": "^0.1.16",
"eslint": "6.8.0",
"serverless": "^1.32.0",
"serverless-offline": "^3.31.0"
},
"scripts": {
"pretest": "echo 'Running eslint' && eslint .",
"test": "nyc mocha --recursive tests"
},
"nyc": {
"reporter": [
"lcov",
"text-summary"
]
}
}

这是我的 serverless.yml 文件:-

service: get-payment-methods

plugins:
# - serverless-newrelic-lambda-layers
# - serverless-domain-manager
# - serverless-sentry
- serverless-offline


provider:
name: aws
runtime: nodejs14.x
region: eu-west-1
memorySize: 128
timeout: 30
endpointType: REGIONAL
deploymentBucket:
name: np-serverless-deploy-bucket-npr
environment:
CONFIG: ${file(./serverless.env.yml):${opt:stage}.CONFIG}

functions:
get-payment-methods:
handler: index.handler
events:
- http:
path: /
method: get
cors: true
- http:
path: /v1/test
method: get
cors: true
- http:
path: /v1
method: get
cors: true

我无法使用最新的 Node v16,因为 AWS Lambda 和 CodeBuild 不支持它。我必须使用 v14。请帮忙。

附注- 如果重要的话,我的机器中的全局 Node 版本是 16.13.1。

最佳答案

因此,我通过为该项目存储库和全局存储库保留相同的 NodeJS 版本来解决这个问题。似乎无服务器出于某种原因选择了全局版本而不是本地版本,这会导致冲突(检查我在问题中发布的控制台日志)。对我来说,v14.17.1 和 v14.17.6 可以工作,无需升级任何其他软件包。

关于node.js - 无法创建 AWS CloudFormation 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71914020/

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