serverless: functionAddress.startsWith is not a function when destinations is used

Bug Report

Description

When destinations property defined in serverless.yml it fails to deploy.

What did you do?

Add destination to my serverless.yml

What happened?

sls deploy failed with error TypeError: functionAddress.startsWith is not a function

What should’ve happened?

Lambda function is deployed.

What’s the content of your serverless.yml file?

service:
  name: my-lambda

plugins:
  - serverless-webpack

provider:
  name: aws
  runtime: nodejs12.x

functions:
  my-function:
    handler: handler.sqsHannlder
    events:
      - sqs:
          batchSize: 1
          arn:
            Fn::GetAtt:
              - TriggerQueue
              - Arn
    destinations:
      onFailure:
        Fn::GetAtt:
          - DeadLetterQueue
          - Arn      
resources:
  Resources:
    TriggerQueue:
      Type: "AWS::SQS::Queue"
    DeadLetterQueue:
      Type: "AWS::SQS::Queue"          

What’s the output you get when you use the SLS_DEBUG=* environment variable (e.g. SLS_DEBUG=* serverless deploy)

Serverless: Load command interactiveCli
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command config:tabcompletion
Serverless: Load command config:tabcompletion:install
Serverless: Load command config:tabcompletion:uninstall
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 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 config
Serverless: Load command config:credentials
Serverless: Load command rollback
Serverless: Load command rollback:function
Serverless: Load command upgrade
Serverless: Load command uninstall
Serverless: Load command webpack
Serverless: Load command login
Serverless: Load command logout
Serverless: Load command generate-event
Serverless: Load command test
Serverless: Load command dashboard
Serverless: Load command output
Serverless: Load command output:get
Serverless: Load command output:list
Serverless: Load command param
Serverless: Load command param:get
Serverless: Load command param:list
Serverless: Load command studio
Serverless: Load command dev
Serverless: Invoke deploy
Serverless: Invoke package
Serverless: Invoke aws:common:validate
Serverless: Invoke aws:common:cleanupTempDir
Serverless: Invoke webpack:validate
Serverless: Invoke webpack:compile
Serverless: Bundling with Webpack...
Time: 7155ms
Built at: 04/26/2020 5:20:44 PM
         Asset      Size  Chunks                   Chunk Names
    handler.js  4.51 MiB       0  [emitted]        handler
handler.js.map  1.54 MiB       0  [emitted] [dev]  handler
Entrypoint handler = handler.js handler.js.map
  [0] ./node_modules/aws-sdk/lib/core.js 2.43 KiB {0} [built]
  [1] ./node_modules/aws-sdk/lib/node_loader.js 3.81 KiB {0} [built]
  [2] ./node_modules/aws-sdk/lib/util.js 31.6 KiB {0} [built]
  [4] ./node_modules/aws-sdk/clients/sts.js 573 bytes {0} [built]
  [6] external "fs" 42 bytes {0} [built]
  [8] ./node_modules/aws-sdk/lib/model/shape.js 11.6 KiB {0} [built]
  [9] ./node_modules/aws-sdk/lib/protocol/rest.js 4.45 KiB {0} [built]
 [10] external "stream" 42 bytes {0} [built]
 [23] ./node_modules/aws-sdk/lib/protocol/json.js 2.17 KiB {0} [built]
 [24] ./node_modules/aws-sdk/lib/json/builder.js 1.51 KiB {0} [built]
 [66] ./node_modules/aws-sdk/lib/aws.js 159 bytes {0} [built]
 [67] ./handler.ts 4.93 KiB {0} [built]
[149] ./node_modules/aws-sdk/clients/all.js 8.76 KiB {0} [built]
[893] ./node_modules/source-map-support/register.js 25 bytes {0} [built]
[894] ./node_modules/source-map-support/source-map-support.js 19.3 KiB {0} [built]
    + 890 hidden modules
Serverless: Invoke webpack:package
Serverless: Packaging service...
 
  Type Error ---------------------------------------------
 
  TypeError: functionAddress.startsWith is not a function
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:604:28
      at AwsCompileFunctions.ensureTargetExecutionPermission (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:611:7)
      at AwsCompileFunctions.memoized [as ensureTargetExecutionPermission] (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/node_modules/lodash/lodash.js:10552:27)
      at AwsCompileFunctions.compileFunctionDestinations (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:587:12)
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:555:56
      at ReadStream.<anonymous> (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:465:15)
      at ReadStream.emit (events.js:210:5)
      at ReadStream.EventEmitter.emit (domain.js:475:20)
      at internal/fs/streams.js:218:14
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/node_modules/graceful-fs/graceful-fs.js:57:14
      at FSReqCallback.oncomplete (fs.js:146:23)
  From previous event:
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:555:40
  From previous event:
      at AwsCompileFunctions.compileFunction (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:121:25)
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:635:62
  From previous event:
      at AwsCompileFunctions.compileFunctions (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:635:22)
  From previous event:
      at Object.package:compileFunctions [as hook] (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/aws/package/compile/functions/index.js:32:12)
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/classes/PluginManager.js:490:55
  From previous event:
      at PluginManager.invoke (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/classes/PluginManager.js:490:22)
      at PluginManager.spawn (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/classes/PluginManager.js:510:17)
      at Deploy.<anonymous> (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/deploy/deploy.js:115:50)
  From previous event:
      at Object.before:deploy:deploy [as hook] (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/plugins/deploy/deploy.js:100:30)
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/classes/PluginManager.js:490:55
  From previous event:
      at PluginManager.invoke (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/classes/PluginManager.js:490:22)
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/classes/PluginManager.js:525:24
  From previous event:
      at PluginManager.run (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/classes/PluginManager.js:525:8)
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/Serverless.js:133:33
      at processImmediate (internal/timers.js:439:21)
      at process.topLevelDomainCallback (domain.js:130:23)
  From previous event:
      at Serverless.run (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/lib/Serverless.js:120:74)
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/bin/serverless.js:82:30
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/node_modules/graceful-fs/graceful-fs.js:136:16
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/node_modules/graceful-fs/graceful-fs.js:57:14
      at FSReqCallback.oncomplete (fs.js:146:23)
  From previous event:
      at /Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/bin/serverless.js:82:8
      at processImmediate (internal/timers.js:439:21)
      at process.topLevelDomainCallback (domain.js:130:23)
  From previous event:
      at Object.<anonymous> (/Users/ivan.strahovsky/.nvm/versions/node/v12.14.0/lib/node_modules/serverless/bin/serverless.js:71:4)
      at Module._compile (internal/modules/cjs/loader.js:959:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
      at Module.load (internal/modules/cjs/loader.js:815:32)
      at Function.Module._load (internal/modules/cjs/loader.js:727:14)
      at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
      at internal/main/run_main_module.js:17:11
 
  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              12.14.0
     Framework Version:         1.66.0
     Plugin Version:            3.6.8
     SDK Version:               2.3.0
     Components Version:        2.30.1

If I remove destinations property it works fine. Tried on version 1.68.0 fails with same error.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 2
  • Comments: 17 (11 by maintainers)

Commits related to this issue

Most upvoted comments

@Ivan-Strahovsky thanks for report. The issue is in error reporting (which will be fixed once we have https://github.com/serverless/serverless/issues/6562 addressed, with corresponding schema provided).

Currently there’s no support for CloudFormation instructions in destinations configuration. It either has to be ARN input literally (or referenced via Serverless variables), or name of a function also deployed with same stack which we want to point

@ceoworks no, as no one really requested this feature. If you feel it’s valuable, please open feature request (as I stated in linked comment)