<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: JASON WOOD</title>
    <description>The latest articles on Forem by JASON WOOD (@sheriff6410).</description>
    <link>https://forem.com/sheriff6410</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1053986%2F03ef5c42-32f2-4c89-af34-2285f5b78020.jpg</url>
      <title>Forem: JASON WOOD</title>
      <link>https://forem.com/sheriff6410</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sheriff6410"/>
    <language>en</language>
    <item>
      <title>AWS EventBridge Transforms: Making Alerts Readable</title>
      <dc:creator>JASON WOOD</dc:creator>
      <pubDate>Mon, 10 Mar 2025 01:06:17 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-eventbridge-transforms-making-alerts-readable-1pb5</link>
      <guid>https://forem.com/aws-builders/aws-eventbridge-transforms-making-alerts-readable-1pb5</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;AWS EventBridge is a powerful event bus that allows seamless integration between AWS services and external systems. However, one common challenge is that EventBridge events are typically JSON payloads that, while structured, can be difficult to read at a glance—especially when sent to destinations like Amazon SNS for alerting. This can be a pain point for teams, particularly in Managed Services, where help desk staff need to interpret alerts and take action quickly.&lt;/p&gt;

&lt;p&gt;Fortunately, EventBridge Transforms offers a solution by allowing us to modify event payloads into a more human-readable format before they reach their destination. In this post, I'll walk through how EventBridge transforms work, provide a hands-on guide to implementing them, and share best practices from real-world use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding EventBridge Transforms
&lt;/h2&gt;

&lt;p&gt;EventBridge transforms allow you to modify event payloads before sending them to targets. Instead of passing raw JSON, you can extract and format key details, making the message easier to read.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example Problem: Raw JSON payload
&lt;/h3&gt;

&lt;p&gt;Consider an EventBridge event triggered by an AWS resource:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"version":"0","id":"c8c4daa7-a20c-2f03-0070-b7393dd542ad","detail-type":"GuardDuty Finding","source":"aws.guardduty","account":"123456789012","time":"1970-01-01T00:00:00Z","region":"us-east-1","resources":[],"detail":{"schemaVersion":"2.0","accountId":"123456789012","region":"us-east-1","partition":"aws","id":"16afba5c5c43e07c9e3e5e2e544e95df","arn":"arn:aws:guardduty:us-east-1:123456789012:detector/123456789012/finding/16afba5c5c43e07c9e3e5e2e544e95df","type":"Canary:EC2/Stateless.IntegTest","resource":{"resourceType":"Instance","instanceDetails":{"instanceId":"i-05746eb48123455e0","instanceType":"t2.micro","launchTime":1492735675000,"productCodes":[],"networkInterfaces":[{"ipv6Addresses":[],"privateDnsName":"ip-0-0-0-0.us-east-1.compute.internal","privateIpAddress":"0.0.0.0","privateIpAddresses":[{"privateDnsName":"ip-0-0-0-0.us-east-1.compute.internal","privateIpAddress":"0.0.0.0"}],"subnetId":"subnet-d58b7123","vpcId":"vpc-34865123","securityGroups":[{"groupName":"launch-wizard-1","groupId":"sg-9918a123"}],"publicDnsName":"ec2-11-111-111-1.us-east-1.compute.amazonaws.com","publicIp":"11.111.111.1"}],"tags":[{"key":"Name","value":"ssh-22-open"}],"instanceState":"running","availabilityZone":"us-east-1b","imageId":"ami-4836a123","imageDescription":"Amazon Linux AMI 2017.03.0.20170417 x86_64 HVM GP2"}},"service":{"serviceName":"guardduty","detectorId":"3caf4e0aaa46ce4ccbcef949a8785353","action":{"actionType":"NETWORK_CONNECTION","networkConnectionAction":{"connectionDirection":"OUTBOUND","remoteIpDetails":{"ipAddressV4":"0.0.0.0","organization":{"asn":-1,"isp":"GeneratedFindingISP","org":"GeneratedFindingORG"},"country":{"countryName":"United States"},"city":{"cityName":"GeneratedFindingCityName"},"geoLocation":{"lat":0,"lon":0}},"remotePortDetails":{"port":22,"portName":"SSH"},"localPortDetails":{"port":2000,"portName":"Unknown"},"protocol":"TCP","blocked":false}},"resourceRole":"TARGET","additionalInfo":{"unusualProtocol":"UDP","threatListName":"GeneratedFindingCustomerListName","unusual":22},"eventFirstSeen":"2017-10-31T23:16:23Z","eventLastSeen":"2017-10-31T23:16:23Z","archived":false,"count":1},"severity":5,"createdAt":"2017-10-31T23:16:23.824Z","updatedAt":"2017-10-31T23:16:23.824Z","title":"Canary:EC2/Stateless.IntegTest","description":"Canary:EC2/Stateless.IntegTest"}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not very intuitive for a help desk operator. They may not be very familiar with AWS, and it isn't easy to work out what fields are meaningful, especially when the JSON is presented as a single line.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using a Transform to Improve Readability
&lt;/h3&gt;

&lt;p&gt;By applying an EventBridge transform, we can extract only the relevant details and format them into a readable message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"A Guard Duty finding on severity 5 has been raised for source account 123456789012.”
"The finding was generated at 2025-01-25T06:07:04Z and is DefenseEvasion:EC2/UnusualDNSResolver."
"The affected resource type is Instance."
"Description: The EC2 instance i-045678abc09 is communicating with an unusual DNS resolver 172.123.45.6.”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes it immediately clear what the affected account is and what happened, reducing the time needed for triage and response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing an EventBridge Transform
&lt;/h2&gt;

&lt;p&gt;Let's walk through how to set up an EventBridge rule with a transform using AWS CloudFormation.&lt;/p&gt;

&lt;h3&gt;
  
  
  CloudFormation Example
&lt;/h3&gt;

&lt;p&gt;Below is an example CloudFormation snippet to create an EventBridge rule with a transform that simplifies GuardDuty finding notifications:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  GuardDutyEventRule:
    Type: "AWS::Events::Rule"
    Properties:
      Name: "detect-guardduty-finding"
      Description: "A CloudWatch Event Rule that triggers on Amazon GuardDuty findings."
      State: "ENABLED"
      Targets:
        - Arn: !Ref GuardDutySnsTopic
          Id: "target-id1"
          InputTransformer:
            InputPathsMap:
              "account": "$.account"
              "time": "$.time"
              "source-account": "$.detail.accountId"
              "finding-type": "$.detail.type"
              "resource-type": "$.detail.resource.resourceType"
              "severity": "$.detail.severity"
              "description": "$.detail.description"
            InputTemplate: |
              "A Guard Duty finding on severity &amp;lt;severity&amp;gt; has been raised for source account &amp;lt;source-account&amp;gt;."
              "The finding was generated at &amp;lt;time&amp;gt; and is &amp;lt;finding-type&amp;gt;."
              "The affected resource type is &amp;lt;resource-type&amp;gt;."
              "Description: &amp;lt;description&amp;gt;"
      EventPattern:
        detail-type:
          - "GuardDuty Finding"
        source:
          - "aws.guardduty"
        detail:
          severity:
            - 5
            - 6
            - 7
            - 8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This rule listens for GuardDuty finding notifications, extracts relevant details, and reformats the message into a simple, readable sentence before sending it to an SNS topic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing the Transform in the AWS Console
&lt;/h3&gt;

&lt;p&gt;Jumping straight into CloudFormation is fine if you're comfortable with JSON payload, but most of the time, you don't know exactly what you want to do. AWS provides a way to test and view event transforms directly in the EventBridge console. Here’s how you can do it:&lt;/p&gt;

&lt;h4&gt;
  
  
  Go to Rules
&lt;/h4&gt;

&lt;p&gt;Go to the EventBridge Console – Navigate to Amazon EventBridge &amp;gt; Rules.&lt;/p&gt;

&lt;h4&gt;
  
  
  Choose the Rule
&lt;/h4&gt;

&lt;p&gt;Select or Create a Rule – Choose an existing rule or create a new one.&lt;/p&gt;

&lt;h4&gt;
  
  
  Create the Transformer
&lt;/h4&gt;

&lt;p&gt;Either click on Edit for the rule, or go to the Targets tab and select Edit there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvza63f61khv278d5w64.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvza63f61khv278d5w64.png" alt="Transform edit buttons" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Expand the &lt;strong&gt;Additional settings&lt;/strong&gt; section and click the dropdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71md53bvsswrsenf4y6i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71md53bvsswrsenf4y6i.png" alt="Settings select" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Selecting &lt;strong&gt;Input transformer&lt;/strong&gt; brings up a &lt;strong&gt;Configure input transformer button&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e5rhaso0p0jb8zdwuuz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e5rhaso0p0jb8zdwuuz.png" alt="Transformer button" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Create and test your transform
&lt;/h4&gt;

&lt;p&gt;Now we come to the fun part. Creating and testing the rules!&lt;br&gt;
You can either generate a sample event or paste in one of your own.&lt;br&gt;
This is an optional step, but seeing the JSON that you're dealing with is very helpful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2l07gfb3le1sb21pe539.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2l07gfb3le1sb21pe539.png" alt="Sample rule generation" width="800" height="754"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can expand the &lt;strong&gt;Example&lt;/strong&gt; section to get some ideas for your &lt;strong&gt;Input&lt;/strong&gt; and &lt;strong&gt;Template&lt;/strong&gt;. This is handy if you've not done this much, after a few times, you'll get the hang of it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwvl0a8cwl12rdjs1n3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwvl0a8cwl12rdjs1n3n.png" alt="Example code" width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, fill in the &lt;strong&gt;Input path&lt;/strong&gt; and &lt;strong&gt;Input template&lt;/strong&gt;. The &lt;strong&gt;Input path&lt;/strong&gt; in a JSON construct with the variables you will use in the human-readable text. These variables are taken from the JSON payload. I don't know why you need this additional step, but you do.&lt;/p&gt;

&lt;p&gt;Finally, the &lt;strong&gt;Input template&lt;/strong&gt; section is where you enter the message you want to have sent using the variables from the &lt;strong&gt;Input path&lt;/strong&gt; section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ahmcaesxe2nvx96qud3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ahmcaesxe2nvx96qud3.png" alt="Input and Template section" width="800" height="739"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To see what all that will look like, there is an &lt;strong&gt;Output&lt;/strong&gt; section. For this to work, you need either the sample output or to have &lt;strong&gt;Entered your own&lt;/strong&gt; JSON. This is where having a sample of the non-transformed code can really help. You will see what the result will actually be.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzepx0uwiu6b1mmlfn7r7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzepx0uwiu6b1mmlfn7r7.png" alt="Output" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Save and Deploy
&lt;/h4&gt;

&lt;p&gt;Once you're satisfied with the output, save and deploy the rule.&lt;br&gt;
Alternatively, you can use it to update your CloudFormation template. I have included a sample above for you to use as a guide.&lt;br&gt;
There is a third option. Scrolling back to my first image, you'll see a button for &lt;strong&gt;CloudFormation Template&lt;/strong&gt;. Clicking that and selecting YAML (for the love of God, don't choose JSON) will generate a CloudFormation template for you. This is great if you are trying this in a dev account. You can use clickops to create your rule and transform, then have your IaC generated for you.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;In Managed Services, we often route AWS alerts to an SNS topic that integrates with our ticketing system. Initially, we sent raw JSON payloads, which made it difficult for help desk staff to understand incidents quickly.&lt;/p&gt;

&lt;p&gt;By implementing EventBridge transforms, we significantly improved the clarity of alerts, reducing response times and improving efficiency. For example, instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"detail": {"instance-id": "i-12345", "state": "terminated"}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We now see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EC2 Instance i-12345 has changed state to terminated.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This small change has a big impact on triaging and response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices for Using EventBridge Transforms
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Keep It Concise&lt;/strong&gt; – Extract only the necessary details to avoid clutter. The affected resource should be providing the detailed information, not the alert.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Human-Readable Formatting&lt;/strong&gt; – Avoid technical jargon where possible. This is especially important if the first destination is a help desk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test Before Deploying&lt;/strong&gt; – Use the AWS console to verify transformations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consider Multiple Destinations&lt;/strong&gt; – Tailor transformations based on where the alert goes (e.g., SNS, Lambda, or third-party tools like Slack or PagerDuty). Note: You can only have one transform per target. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitor and Iterate&lt;/strong&gt; – Regularly review and adjust transforms to ensure they remain effective. You use transforms to make it easy for people to read the notifications. What may be obvious to you may not be clear to the target audience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;EventBridge transforms are a simple yet powerful way to make AWS notifications more user-friendly. Whether sending events to a ticketing system or a chat app, formatting alerts into a clear and concise format can greatly enhance usability and response times.&lt;/p&gt;

&lt;p&gt;If you haven’t yet explored EventBridge transforms, I highly recommend giving them a try. Your help desk team (and your future self) will thank you!&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;Try setting up an EventBridge transform in your AWS account.&lt;br&gt;
Experiment with different input templates.&lt;br&gt;
Share your experiences and best practices in the comments!&lt;/p&gt;

&lt;p&gt;Do you have questions or feedback? Drop them below or connect with me on LinkedIn!&lt;/p&gt;

</description>
      <category>eventbridge</category>
      <category>aws</category>
      <category>cloudops</category>
      <category>observability</category>
    </item>
    <item>
      <title>SIMPLIFY ACCESS: A STEP-BY-STEP GUIDE TO USING MULTIPLE AWS ACCOUNTS</title>
      <dc:creator>JASON WOOD</dc:creator>
      <pubDate>Mon, 27 Jan 2025 04:03:12 +0000</pubDate>
      <link>https://forem.com/aws-builders/simplify-access-a-step-by-step-guide-to-using-multiple-aws-accounts-395p</link>
      <guid>https://forem.com/aws-builders/simplify-access-a-step-by-step-guide-to-using-multiple-aws-accounts-395p</guid>
      <description>&lt;p&gt;On January 16, AWS made a game-changing announcement: native support for signing into multiple AWS accounts simultaneously. Previously, trying to log in to another account in a new tab would log you out of the first.  This was a pain point for many of us juggling multiple AWS environments. Workarounds like Chrome profiles or the Firefox Multi-Account Containers plugin helped, but they had limitations.&lt;/p&gt;

&lt;p&gt;In this blog, I’ll guide you through AWS’ new multi-session support, explore how Firefox Containers work, and share my thoughts on which solution works best.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS MULTI-SESSION SUPPORT
&lt;/h2&gt;

&lt;p&gt;If you’re using a single AWS account for all your workloads, it’s time to rethink your approach! Managing multiple accounts is critical for security and organisation. Splitting environments (Dev, Test, Prod) into separate accounts reduces your blast radius—meaning if one account is compromised, the others remain safe. Now that you have a nice multi-account environment, how do you compare things between accounts or environments? Is something in Dev not talking to a bucket in Shared Services? How can you open the console in both accounts?&lt;/p&gt;

&lt;p&gt;AWS now offers a native option to open multiple accounts. This works with AWS Identity Centre-configured roles, IAM User access, and cross-account roles. It is both simple and initially confusing.&lt;/p&gt;

&lt;p&gt;When you log in to an account, you will be given an option to turn on multi-session support. This is something within your browser and doesn’t directly impact the AWS account you are connecting to. As such, it doesn’t matter what IAM permissions you have.&lt;/p&gt;

&lt;p&gt;To enable this feature, go to the account dropdown and click the button to “&lt;strong&gt;Turn on multi-session support&lt;/strong&gt;.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmtcgdq0qfzyy6w1inus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffmtcgdq0qfzyy6w1inus.png" alt="Turn on multi-session support button" width="345" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ensure you have pop-ups enabled because after clicking the button, you’ll get a pop-up with more information on what AWS multi-session support does and a final confirmation button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wzdv6jnnqeqtf5umoug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wzdv6jnnqeqtf5umoug.png" alt="multi-session pop up window" width="623" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After this, you now see a button to “&lt;strong&gt;Add session&lt;/strong&gt;”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fax36311cwlo3aarerj18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fax36311cwlo3aarerj18.png" alt="Add session screen" width="369" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s where it might get confusing: when you click “&lt;strong&gt;Add session&lt;/strong&gt;,” AWS directs you to the &lt;strong&gt;IAM user login screen&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb09aauy31bq728gg9y3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb09aauy31bq728gg9y3.png" alt="IAM sign in screen" width="305" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re using &lt;strong&gt;AWS Identity Center&lt;/strong&gt; (formerly AWS SSO), don’t worry—you don’t need to use the “&lt;strong&gt;Add session&lt;/strong&gt;” button. Connect to your next account as you usually would, and AWS will populate the session list automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0r8ujoppfytrmi6l4jh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0r8ujoppfytrmi6l4jh.png" alt="Screenshot showing an active session" width="649" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You keep connecting to accounts, and the active session list will keep getting populated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhez47iyd99l9jkoabr8x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhez47iyd99l9jkoabr8x.png" alt="Screenshot showing multiple sessions" width="644" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, that is until you hit the five active session limit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8aujf6kdssb1amr0etd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8aujf6kdssb1amr0etd.png" alt="The session limit window" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Similar to when you used to populate “&lt;strong&gt;Switch Role&lt;/strong&gt;”, there is a limit to the number of sessions you can have. You also can’t opt out of removing a session once you hit the limit. That is a bit of an annoyance, but this is the early days for the feature, so AWS may do something about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  HOW DO YOU SWAP SESSIONS?
&lt;/h3&gt;

&lt;p&gt;Swapping sessions is straightforward. You go to the Account dropdown in the top right and choose one of the active sessions listed. AWS will then open a new tab with you logged into the AWS console for that account with the specified role. Simple!&lt;/p&gt;

&lt;p&gt;There is no visual indicator for the different accounts, though. You need to look in the top right corner to see what account and role you are logged in to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fll4orjyqye0ivmor8ore.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fll4orjyqye0ivmor8ore.png" alt="AWS user info" width="483" height="82"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  HOW DO YOU LOG IN TO A ROLE?
&lt;/h3&gt;

&lt;p&gt;Cross-account roles are also supported in the new session window. If you click the dropdown on the “&lt;strong&gt;Add session&lt;/strong&gt;” button, you can see any previously configured cross-account roles or add a new one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4s8awas3oe73iiofqbz3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4s8awas3oe73iiofqbz3.png" alt="Screenshot showing the switch role" width="659" height="718"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adding a new role is the same as always; you specify the account you want to connect to, the role to assume, and an optional name and colour. If you have an existing role, you can select it. Either option will open a new tab for you.  That role will now show in the active sessions window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5nk52w2qfv79iun26m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5nk52w2qfv79iun26m9.png" alt="Screenshot showing a role in the account list" width="652" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FIREFOX MULT-ACCOUNT CONTAINERS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Firefox Multi-Account Containers&lt;/strong&gt; is an extension designed to isolate browser activity across tabs. Each container acts as its own environment, meaning you can log in to different AWS accounts without interference. A container can have multiple associated tabs.  Let me show you how to set it up and why it’s my go-to solution.&lt;/p&gt;

&lt;p&gt;Start by installing the extension. Click the extensions icon in your toolbar or search for “&lt;strong&gt;Firefox Multi-Account Containers&lt;/strong&gt;” in the Firefox Add-ons store. There are multiple container extensions, so make sure to choose the official version authored by Firefox.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0v2k9fxljbu65r90de4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0v2k9fxljbu65r90de4m.png" alt="Screenshot showing how to access firefox extensions" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When enabled, it comes with some pre-configured containers. You can delete or rename them as you desire.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpb2nyhb3m25yhd1zir15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpb2nyhb3m25yhd1zir15.png" alt="Firefox containers screen1" width="800" height="1326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To edit, delete, or reorder, select the Manage Containers button. &lt;br&gt;
In the following window, the “&lt;em&gt;hamburgers&lt;/em&gt;” allow you to reorder the containers. You can also click on a container name to modify or delete a container (not shown).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faas4ly0frci5z6c24sgg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faas4ly0frci5z6c24sgg.png" alt="Containers manage screen" width="782" height="891"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating a new container is as simple as giving it a name, choosing a colour, and selecting an icon. There aren’t a lot of options. This is a fairly simple extension, but it does what we need.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxpzb5453v5m38z610wt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxpzb5453v5m38z610wt.png" alt="New container screen" width="745" height="819"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The color-coded borders and icons make it easy to identify which account or environment each tab belongs to. For instance, you can set “Prod” to red and “Dev” to green for quick visual differentiation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cchqg2uabv4jajb9kyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cchqg2uabv4jajb9kyi.png" alt="Color coded browser tabs" width="716" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  WHICH IS BEST?
&lt;/h2&gt;

&lt;p&gt;So, which option is right for you? It depends on your needs.&lt;br&gt;
• &lt;strong&gt;For occasional multi-session access&lt;/strong&gt;: AWS’ built-in support is simple to configure and works seamlessly within your preferred browser.&lt;br&gt;
• &lt;strong&gt;For heavy multi-account users&lt;/strong&gt;: Firefox Multi-Account Containers is a powerful tool, especially if you manage accounts for multiple customers.&lt;/p&gt;

&lt;p&gt;For me, working at a consultancy, I deal with multiple customers. Having the &lt;strong&gt;Firefox Mult-Account Containers&lt;/strong&gt; is a godsend. I often connect to multiple AWS accounts, and the coloured tabs help me track who I’m connected to. I will likely make use of the &lt;strong&gt;AWS multi-session&lt;/strong&gt; feature, though. Apart from containers for each customer, I also have a “Misc” container. I use that when I want multiple accounts open for one customer. Using a mix of Firefox Multi-Account Containers, and AWS multi-session support will give me the best of both worlds.&lt;/p&gt;

&lt;h2&gt;
  
  
  WRAP UP
&lt;/h2&gt;

&lt;p&gt;The new &lt;strong&gt;AWS multi-session feature&lt;/strong&gt; is a fantastic first step, and I’m sure it will improve over time. Meanwhile, &lt;strong&gt;Firefox Multi-Account Containers&lt;/strong&gt; continues to be my go-to for more complex workflows. Try them out and see what works best for your needs. Let me know in the comments how you manage multiple AWS accounts!&lt;/p&gt;

</description>
      <category>ops</category>
      <category>aws</category>
      <category>cloud</category>
      <category>howto</category>
    </item>
  </channel>
</rss>
