Joey Yi Zhao
Joey Yi Zhao

Reputation: 42426

How can I reference lambda name in serverless.yml file?

I have serverless.yml as below:

functions:
  - myLambda:
      handler: src/lambdas.myLambdaHanlder
      name: myLambdaHandler
      timeout: 30

Resources:
  lambdaRole
    Type: AWS::IAM::Role
    Properties:
      RoleName: ${myLambdaName}Role   # here, how can I reference myLambda function name in the role

I above code, I'd like to put lambda function name as the IAM role name prefix. How can I reference lambda function name there?

Upvotes: 1

Views: 2353

Answers (1)

jellycsc
jellycsc

Reputation: 12259

You have two options here.

Option 1: Using Serverless Framework syntax ${}

custom:
  myLambdaHandlerName: myLambdaHandler


functions:
  - myLambda:
      handler: src/lambdas.myLambdaHanlder
      name: ${self:custom.myLambdaHandlerName}
      timeout: 30

Resources:
  lambdaRole
    Type: AWS::IAM::Role
    Properties:
      RoleName: ${self:custom.myLambdaHandlerName}Role

Option 2: Using CloudFormation intrinsic functions

functions:
  - myLambda:
      handler: src/lambdas.myLambdaHanlder
      name: myLambdaHandler
      timeout: 30

Resources:
  lambdaRole
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Join [ "", [ !Ref myLambdaLambdaFunction, "Role" ] ]

Upvotes: 1

Related Questions