FUNCTION_ERROR_INIT_FAILURE AWS lambda
Posted
技术标签:
【中文标题】FUNCTION_ERROR_INIT_FAILURE AWS lambda【英文标题】: 【发布时间】:2020-05-12 22:05:27 【问题描述】:我最近添加了很酷的 lambda 功能 - 预置并发。
在几次成功部署之后,我现在面临这个问题
无服务器错误 ----------------------------------------
ServerlessError:发生错误: GraphqlPrivateProvConcLambdaAlias - 预置并发 未能应用配置。原因: FUNCTION_ERROR_INIT_FAILURE。 在 C:\Users\theod\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\lib\monitorStack.js:125:33 从之前的事件: 在 AwsDeploy.monitorStack (C:\Users\theod\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\lib\monitorStack.js:28:12) 在 C:\Users\theod\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\lib\updateStack.js:107:28 从之前的事件: 在 AwsDeploy.update
这是我的示例 serverless.yml 文件
service: backend-api
parameters:
region: ap-southeast-2
path: &path /
provider:
name: aws
runtime: nodejs12.x
stage: $env:STAGE, 'staging'
region: ap-southeast-2
versionFunctions: true
plugins:
- serverless-webpack
- serverless-pseudo-parameters
- serverless-prune-plugin
# - serverless-offline-scheduler
- serverless-offline
functions:
# GRAPHQL APIs
graphqlPrivate:
handler: src/graphql/private/index.handler
memorySize: 256
timeout: 30
name: $self:service-gqlPrivate-$self:provider.stage
vpc: $file(./serverless/vpc.yml)
events:
- http:
path: /graphql/private
method: ANY
cors: true
authorizer:
arn: arn:aws:cognito-idp:#AWS::Region:#AWS::AccountId:userpool/$self:custom.cognitoArns.private.$self:provider.stage
provisionedConcurrency: 10
package:
individually: true
custom:
webpack:
keepOutputDirectory: true
serializedCompile: true
webpackConfig: 'webpack.config.js'
packager: 'npm'
stage: $opt:stage, self:provider.stage
prune:
automatic: true
number: 1
有人能解决这个问题吗?
Your Environment Information ---------------------------
Operating System: win32
Node Version: 12.11.0
Framework Version: 1.61.3
Plugin Version: 3.2.7
SDK Version: 2.3.0
Components Core Version: 1.1.2
Components CLI Version: 1.4.0
【问题讨论】:
【参考方案1】:FUNCTION_ERROR_INIT_FAILURE 显然意味着我尝试部署的函数的处理程序/代码有问题,w/c 是配置的 lambda 无法启动/初始化的原因。
解决此问题的方法是首先测试 w/o 配置的并发选项。 一旦你能够推送你的 lambda,错误肯定会流入你的 CW 日志。 不过,最好的方法是在本地测试您的 lambda(使用 serverless-offline 插件或 serverless invoke),如果它工作正常。 您还可以打包您的应用,并使用无服务器 cli 调用它以检测打包问题。
在我的情况下,我的代码包正在寻找不属于包的 require 时出现运行时错误。
截至目前(2020 年 1 月 29 日),这在 AWS lambda 上没有记录
【讨论】:
我有一个案例,调用 lambda 函数正在工作,但在初始化期间配置失败。在这种情况下我该怎么办? @DaniilVolkov 您可能正在调用一个过时的 lambda,因为配置 lambda 失败并出现上述错误是在部署阶段。意味着您最新的 lambda 未能成功部署。因此,您应该首先尝试解决问题。 Invoke 可能在本地工作,但在部署时情况就不同了,因为您的代码可能在打包时搞砸了,而且您必须考虑生产环境中可能出现的问题,例如缺少 ENV 变量、缺少 lambda 权限等 我还发现这个错误促使我编写单元/集成测试,因为整个部署过程的等待时间很长,如果是代码语法错误,那只会对开发时间造成巨大的损失。 @ShaungCheng 对。快速/尽快发现错误以克服开发时间损失将非常酷 - 通过自动化以上是关于FUNCTION_ERROR_INIT_FAILURE AWS lambda的主要内容,如果未能解决你的问题,请参考以下文章