sapessi / serverless-sam

Serverless framework plugin to export AWS SAM templates for a service
Apache License 2.0
152 stars 26 forks source link

Getting an error when running against my template #20

Open roboweaver opened 6 years ago

roboweaver commented 6 years ago

I see the following with my template - my suspicion is that it is the not handling the trigger section properly.

Robs-Mac-Pro:TrialAccountProvisionService robweaver$ serverless sam export --output ./sam-template-generated.yml --stage=dev --region=us-west-2
Serverless: Load command run
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command create
Serverless: Load command install
Serverless: Load command package
Serverless: Load command deploy
Serverless: Load command deploy:function
Serverless: Load command deploy:list
Serverless: Load command deploy:list:functions
Serverless: Load command invoke
Serverless: Load command invoke:local
Serverless: Load command info
Serverless: Load command logs
Serverless: Load command login
Serverless: Load command logout
Serverless: Load command metrics
Serverless: Load command print
Serverless: Load command remove
Serverless: Load command rollback
Serverless: Load command rollback:function
Serverless: Load command slstats
Serverless: Load command plugin
Serverless: Load command plugin
Serverless: Load command plugin:install
Serverless: Load command plugin
Serverless: Load command plugin:uninstall
Serverless: Load command plugin
Serverless: Load command plugin:list
Serverless: Load command plugin
Serverless: Load command plugin:search
Serverless: Load command emit
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command rollback
Serverless: Load command rollback:function
Serverless: Load command sam
Serverless: Load command sam:export
Serverless: Invoke sam:export
Serverless: Working folder: /Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam
Serverless: Validate
Serverless: Preparing original CloudFormation template
Serverless: Packaging functions
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Export:
Serverless: Exporting resources
Serverless: Exporting resource: LogExpiryLambdaFunction
Serverless: Exporting resource: LogExpiry
Serverless: Exporting resource: AWSLambdaVPCAccessExecutionRole
Serverless: Exporting resource: TAPRole
Serverless: Exporting resource: TAPCustomersTable
Serverless: Exporting resource: TAPAlarmTopic
Serverless: Exporting resource: EventSourceMappingCreate
Serverless: Exporting resource: EventSourceMappingEmail
Serverless: Exporting resource: EventSourceMappingAlert
Serverless: Exporting resource: LambdaExecSecurityGroup
Serverless: Exporting outputs
Serverless: Exporting parameters
Serverless: Exporting conditions
Serverless: Exporting functions
Serverless: Exporting function: create as Create
Serverless: Exporting function: list as List
Serverless: Exporting function: get as Get
Serverless: Exporting function: getLoginURL as GetLoginURL
Serverless: Exporting function: getRandomLogin as GetRandomLogin
Serverless: Exporting function: update as Update
Serverless: Exporting function: delete as Delete
Serverless: Exporting function: triggerCreate as TriggerCreate

  Type Error ---------------------------------------------

  Cannot read property 'enabled' of null

     For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

  Stack Trace --------------------------------------------

TypeError: Cannot read property 'enabled' of null
    at FunctionConverter.isEventEnabled (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/lib/FunctionConverter.js:120:18)
    at Object.keys.forEach (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/lib/FunctionConverter.js:93:21)
    at Array.forEach (<anonymous>)
    at serverlessFunction.events.forEach (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/lib/FunctionConverter.js:91:33)
    at Array.forEach (<anonymous>)
    at FunctionConverter.serverlessFunctionToSam (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/lib/FunctionConverter.js:85:33)
    at allFunctions.forEach (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/lib/SamGenerator.js:119:32)
    at Array.forEach (<anonymous>)
    at SamGenerator.readFunctions (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/lib/SamGenerator.js:109:20)
    at SamGenerator.generate (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/lib/SamGenerator.js:58:10)
    at BbPromise (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/index.js:206:46)
    at SamPlugin.exportSam (/Users/robweaver/Sites/master/SharedDeployScripts/AWS/serverless/TrialAccountProvisionService/node_modules/serverless-sam/index.js:203:12)
From previous event:
    at PluginManager.invoke (/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:372:22)
    at PluginManager.run (/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:403:17)
    at variables.populateService.then (/usr/local/lib/node_modules/serverless/lib/Serverless.js:102:33)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
From previous event:
    at Serverless.run (/usr/local/lib/node_modules/serverless/lib/Serverless.js:89:74)
    at serverless.init.then (/usr/local/lib/node_modules/serverless/bin/serverless:42:50)
    at <anonymous>

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Forums:        forum.serverless.com
     Chat:          gitter.im/serverless/serverless

  Your Environment Information -----------------------------
     OS:                     darwin
     Node Version:           8.9.1
     Serverless Version:     1.26.0

This is the first place I see 'enabled' in my serverless.yml:

 # Event that is triggered by the table log stream
  # Looks for events that are creating an account and starts that process
  triggerCreate:
    handler: users/triggerCreate.triggerCreate
    events:
          - stream: 
            # Get the stream to trigger on ...
            Fn::Join:
              - ""
              - - "arn:aws:dynamodb:${self:custom.region}::table/"
                - "Ref" : "TAPCustomersTable"
                - "/stream/"

#  # Event that is triggered by the table log stream
#  # Looks for events that are creating an account and starts that process
#  triggerCloningComplete:
#    handler: users/triggerCloningComplete.triggerCloningComplete
#    events:
#          - stream: 
#            # Get the stream to trigger on ...
#            Fn::Join:
#              - ""
#              - - "arn:aws:dynamodb:${self:custom.region}::table/"
#                - "Ref" : "TAPCustomersTable"
#                - "/stream/"

  # The function to check created items
  # This is a cron that looks at all records and tries to finish the cloning 
  # process that was started by triggerCreate (in case that times out)
  cronCreateCheck:
    handler: users/cronCreateCheck.cronCreateCheck
    events:
      # Schedule to run every 5 minutes
      - schedule: rate(1 minute)
        name: check-creation
        description: 'Check for creations every minute to update when cloning is complete'
        enabled: true
undecidedapollo commented 6 years ago

I had this same issue, I fixed it by indenting the attributes for the schedule event. From your example, it would look like this.

cronCreateCheck:
    handler: users/cronCreateCheck.cronCreateCheck
    events:
      # Schedule to run every 5 minutes
      - schedule: rate(1 minute)
          name: check-creation
          description: 'Check for creations every minute to update when cloning is complete'
          enabled: true