DEV Community

Joey The Dev
Joey The Dev

Posted on

Using aws-specific variables instead of 'Fn::Join'

As promised, I am starting with the documentation of my journey through AWS and the serverless framework so I can reference these things in the future and also help someone else along the way :)

So these posts will be super short and to the point. What I want to show today is configuring arns using the AWS variables in the serverless framework. Now a common way to configure the arn for a SNS topic inside the serverless yml/ts file using Fn::Join would be something like the below:

NB: NOTICE_ARN would be like an environment variable here

NOTICE_ARN: {
        'Fn::Join': [
          ':',
          [
            'arn:aws:sns',
            { Ref: 'AWS::Region' },
            { Ref: 'AWS::AccountId' },
            'user-notice-${self:provider.stage}'
          ]
        ]
      }
Enter fullscreen mode Exit fullscreen mode

But you can avoid the Fn::Join by simply putting everything into one string like so:

NOTICE_ARN: 'arn:aws:sns:${aws:region}:${aws:accountId}:user-notice-${self:provider.stage}'
Enter fullscreen mode Exit fullscreen mode

And thats it! Nicer, cleaner and it works offline with serverless offline too :) Previoulsy, in the environment variable, the value would be [Object Object] but now you would have a nice string with those aws values filled in.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay