无服务器部署无法找到无服务器插件预热
serverless plugin warmup cannot be found by severless deployment
我在 AWS 上尝试部署 lambda 时遇到以下错误。
Serverless Error ---------------------------------------
An error occurred: WarmUpPluginLambdaFunction - The runtime parameter of nodejs6.10 is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs10.x) while creating or updating functions. (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: 5211b05e-0bd4-40d7-9555-9aac489053d0).
所以,我升级了serverless-plugin-warmup的版本。现在,当我尝试在 AWS 上部署无服务器 lambda 时,出现以下错误。该插件在节点 6.10
上运行良好
Serverless Error ---------------------------------------
Serverless plugin "serverless-plugin-warmup" not found. Make sure it's installed and listed in the "plugins" section of your serverless config file.
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information -----------------------------
OS: linux
Node Version: 8.10.0
Serverless Version: 1.35.1
这里需要一些见解,在 AWS 上部署时出了什么问题。
部署脚本是
"deploy:staging": "cross-env NODE_ENV=staging sls deploy -s staging"
- 我已经从 3.0.0-rc.1 升级了 serverless-plugin-warmup 版本
到 4.0.0-rc.1.
- 我已经将 AWS 上的节点版本从 6.10 升级到
8.10
serverless.yml
plugins:
- serverless-plugin-warmup
- serverless-offline
- serverless-domain-manager
- serverless-log-forwarding
custom:
warmup:
schedule: 'cron(0/10 12-23 ? * MON-FRI *)'
prewarm: true
functions:
myFunction:
warmup: ${self:provider.environment.CRON}
handler: handler.myFunction
events:
- http:
path: '{model}/{id}'
method: GET
authorizer: auth
cors:
origins:
- ${self:provider.environment.APP_DOMAIN}
headers: ${self:custom.headers}
allowCredentials: true
对于第一个错误,请尝试将其添加到您的 serverless.yml 文件的根级别(与插件、函数和自定义级别相同):
provider:
runtime: nodejs8.10
这应该确保您的部署在正确的运行时(全局)运行。或者,您可以在 lambda 下添加运行时设置(与预热级别相同),以便单独选择运行时。
对于你的第二个错误,可能是你的 "upgrade" 不顺利,你需要再做一次 npm 安装。它告诉您您指定了 "serverless-plugin-warmup",但在您的 node_modules 中找不到它。您可能必须删除 package-lock.json and/or 您的 node_modules 文件夹并重新安装 npm。确保将其列在 package.json (npm i serverless-plugin-warmup -D
).
中
我在 AWS 上尝试部署 lambda 时遇到以下错误。
Serverless Error ---------------------------------------
An error occurred: WarmUpPluginLambdaFunction - The runtime parameter of nodejs6.10 is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs10.x) while creating or updating functions. (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: 5211b05e-0bd4-40d7-9555-9aac489053d0).
所以,我升级了serverless-plugin-warmup的版本。现在,当我尝试在 AWS 上部署无服务器 lambda 时,出现以下错误。该插件在节点 6.10
上运行良好Serverless Error ---------------------------------------
Serverless plugin "serverless-plugin-warmup" not found. Make sure it's installed and listed in the "plugins" section of your serverless config file.
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information -----------------------------
OS: linux
Node Version: 8.10.0
Serverless Version: 1.35.1
这里需要一些见解,在 AWS 上部署时出了什么问题。 部署脚本是
"deploy:staging": "cross-env NODE_ENV=staging sls deploy -s staging"
- 我已经从 3.0.0-rc.1 升级了 serverless-plugin-warmup 版本 到 4.0.0-rc.1.
- 我已经将 AWS 上的节点版本从 6.10 升级到 8.10
serverless.yml
plugins:
- serverless-plugin-warmup
- serverless-offline
- serverless-domain-manager
- serverless-log-forwarding
custom:
warmup:
schedule: 'cron(0/10 12-23 ? * MON-FRI *)'
prewarm: true
functions:
myFunction:
warmup: ${self:provider.environment.CRON}
handler: handler.myFunction
events:
- http:
path: '{model}/{id}'
method: GET
authorizer: auth
cors:
origins:
- ${self:provider.environment.APP_DOMAIN}
headers: ${self:custom.headers}
allowCredentials: true
对于第一个错误,请尝试将其添加到您的 serverless.yml 文件的根级别(与插件、函数和自定义级别相同):
provider:
runtime: nodejs8.10
这应该确保您的部署在正确的运行时(全局)运行。或者,您可以在 lambda 下添加运行时设置(与预热级别相同),以便单独选择运行时。
对于你的第二个错误,可能是你的 "upgrade" 不顺利,你需要再做一次 npm 安装。它告诉您您指定了 "serverless-plugin-warmup",但在您的 node_modules 中找不到它。您可能必须删除 package-lock.json and/or 您的 node_modules 文件夹并重新安装 npm。确保将其列在 package.json (npm i serverless-plugin-warmup -D
).