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的主要内容,如果未能解决你的问题,请参考以下文章