AWS Cloud Financial Management

Improving your FinOps practice with real-time Slack notifications of AWS CFM announcements

AWS publishes more than 200 announcements per month to the “What’s New with AWS” website and RSS feed, so there’s a lot to get excited about. However, finding relevant announcements in these updates can be a challenge for engineers, finance professionals, or FinOps stakeholders.

FinOps teams have been tracking the latest announcements manually or with the X (formerly Twitter) Cost News Bot to simplify the tracking process. We have seen some teams prefer to track these announcements directly in Slack or want to tailor the types of announcements to more specific service scopes.

In this blog, we will deploy a solution to collect cost optimization related announcements from the “What’s New with AWS” feed and pass them into a dedicated Slack channel. Figure 1 shows the solution workflow from execution to the Slack channel posting.

Figure 1. Solution workflow

Figure 1. Solution workflow

Why is this needed?

AWS published more than 1,400 product announcements in the last 6 months. About 10% were cost or efficiency related. To better understand the frequency of these announcements, Figure 2 shows the past 6 months of announcements in aggregate with all cost related announcements highlighted in yellow.

Figure 2 AWS Announcements by Day, July ’23 to December ‘23

Figure 2 AWS Announcements by Day, July ’23 to December ‘23

Such announcements included AWS Compute Optimizer supporting Amazon ECS , AWS Billing Conductor Pricing Change (with free tier update), and AWS Lambda detecting and stopping recursive loops. For the cost-conscious builder, identifying these announcements enables you to stay up to date with how to optimize your AWS usage.

Adding a regular review process for recent announcements not only helps FinOps teams stay informed, but also helps prioritize efficiency opportunities that result from new announcements. Customers like Capital One actively track these announcements as part of their ongoing FinOps practices.

Jerzy Grzywinski, Tech Head of FinOps at Capital One, described the role the announcements play in their FinOps processes:

The Capital One CloudX team is responsible for organization-wide FinOps strategy. That includes a weekly cadence to track AWS announcements related to reducing cost. Understanding how the latest tools, optimized resource types and lower cost pricing options apply to our usage helps us prioritize optimization efforts. We’re able to build a strategy around automation, governance and education to help our teams implement the capabilities, passing on the benefits of lower cost or more performance to our customers.

To make tracking easier, customers interested in cost efficiency can automate the collection and sharing of news in real-time. Here’s how to get started.

Walkthrough

We will walkthrough four steps to create the solution:

  1. Create a new slack channel for AWS Announcements – This will be where the AWS announcements will be published
  2. Deploy AWS CloudFormation Stack – Contains infrastructure which will scan for updates and feed them into the channel
  3. Test deployment – The first run of the code will ensure all settings have been configured correctly so you can see the output in the channel
  4. Start sharing – Guidance on how to use this channel to get the most out of it

Prerequisites

  • An AWS account
  • IAM permissions in the account to deploy a Amazon CloudFormation template with a AWS lambda function, AWS IAM Role, and Amazon S3 Bucket
  • A Slack Workspace to create the channel in (Instructions to create slack app if you don’t have one)
  • The ability to Activate Incoming Webhooks or request this in your Organization

1. Create Slack Channel

For this solution we will create a slack channel for the cost announcements. For this, we have linked to the official Slack guidance.

  1. Open your Slack Workspace and Click Add Channels
  2. Name your channel #aws-cost-optimization-news-and-announcements. Once created, click on the drop down
  3. Click the Integrations tab and click Add a Workflow
  4. Click Create. In the pop up call your workflow aws-cost-optimization-workflow

    Figure 3. Name your slack channel

    Figure 3. Name your slack channel

  5. Click Select next to Webhook
  6. Click Add Variable
  7. In the pop up add ‘title’ and leave as text. Click Done.

    Figure 4. Add title and done

    Figure 4. Add title and done

  8. Repeat for ‘description’ and ‘url’. When done click Next
  9. Click Add Step
  10. Select Send a message from the list
  11. Find your channel you made earlier in the drop down box. Then in the text box insert your variables, each one on a new line. Highlight the title and change it to bold. Click Save
  12. Click the Publish button
  13. Copy your Webhook as we will use this in the next step. Close this pop out.

    Figure 7. Copy webhook

    Figure 7. Copy webhook

  14. You should have a Webhook that looks like below. Keep a copy of this to hand as we will use in the next section:

https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

2. Deploy AWS CloudFormation Stack

Figure 8. AWS CloudFormation Architecture Diagram

Figure 8. AWS CloudFormation Architecture Diagram

In this section we will deploy the resources for this solution in your AWS account

  1. Log in to your AWS account2
  2. Link to CloudFormation stack:
    [Launch stack button]
  3. Update the Webhook parameter with your web hook from section 1. Tick the acknowledge box and click Create stack. You can see the repo here.
  4. Wait until the stack has finished deploying and is showing as CREATE-COMPLETE (estimated 3 minuets)

3. Test Deployment

In this section we will test your deployment.

  1. In your CloudFormation stack, click Resources and look for your lambda function CFM_RSS_Lambda. Click the blue hyperlink
  2. This link takes you to the lambda console. Scroll down and click on the Test tab and then click the orange Test button on the right.
  3. You should see a green box appear showing a successful execution

In your cost optimization slack channel, you should now see

Figure 9. Example

Figure 9. Example

4. Start Sharing

Below are some tips to ensure people access and use the announcements you share

  • Allow channel to be open to anyone
  • Advertise to your teams from different app teams/FinOps
  • Choose your highlights and share in weekly updates
  • Use Slack emoji feature to get devs to react to posts they found interesting or will implement. this way you can track engagement.

Cleaning up

To avoid incurring future charges, delete the news bot.

  1. Go your AWS CloudFormation Console and find the RSS Stack
  2. Click on Resources and find your S3Bucket name and copy the physical ID
  3. Go to your S3 Console and Search for the physical ID and click Empty. Once complete go back and click the Delete button
  4. Go to your CloudFormation Console. Click on your Stack Delete CloudFormation stack and click Delete
  5. Go to your Slack app. Click on the channel name in the conversation header. Click on View Channel Detailed. On setting scroll to the bottom and archive channel.

Conclusion

Now you have this setup in your Slack you will start to inspire more people to use AWS announcements to optimize their workloads. If you have another RSS feed you wish to report to in Slack, follow the same steps but replace the key_words in the python code to filter for what you want to look for. Multiple deployments can help narrow announcements to teams focused on specific domains or services. Review your feed, share with stakeholders and continue to optimize!

Please email feedback or questions for this blog to costoptimization@amazon.com

Steph Gooch

Steph Gooch

Steph is a Sr. Optimization Solutions Architect Advocate. She is a subject matter expert in guiding customers through ways to optimize their current and future AWS spend. she enables customers to organize and interpret billing and usage data, identify actionable insights from that data, and develop sustainable strategies to embed cost into their culture. In her previous career, she managed the FinOps team for one of the Big four.

John Masci

John Masci

John Masci is a Principal Optimization Solutions Architect on the AWS OPTICS team. He works with AWS customers on improving cost efficiency with architectural optimization, cost governance and operational best practices. Prior to joining AWS, he spent over 10 years as a technologist working on large enterprise system architecture and cloud governance.