AWS Serverless + Cloud Formation:单一功能部署错误 - Windows 10 Env
AWS Serverless + Cloud Formation: Error on single function deploy - Windows 10 Env
关于使用 Serverless
和 Cloud Formation
在 AWS
中部署单个函数,我遇到了问题。我正在使用 Windows 10 - 64 bit
作为 OS.
环境:
Your Environment Information ---------------------------
Operating System: win32
Node Version: 10.16.3
Framework Version: 1.52.1
Plugin Version: 3.0.0
SDK Version: 2.1.1
基本上,当我运行 经典部署我所有的 AWS 环境 (sls deploy -s dev
) 时,一切正常。但是当我尝试部署单个 Lambda 函数时,我对其进行了更改,使用此命令:
sls deploy function -f MyLambdaFunc -s dev
我收到这个错误:
TypeError: Cannot read property 'artifact' of undefined
at ServerlessPythonRequirements.BbPromise.bind.then.then.then (C:\Users\user\Documents\company\client\AWS_environment\deployment\node_modules\serverless-python-requirements\index.js:176:48)
From previous event:
at PluginManager.invoke (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:505:22)
at getHooks.reduce.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:540:24)
From previous event:
at PluginManager.run (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:540:8)
at variables.populateService.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\Serverless.js:115:33)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
at process.topLevelDomainCallback (domain.js:126:23)
From previous event:
at Serverless.run (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\Serverless.js:102:74)
at serverless.init.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\bin\serverless.js:67:28)
at C:\Users\user\AppData\Roaming\npm\node_modules\serverless\node_modules\graceful-fs\graceful-fs.js:136:16
at C:\Users\user\AppData\Roaming\npm\node_modules\serverless\node_modules\graceful-fs\graceful-fs.js:57:14
at FSReqWrap.args [as oncomplete] (fs.js:140:20)
From previous event:
at initializeErrorReporter.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\bin\serverless.js:67:6)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
at process.topLevelDomainCallback (domain.js:126:23)
From previous event:
at Object.<anonymous> (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\bin\serverless.js:53:39)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
有人知道为什么吗?也许我在 Windows 10
上的 npm
安装有问题?
所以我发现新版本的Serverless(来自1.52
)有问题,所以用户无法部署单个lambda函数。
现在基本上没有办法解决这个问题,只能回滚到1.51
版本。
这里有一些细节:
我找到了解决方法,但不确定副作用。
问题出在 serverless-python-requirements/index.js 文件中的以下行(在我的版本中为第 176 行):
arguments[1].functionObj &&
arguments[1].functionObj.package.artifact.
它只是假设 serverless.yml 中的函数定义中存在 package.artifact 路径。
作为解决方法,我按如下方式将 "package: artifact:" 添加到我的函数中并且它起作用了:
hello:
handler: hello.handler
package:
artifact:
events:
- http:
path: hello
method: get
同样,我不确定这是否会破坏其他任何东西。我刚刚尝试了一个单独的功能部署并且它有效。但是我没有做详细的测试。
在 serverless.yml
中更新您的功能:
your_function:
# ...
package: {}
然后sls deploy
和sls deploy function -f your_function
。
关于使用 Serverless
和 Cloud Formation
在 AWS
中部署单个函数,我遇到了问题。我正在使用 Windows 10 - 64 bit
作为 OS.
环境:
Your Environment Information ---------------------------
Operating System: win32
Node Version: 10.16.3
Framework Version: 1.52.1
Plugin Version: 3.0.0
SDK Version: 2.1.1
基本上,当我运行 经典部署我所有的 AWS 环境 (sls deploy -s dev
) 时,一切正常。但是当我尝试部署单个 Lambda 函数时,我对其进行了更改,使用此命令:
sls deploy function -f MyLambdaFunc -s dev
我收到这个错误:
TypeError: Cannot read property 'artifact' of undefined
at ServerlessPythonRequirements.BbPromise.bind.then.then.then (C:\Users\user\Documents\company\client\AWS_environment\deployment\node_modules\serverless-python-requirements\index.js:176:48)
From previous event:
at PluginManager.invoke (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:505:22)
at getHooks.reduce.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:540:24)
From previous event:
at PluginManager.run (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:540:8)
at variables.populateService.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\Serverless.js:115:33)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
at process.topLevelDomainCallback (domain.js:126:23)
From previous event:
at Serverless.run (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\lib\Serverless.js:102:74)
at serverless.init.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\bin\serverless.js:67:28)
at C:\Users\user\AppData\Roaming\npm\node_modules\serverless\node_modules\graceful-fs\graceful-fs.js:136:16
at C:\Users\user\AppData\Roaming\npm\node_modules\serverless\node_modules\graceful-fs\graceful-fs.js:57:14
at FSReqWrap.args [as oncomplete] (fs.js:140:20)
From previous event:
at initializeErrorReporter.then (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\bin\serverless.js:67:6)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
at process.topLevelDomainCallback (domain.js:126:23)
From previous event:
at Object.<anonymous> (C:\Users\user\AppData\Roaming\npm\node_modules\serverless\bin\serverless.js:53:39)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
有人知道为什么吗?也许我在 Windows 10
上的 npm
安装有问题?
所以我发现新版本的Serverless(来自1.52
)有问题,所以用户无法部署单个lambda函数。
现在基本上没有办法解决这个问题,只能回滚到1.51
版本。
这里有一些细节:
我找到了解决方法,但不确定副作用。
问题出在 serverless-python-requirements/index.js 文件中的以下行(在我的版本中为第 176 行):
arguments[1].functionObj &&
arguments[1].functionObj.package.artifact.
它只是假设 serverless.yml 中的函数定义中存在 package.artifact 路径。
作为解决方法,我按如下方式将 "package: artifact:" 添加到我的函数中并且它起作用了:
hello:
handler: hello.handler
package:
artifact:
events:
- http:
path: hello
method: get
同样,我不确定这是否会破坏其他任何东西。我刚刚尝试了一个单独的功能部署并且它有效。但是我没有做详细的测试。
在 serverless.yml
中更新您的功能:
your_function:
# ...
package: {}
然后sls deploy
和sls deploy function -f your_function
。