Search code examples
node.jsamazon-web-servicesaws-lambdaserverless-frameworkserverless

FUNCTION_ERROR_INIT_FAILURE AWS lambda


I recently added the cool lambda feature - provisioned concurrency.

After a few successful deployments, I now face this issue

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

ServerlessError: An error occurred: GraphqlPrivateProvConcLambdaAlias - Provisioned Concurrency configuration failed to be applied. Reason: FUNCTION_ERROR_INIT_FAILURE. at C:\Users\theod\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\lib\monitorStack.js:125:33 From previous event: at AwsDeploy.monitorStack (C:\Users\theod\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\lib\monitorStack.js:28:12) at C:\Users\theod\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\lib\updateStack.js:107:28 From previous event: at AwsDeploy.update

here's my sample serverless.yml file

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

anybody able to resolve this issue?

  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

Solution

  • FUNCTION_ERROR_INIT_FAILURE plainly means there's something wrong with the function's handler/code that i'm trying to deploy, w/c is why provisioned lambdas can't start up/initialize.

    The way to resolve this, is to test w/o provisioned concurrency option first. Once you are able to push your lambda, error(s) will surely flow into your CW logs. The best way though, is to test your lambda locally(using serverless-offline plugin or serverless invoke), if it works properly. You can also package your app, and invoke it with serverless cli to detect issues on packaging.

    In my case, there is a runtime error where my code bundle is looking for a require that is not part of bundle.

    This is undocumented on AWS lambda as of now(Jan 29, 2020)