Skip to content

Bug Report : Not be able to use Fn::ImportValue or Ref in the Authorizer section of a File in *.YAML File #3129

Description

@KamroozN

Not be able to use Fn::ImportValue or Ref in the Authorizer section of a File in *.YAML File

Description

Hi, It seems we found a bug. The scenario is as follows :

We defined a custom authorizer lambda function in a Cloudformation (stack A) and we exposed the ARN of the lambda function as an Output resource (Export name is "CustomAuthorizerDefaultFunction").
In the following Yml file which is located in a different Cloudformation stack (Stack B), we are going to Fn::ImportValue from cloudformation stack A. As we commented in the following Yaml file :
1- 'Fn::ImportValue': 'CustomAuthorizerDefaultFunction' works fine in the Resources-> Output section.
2- 'Fn::ImportValue': 'CustomAuthorizerDefaultFunction' does not work when we use it in Authorizer section of the function.
3- 'Fn::ImportValue': 'CustomAuthorizerDefaultFunction' works in the environment section of a function definition.
4- Also Besides 'Fn::ImportValue', Ref: AuthorizerArnImport does not work either.

Any thought ? If it is a known issue, any suggestions ?

Thanks

------------------------------------------------------ part of our Yml File----------------
service: usvc-dmp-rest
frameworkVersion: ">=1.0.0 <2.0.0"
plugins:

  • serverless-offline
    provider:
    profile: serverless-admin
    name: aws
    runtime: nodejs4.3
    memorySize: 128
    resources:
    Outputs:
    AuthorizerArnImport:
    Description: 'Authorizer Arn'
    Value:
    'Fn::ImportValue': 'CustomAuthorizerDefaultFunction'
    functions:
    myFunction:
    handler: 'app/endpoints/myFunction/handler.myFunctionHandler'
    environment:
    MY_THING:

Works

   'Fn::ImportValue': 'CustomAuthorizerDefaultFunction'
events:
  - http:
      path: aPath
      method: get
      authorizer:

Fails

arn:

Ref: AuthorizerArnImport

Works

arn: "arn:aws:lambda:us-east-1:xxxxxxx:function:CustomAuthorizer-DefaultFunction-1BT9PWQLLI7GI"

Fails?

        arn:
          'Fn::ImportValue': 'CustomAuthorizerDefaultFunction'
      integration: lambda
      request:
        template:
          application/json: ${self:custom.requestTemplate}
      cors: ${self:custom.cors}		
  • Serverless Framework Version you're using:

  • Stack Trace:

TypeError: functionArn.split is not a function
at Object.extractAuthorizerNameFromArn (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\lib\naming.js:110:34)
at AwsCompileApigEvents.getAuthorizer (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\deploy\compile\events\apiGateway\lib\validate.js:204:37)
at _.forEach (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\deploy\compile\events\apiGateway\lib\validate.js:50:36)
at arrayEach (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\lodash\lodash.js:537:11)
at Function.forEach (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\lodash\lodash.js:9344:14)
at _.forEach (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\deploy\compile\events\apiGateway\lib\validate.js:42:9)
at C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\lodash\lodash.js:4970:15
at baseForOwn (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\lodash\lodash.js:3020:24)
at C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\lodash\lodash.js:4939:18
at Function.forEach (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\lodash\lodash.js:9344:14)
at AwsCompileApigEvents.validate (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\deploy\compile\events\apiGateway\lib\validate.js:41:7)
at deploy:compileEvents (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\lib\plugins\aws\deploy\compile\events\apiGateway\index.js:42:31)
at BbPromise.reduce (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\lib\classes\PluginManager.js:160:50)
at tryCatcher (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\util.js:16:23)
at Object.gotValue (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\reduce.js:157:18)
at Object.gotAccum (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\reduce.js:144:25)
at Object.tryCatcher (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\promise.js:510:31)
at Promise._settlePromise (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\promise.js:567:18)
at Promise._settlePromise0 (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\promise.js:612:10)
at Promise._settlePromises (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\promise.js:691:18)
at Async._drainQueue (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\async.js:138:16)
at Async._drainQueues (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\async.js:148:10)
at Immediate.Async.drainQueues (C:\Users\KamroozN\AppData\Roaming\npm\node_modules\serverless\node_modules\bluebird\js\release\async.js:17:14)
at runCallback (timers.js:649:20)
at tryOnImmediate (timers.js:622:5)
at processImmediate [as _immediateCallback] (timers.js:594:5)

Your Environment Information -----------------------------
OS: win32
Node Version: 6.9.3
Serverless Version: 1.5.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions