<?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: Jha'</title>
    <description>The latest articles on Forem by Jha' (@jzmt).</description>
    <link>https://forem.com/jzmt</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%2F3375162%2Fcafec420-2ca8-4be6-bb81-72cdba4d37d2.png</url>
      <title>Forem: Jha'</title>
      <link>https://forem.com/jzmt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jzmt"/>
    <language>en</language>
    <item>
      <title>IAM Users vs Groups vs Roles: Explained for Data Analysts</title>
      <dc:creator>Jha'</dc:creator>
      <pubDate>Sun, 08 Feb 2026 19:13:48 +0000</pubDate>
      <link>https://forem.com/jzmt/iam-users-vs-groups-vs-roles-explained-for-data-analysts-21c</link>
      <guid>https://forem.com/jzmt/iam-users-vs-groups-vs-roles-explained-for-data-analysts-21c</guid>
      <description>&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%2F913spdeowhaqbaks3w6u.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%2F913spdeowhaqbaks3w6u.png" alt="IAM" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I Leaked My AWS Keys on GitHub. Here's What I Learned.
&lt;/h2&gt;

&lt;p&gt;Early in my cloud journey, I made the mistake everyone warns you about: I hardcoded my AWS credentials into a Terraform script and pushed it to a public GitHub repo.&lt;/p&gt;

&lt;p&gt;I caught it in under 30 minutes. A quick code review, an SNS alert, and a panicked credential rotation later, I got lucky. No unauthorized usage. No surprise bill. But that close call taught me something I should have understood from day one: &lt;em&gt;why&lt;/em&gt; AWS has so many different ways to manage identity and access.&lt;/p&gt;

&lt;p&gt;IAM Users. IAM Groups. IAM Roles. Policies. Instance profiles. When I first opened the AWS IAM console, it felt like overkill. Coming from Power BI, I understood permissions as a simple hierarchy: Admin, Member, Contributor, Viewer. Four roles. Done.&lt;/p&gt;

&lt;p&gt;AWS has four &lt;em&gt;pages&lt;/em&gt; of IAM documentation.&lt;/p&gt;

&lt;p&gt;But here's the thing: once you understand the logic behind IAM, it clicks. And if you're coming from a data analytics background like me, you already have the mental model. You just need the translation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;This post is for data analysts, BI developers, and anyone making the jump to cloud engineering who keeps hearing "just use an IAM Role" without understanding &lt;em&gt;why&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you've ever:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confused IAM Users with IAM Roles&lt;/li&gt;
&lt;li&gt;Hardcoded credentials because you didn't know another way&lt;/li&gt;
&lt;li&gt;Nodded along in an interview when someone asked about least privilege&lt;/li&gt;
&lt;li&gt;Wondered why AWS has 47 different ways to grant access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is for you. I'll break down the core IAM concepts using analogies from Power BI, show you when to use each, and share the misconfigurations I've made so you don't have to.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Mental Model That Made IAM Click
&lt;/h2&gt;

&lt;p&gt;In Power BI, workspace permissions follow a clear hierarchy:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Power BI Role&lt;/th&gt;
&lt;th&gt;What They Can Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Viewer&lt;/td&gt;
&lt;td&gt;View reports and dashboards&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contributor&lt;/td&gt;
&lt;td&gt;Create and edit content, can't manage access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Member&lt;/td&gt;
&lt;td&gt;All of the above, plus share content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Admin&lt;/td&gt;
&lt;td&gt;Full control, including managing permissions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Simple. Four roles, increasing levels of access.&lt;/p&gt;

&lt;p&gt;AWS IAM follows the same principle, but with more flexibility. Instead of fixed roles, you build permissions by combining identities (who) with policies (what they can do).&lt;/p&gt;

&lt;p&gt;Here's the translation:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Power BI Concept&lt;/th&gt;
&lt;th&gt;AWS IAM Equivalent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Workspace&lt;/td&gt;
&lt;td&gt;AWS Account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User in a workspace&lt;/td&gt;
&lt;td&gt;IAM User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workspace role (Admin, Member, etc.)&lt;/td&gt;
&lt;td&gt;IAM Policy attached to user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Group of users with same role&lt;/td&gt;
&lt;td&gt;IAM User Group&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shared dataset accessed by another workspace&lt;/td&gt;
&lt;td&gt;IAM Role (cross-account access)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Service account / app identity&lt;/td&gt;
&lt;td&gt;IAM Role (assumed by services)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The key difference: Power BI gives you four preset roles. AWS gives you building blocks to create exactly the permissions you need. More complex, but more powerful.&lt;/p&gt;




&lt;h2&gt;
  
  
  IAM Users: The Individual Identity
&lt;/h2&gt;

&lt;p&gt;An IAM User is a unique identity within your AWS account. One person, one user.&lt;/p&gt;

&lt;p&gt;When you create an IAM User, that identity can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log into the AWS Console (with a password)&lt;/li&gt;
&lt;li&gt;Make API calls (with access keys)&lt;/li&gt;
&lt;li&gt;Access specific AWS resources (based on attached policies)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key constraint:&lt;/strong&gt; An IAM User belongs to one and only one AWS account. If you work across multiple accounts, you'll need a different approach (more on Roles later).&lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use IAM Users
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use IAM Users when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A human needs console access to a single AWS account&lt;/li&gt;
&lt;li&gt;You need to track individual activity in CloudTrail&lt;/li&gt;
&lt;li&gt;Your organization requires named accounts for compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Avoid IAM Users when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An application needs AWS access (use Roles instead)&lt;/li&gt;
&lt;li&gt;You're managing access across multiple accounts&lt;/li&gt;
&lt;li&gt;You'd need to create dozens of users with identical permissions (use Groups)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Power BI Parallel
&lt;/h3&gt;

&lt;p&gt;Think of an IAM User like a named user in your Power BI tenant. They have their own login, their own activity history, and permissions assigned specifically to them. When they leave, you deactivate their account.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Catch: Access Keys
&lt;/h3&gt;

&lt;p&gt;IAM Users can have access keys for programmatic access. These are long-lived credentials. They don't expire unless you rotate them manually. This is where security problems start.&lt;/p&gt;

&lt;p&gt;If you're using access keys, ask yourself: could this workload use an IAM Role instead? Nine times out of ten, yes.&lt;/p&gt;




&lt;h2&gt;
  
  
  IAM User Groups: Permissions at Scale
&lt;/h2&gt;

&lt;p&gt;Managing permissions for one user is easy. Managing permissions for fifty users doing the same job is a nightmare. That's where Groups come in.&lt;/p&gt;

&lt;p&gt;An IAM User Group is a collection of IAM Users. Attach policies to the group, and every user inherits those permissions. Add a new analyst? Drop them in the "DataAnalysts" group. Done.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Groups Work
&lt;/h3&gt;

&lt;p&gt;Groups don't have credentials. They're not identities. You can't log in as a group. They're purely an organization tool for managing permissions efficiently.&lt;/p&gt;

&lt;p&gt;A user can belong to multiple groups. If Sarah is both a data analyst and a project lead, she can be in both the "DataAnalysts" and "ProjectLeads" groups. Her effective permissions are the combination of both.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use IAM User Groups
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use Groups when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple users need identical permissions&lt;/li&gt;
&lt;li&gt;You want to manage access by job function&lt;/li&gt;
&lt;li&gt;You need to quickly onboard or offboard team members&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Avoid Groups when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You only have one or two users&lt;/li&gt;
&lt;li&gt;Permissions are highly individualized with no overlap&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Power BI Parallel
&lt;/h3&gt;

&lt;p&gt;This maps directly to Power BI workspace management. Instead of assigning "Contributor" to each analyst individually, you create a security group in Azure AD, assign that group the role, and manage membership in the group. Someone joins? Add them. Someone leaves? Remove them. Permissions stay clean.&lt;/p&gt;

&lt;p&gt;IAM User Groups work identically. The group holds the permissions. The users inherit them.&lt;/p&gt;




&lt;h2&gt;
  
  
  IAM Roles: The Game Changer
&lt;/h2&gt;

&lt;p&gt;If IAM Users are the first thing people learn, IAM Roles are what actually matters in production.&lt;/p&gt;

&lt;p&gt;A Role is an identity with permissions, just like a User. But instead of belonging to one person, a Role is &lt;em&gt;assumed&lt;/em&gt; by whoever or whatever needs it. A human can assume a Role. An EC2 instance can assume a Role. A Lambda function can assume a Role. Another AWS account can assume a Role.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Key Difference: Temporary Credentials
&lt;/h3&gt;

&lt;p&gt;When you assume a Role, AWS gives you temporary security credentials. They expire automatically. No long-lived access keys in a config file. No credentials to leak. No secrets to rotate manually.&lt;/p&gt;

&lt;p&gt;This is why Roles are the standard for anything running in AWS. Your application doesn't store credentials. It assumes a Role, gets temporary credentials, does its work, and the credentials expire.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to Use IAM Roles
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use Roles when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An AWS service needs permissions (EC2, Lambda, ECS, EKS)&lt;/li&gt;
&lt;li&gt;You're granting cross-account access&lt;/li&gt;
&lt;li&gt;A human needs temporary elevated permissions&lt;/li&gt;
&lt;li&gt;You want to eliminate long-lived credentials entirely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Avoid Roles when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need a persistent human identity for audit purposes (use a User, then have them assume Roles as needed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's about it. Roles are almost always the right answer for workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Power BI Parallel
&lt;/h3&gt;

&lt;p&gt;This one's trickier. Power BI doesn't have a direct equivalent because it's built around persistent user identities.&lt;/p&gt;

&lt;p&gt;The closest analogy: imagine if Power BI let you create a "Report Refresh" identity that your datasets could temporarily become when pulling data from a source system. The dataset doesn't have its own credentials. It borrows the identity, does the refresh, and the access expires.&lt;/p&gt;

&lt;p&gt;That's what an IAM Role does for AWS services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instance Profiles: Roles for EC2
&lt;/h3&gt;

&lt;p&gt;When an EC2 instance assumes a Role, it uses an instance profile. Think of it as the container that attaches a Role to an instance. When you launch EC2 and select an IAM Role in the console, AWS creates an instance profile behind the scenes.&lt;/p&gt;

&lt;p&gt;You'll see "instance profile" in documentation and error messages. Just know: it's the mechanism that lets EC2 instances assume Roles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Service-Linked Roles
&lt;/h3&gt;

&lt;p&gt;Some AWS services create and manage their own Roles automatically. These are service-linked roles. You don't create them. AWS does when you enable certain features.&lt;/p&gt;

&lt;p&gt;Example: When you set up AWS Config, AWS creates a service-linked role that gives Config permission to read your resources. You don't manage this Role. AWS does.&lt;/p&gt;

&lt;p&gt;If you see a Role you didn't create with a name like "AWSServiceRoleForConfig," that's a service-linked role. Leave it alone.&lt;/p&gt;




&lt;h2&gt;
  
  
  When to Use Each: The Decision Framework
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Use This&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Human needs console access&lt;/td&gt;
&lt;td&gt;IAM User&lt;/td&gt;
&lt;td&gt;Trackable identity, password login&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple humans need identical permissions&lt;/td&gt;
&lt;td&gt;IAM User Group&lt;/td&gt;
&lt;td&gt;Manage once, inherit everywhere&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Application running on EC2/Lambda/ECS&lt;/td&gt;
&lt;td&gt;IAM Role&lt;/td&gt;
&lt;td&gt;Temporary credentials, no keys to leak&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-account access&lt;/td&gt;
&lt;td&gt;IAM Role&lt;/td&gt;
&lt;td&gt;Trust policies define who can assume&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Temporary elevated permissions&lt;/td&gt;
&lt;td&gt;IAM Role&lt;/td&gt;
&lt;td&gt;Time-limited, auditable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You're about to hardcode credentials&lt;/td&gt;
&lt;td&gt;IAM Role&lt;/td&gt;
&lt;td&gt;Stop. There's almost always a better way.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When in doubt, ask: "Can this use a Role instead?" Usually, yes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Misconfigurations (Including Mine)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hardcoded credentials in code.&lt;/strong&gt;&lt;br&gt;
I did this. Early in my cloud journey, I hardcoded AWS credentials into a Terraform script and pushed it to GitHub. I caught it in under 30 minutes through a code review and an SNS alert. I rotated the keys immediately. No damage, but I got lucky.&lt;/p&gt;

&lt;p&gt;The fix: I moved secrets to AWS Secrets Manager and switched to IAM Roles for any service that needed AWS access. No more long-lived keys in code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other mistakes I see often:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Overly permissive policies.&lt;/strong&gt; Granting &lt;code&gt;"Action": "*"&lt;/code&gt; because it's faster than figuring out the exact permissions. This is how small misconfigurations become security incidents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Not using Groups.&lt;/strong&gt; Managing permissions user-by-user until onboarding and offboarding becomes a nightmare.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Long-lived access keys without rotation.&lt;/strong&gt; If you must use access keys, rotate them. Better yet, use Roles and eliminate them entirely.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IAM Users are for humans. IAM Roles are for everything else.&lt;/strong&gt; If an application, service, or cross-account workflow needs AWS access, use a Role. Temporary credentials beat long-lived keys every time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Groups save your sanity.&lt;/strong&gt; Don't manage permissions individually. Group users by function, attach policies to the group, and let inheritance do the work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;If you're about to hardcode credentials, stop.&lt;/strong&gt; There's almost always a Role-based alternative. Secrets Manager exists for the rare cases where it doesn't.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interview tip:&lt;/strong&gt; When asked "What's the difference between an IAM User and an IAM Role?" the answer is: Users are persistent identities with long-lived credentials. Roles are assumed identities with temporary credentials. Roles are preferred for workloads because there are no keys to leak.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;This post is part of my "Data Analyst to Cloud Engineer" series. Next up: the $200 EKS mistake that taught me how Fargate pricing actually works.&lt;/p&gt;

&lt;p&gt;If IAM still feels fuzzy, drop a comment. I'll answer what I can and turn common questions into future posts.&lt;/p&gt;




</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>iam</category>
      <category>security</category>
    </item>
    <item>
      <title>How I passed AWS DevOps Professional in under 3 months while working full-time</title>
      <dc:creator>Jha'</dc:creator>
      <pubDate>Mon, 26 Jan 2026 19:52:34 +0000</pubDate>
      <link>https://forem.com/jzmt/how-i-passed-aws-devops-professional-in-under-3-months-while-working-full-time-1fcd</link>
      <guid>https://forem.com/jzmt/how-i-passed-aws-devops-professional-in-under-3-months-while-working-full-time-1fcd</guid>
      <description>&lt;p&gt;&lt;strong&gt;The AWS DevOps Professional Is a Beast&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As I took on this feat, I quickly recognized that achieving this goal would require a more strategic approach than earning my Power BI Data Analyst or AWS Solutions Architect certifications. I recommend acquiring your AWS Solutions Architect certification at a minimum before attempting this certification, as the SA certification provides a proper understanding of the AWS ecosystem.&lt;/p&gt;

&lt;p&gt;Furthermore, the breadth of knowledge meant to be retained is vast, and the topics themselves are multifaceted. Take Domain 1: SDLC Automation (22% of the score—the bulk of the exam). It delves into Continuous Integration and Continuous Delivery (CI/CD), a double-edged sword of sorts, as one must understand the sequential actions involved in orchestrating AWS CodePipeline stages: building, testing, deploying, and load testing.&lt;/p&gt;

&lt;p&gt;You must first learn the AWS services and their counterparts to begin building your AWS artifacts. Additionally, you must understand deployment strategies such as in-place, blue/green, and canary. That was a lot to take in, wasn't it? Well, that's just the beginning—and only the first domain. Before you know it, you're writing reproducible deployments via YAML—this is Infrastructure as Code (IaC). A key concept that every DevOps engineer must hone, as this makes the difference in the speed, accuracy, and reusability of application deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Context: Who I Am&lt;/strong&gt;&lt;br&gt;
Hi, I'm Jha'Mel Thorne and I'm welcoming you along my journey of landing my first full-time cloud or DevOps role.&lt;/p&gt;

&lt;p&gt;In January 2025, I earned my AWS Solutions Architect Associate certification. But after passing, I wasn't exactly sure of my cloud destiny. I was certified but had limited experience building end-to-end solutions beyond tutorials and hands-on labs.&lt;/p&gt;

&lt;p&gt;From March to June, I dedicated myself to filling that gap: Infrastructure as Code, CI/CD pipelines, containers, Kubernetes, Linux, and Python. Every week and a half felt like a new course in my self-paced "Data Analyst to Cloud Engineer" curriculum. By the end of June, I'd built AWS-native pipelines, 3-tier Terraform architectures, and Python-based Docker deployments.&lt;/p&gt;

&lt;p&gt;What came next? After conversations with a few Solutions Architects and Cloud Engineers, the consensus was clear: bridge my cloud skills with the SDLC, networking, configuration management, and distributed systems. That meant pursuing the DevOps Professional certification.&lt;br&gt;
Starting in July and earning my certification on October 12th, let me walk you through my exact guide to passing this exam in under 3 months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Strategy: Two Sessions, One Goal&lt;/strong&gt;&lt;br&gt;
Throughout my entire cloud journey, I've had to manage my 9-5 as a data analyst at a private markets firm. Some days are demanding and mentally intensive. Outside of that, include family, my relationship, and running 10Ks and half-marathons. Time is limited.&lt;/p&gt;

&lt;p&gt;I started the course in mid-July, but I worked through the sections half-heartedly and built mini-projects until September. Work, travel, life. My DevOps cert journey started slowly. There were entire weeks I simply didn't study at all.&lt;/p&gt;

&lt;p&gt;The course consisted of 17 hours of content. I purchased additional Tutorial Dojo practice exams and strategically allotted time to dissect course content into digestible bites, ensuring that I could articulate concepts in interviews. Each day, I'd sign into my Udemy account and start Stéphane Maarek's course at 6:30 AM, studying until 8:00 or 8:30 AM. The goal was to break my study routine into two distinct sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working Sessions&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Session 1 (morning):&lt;/strong&gt; Actual course content. I treated it like a lecture hall. Listening, taking notes, pausing where necessary, ingesting content from a passive standpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session 2 (evening):&lt;/strong&gt; Aggressive mode. I'd operate as a true architect: drawing diagrams, connecting learnings to real-world examples, refining my expertise in the AWS console with hands-on practice from the morning session, and operating as if I'd be directly applying the day's learnings in an interview or my day-to-day role as a DevOps engineer.&lt;/p&gt;

&lt;p&gt;In total, I'd spend about 3 to 4 hours daily for two straight weeks finishing the course. The course is 17 hours, but 1 hour of course content cannot be processed and retained in just 1 hour. It takes reflection. It takes switching tabs to dive deep into migrations, disaster recovery, CloudFormation templates vs. Terraform, or AWS Control Tower for governance and compliant multi-account environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why SDLC Clicked for Me&lt;/strong&gt;&lt;br&gt;
Here's the thing. I didn't realize it at the time, but I was already living the SDLC as a data analyst. Every Power BI report I built followed the same pattern: gather requirements, design the data model, build the visuals, test with stakeholders, deploy to the workspace, and maintain it when the source data changed. That's the SDLC. The DevOps exam just formalized what I was already doing and added automation at every stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Wake-Up Call: When Two Practice Exams Humbled Me&lt;/strong&gt;&lt;br&gt;
There's a science to AWS exams. I can't say I've mastered it completely, but I've found my edge. And it came from failure.&lt;/p&gt;

&lt;p&gt;Quick backstory: I took my Solutions Architect Associate exam twice. First attempt: 60%. I took a month off, adjusted my approach, and passed on the second try. That adjustment is what carried me through the DevOps Professional exam on the first attempt. But not before two practice exams knocked me down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The scores that shook me:&lt;/strong&gt;&lt;br&gt;
• Configuration Management and IaC: 45%&lt;br&gt;
• Monitoring and Logging: 40%&lt;/p&gt;

&lt;p&gt;I was shocked. These were the two domains in which I felt most confident. I'd done the hands-on labs. I'd aced the mini-quizzes. I could spin up CloudFormation stacks and configure CloudWatch alarms in my sleep. So what went wrong?&lt;/p&gt;

&lt;p&gt;I wasn't playing by the rules of AWS exams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Shift That Saved Me&lt;/strong&gt;&lt;br&gt;
The DevOps Professional exam is 75 questions in 180 minutes. That's 2.4 minutes per question, technically. But here's the reality: questions get longer and more complex as you go deeper into the exam. By question 50, you're reading paragraph-length scenarios with four nearly identical answer choices. If you're spending 3 minutes per question early on, you're borrowing time you won't have later.&lt;/p&gt;

&lt;p&gt;After those failed practice exams, I changed my approach:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. First instinct, then validate&lt;/strong&gt;&lt;br&gt;
I stopped second-guessing myself. The first answer that stood out to me was usually correct, or close enough. I'd flag it, move on, and come back during review if I had time. Spending 4 minutes convincing myself to change an answer rarely improved my score.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Time awareness over time management&lt;/strong&gt;&lt;br&gt;
I stopped watching the clock obsessively. Instead, I built a rhythm: read the scenario, identify the actual question (it's usually in the last sentence), eliminate the obvious wrong answer, pick from the remaining three. If two answers looked identical, I'd find the one-word difference. That's where the right answer hides.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Simulate exam fatigue&lt;/strong&gt;&lt;br&gt;
I started taking full 75-question practice exams in one sitting, no breaks. By question 60, my brain wanted to quit. That's exactly what the real exam feels like. Training for that fatigue was as important as learning the content.&lt;/p&gt;

&lt;p&gt;When I retook those domain-specific exams after adjusting my approach, my scores jumped to the 70s. Not perfect, but passing. And on exam day, that rhythm carried me to an 801.&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%2Fycpvyvacvg5vx6s8jxhe.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%2Fycpvyvacvg5vx6s8jxhe.png" alt="AWS certification" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Real Cost: Under $200&lt;/strong&gt;&lt;br&gt;
Let's talk money. One thing I rarely see in certification guides is an honest cost breakdown. Here's exactly what I spent:&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%2Fr1ztwktx7szjxcp5opwc.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%2Fr1ztwktx7szjxcp5opwc.png" alt="Resources cost breakdown" width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That exam fee deserves context. The actual cost is $300, but here's a tip most guides skip: once you pass any AWS certification, you receive a 50% discount voucher for your next exam. I used the voucher from my Solutions Architect Associate to cut my DevOps Professional fee in half. If you're planning multiple AWS certs, stack them strategically. Each pass funds the next one at half price.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I didn't pay for:&lt;/strong&gt;&lt;br&gt;
I didn't buy AWS Skill Builder or any additional courses. Maarek's course plus Bonso's practice exams were enough. Your mileage may vary, but I'd rather put that money toward actual AWS spend for hands-on projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hidden cost:&lt;/strong&gt;&lt;br&gt;
Time. Three months of 6:30 AM wake-ups, evenings spent in the console instead of on the couch, weekends where I chose practice exams over brunch. That's not a line item, but it's real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'd Do Differently&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Build buffer into your timeline&lt;/strong&gt;&lt;br&gt;
Two weeks before my DevOps Professional exam, I received an unexpected opportunity: an invitation to participate in a live interview prep workshop with real hiring managers. Round-table format, small group, 30 minutes of behavioral and technical questions with immediate feedback.&lt;/p&gt;

&lt;p&gt;This was an incredible opportunity. It also completely rerouted my study plans.&lt;/p&gt;

&lt;p&gt;Suddenly, I wasn't drilling infrastructure drift detection or memorizing deployment configurations. I was sharpening my STAR stories, refining my career narrative, and practicing how to articulate architectural decisions under pressure. Important skills, but not what the certification exam tests.&lt;/p&gt;

&lt;p&gt;I passed anyway. However, those final two weeks could have been dedicated to review time, and instead they were split focus. If I'd scheduled my exam with a 4-week buffer instead of 2, I could have had both: the interview prep and a final exam push.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt;&lt;br&gt;
Life throws unexpected opportunities at you. Some of them are worth the disruption. But if your timeline has no slack, every surprise becomes a crisis. Build the buffer. You'll either use it for the unexpected, or you'll have extra review time. Either way, you win.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Balance theory with practice, but don't skip either&lt;/strong&gt;&lt;br&gt;
Initially, I underestimated the repetition needed. Watching a lecture once wasn't enough. I'd rewatch sections two and even three times before the concepts stuck. But the real retention came when I paired theory with practice. I'd watch Maarek explain CodePipeline stages in the morning, then build an actual pipeline that evening. The lecture gave me the "what" and "why." The hands-on gave me the "how it actually behaves." Neither alone was sufficient.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Unexpected Edge: How Power BI Prepared Me for CloudWatch&lt;/strong&gt;&lt;br&gt;
Here's something I didn't expect: my years building Power BI dashboards gave me a head start on one of the exam's core domains, Monitoring and Logging.&lt;/p&gt;

&lt;p&gt;Think about it. In Power BI, you're constantly asking:&lt;/p&gt;

&lt;p&gt;• What metrics actually matter to stakeholders?&lt;br&gt;
• How do I visualize trends over time?&lt;br&gt;
• What thresholds trigger concern?&lt;br&gt;
• How do I drill down from summary to root cause?&lt;/p&gt;

&lt;p&gt;CloudWatch is the same mental model, different tooling.&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%2Fawieyh1r1hqalzp6pfho.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%2Fawieyh1r1hqalzp6pfho.png" alt="Power Bi vs CloudWatch" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the exam asked about setting up alarms, configuring dashboards, or choosing which metrics to monitor, I wasn't starting from zero. I was translating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The insight that clicked:&lt;/strong&gt;&lt;br&gt;
In Power BI, I learned that a dashboard nobody looks at is a waste of effort. The same principle applies to CloudWatch. The exam tests whether you understand what to monitor, not just how to configure it. My instinct for "what does the stakeholder actually need to see?" carried over directly.&lt;/p&gt;

&lt;p&gt;If you're coming from a data background, lean into this. You already think in metrics, thresholds, and visualizations. CloudWatch is just a new dialect of a language you already speak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get your Solutions Architect first&lt;/strong&gt;&lt;br&gt;
The DevOps Professional assumes you already understand VPCs, IAM, S3, EC2, and the core AWS ecosystem. Without that foundation, you'll spend half your study time filling gaps instead of learning DevOps concepts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Two sessions beat one long session&lt;/strong&gt;&lt;br&gt;
Morning for passive learning (lectures, notes). Evening for active application (console, diagrams, practice). This isn't just time management. It's how retention actually works.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failed practice exams are data, not defeat&lt;/strong&gt;&lt;br&gt;
My 40% and 45% scores hurt. But they revealed exactly where my approach was broken. Without those failures, I wouldn't have discovered the rhythm that got me to 801.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Train for fatigue, not just knowledge&lt;/strong&gt;&lt;br&gt;
75 questions in 3 hours is a mental marathon. Take full-length practice exams under real conditions. Your brain needs to know what question 60 feels like before exam day.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Your background is an asset, not a gap&lt;/strong&gt;&lt;br&gt;
Coming from data analytics, I thought in terms of metrics, dashboards, and stakeholder needs. That translated directly to CloudWatch and observability concepts. Find what transfers from your experience. It's there.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What's Next&lt;/strong&gt;&lt;br&gt;
This is the first post in my "Data Analyst to Cloud Engineer" series. I'm documenting this transition in real-time: the wins, the failures, the interview stories, and the technical deep dives.&lt;/p&gt;

&lt;p&gt;Coming up:&lt;br&gt;
• EKS on Fargate: The $200 Weekend Mistake That Taught Me Cost Optimization&lt;br&gt;
• IAM Roles vs. Users vs. Service Accounts: Explained for Data Analysts&lt;br&gt;
• 5 AWS Interview Questions That Stumped Me (And How I'd Answer Today)&lt;/p&gt;

&lt;p&gt;If you're on a similar journey, or thinking about starting one, follow along. And if you've already made this transition, I'd love to hear what surprised you most. Drop a comment below.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>career</category>
      <category>cicd</category>
    </item>
    <item>
      <title>How I Built a Terraform CI/CD Pipeline on AWS with GitHub Actions</title>
      <dc:creator>Jha'</dc:creator>
      <pubDate>Tue, 05 Aug 2025 02:13:54 +0000</pubDate>
      <link>https://forem.com/jzmt/how-i-built-a-terraform-cicd-pipeline-on-aws-with-github-actions-4o5f</link>
      <guid>https://forem.com/jzmt/how-i-built-a-terraform-cicd-pipeline-on-aws-with-github-actions-4o5f</guid>
      <description>&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%2F138mirz6cawtfl2u8rnp.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%2F138mirz6cawtfl2u8rnp.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my journey to transition from &lt;strong&gt;data analytics into cloud engineering and DevOps&lt;/strong&gt;, I wanted to master &lt;strong&gt;Infrastructure as Code(IaC)&lt;/strong&gt; and automation.&lt;/p&gt;

&lt;p&gt;One of the projects I recently completed was &lt;strong&gt;building a CI/CD pipeline using Terraform Cloud and GitHub Actions to deploy AWS Infrastructure&lt;/strong&gt;. This workflow reflects real-world workflows and DevOps practices where infrastructure is &lt;strong&gt;version-controlled, automated, and secure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this post, I'll cover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;architecture of my Terraform Cloud pipeline&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Key &lt;strong&gt;GitHub Actions &amp;amp; HCL configurations&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lessons learned&lt;/strong&gt; and &lt;strong&gt;next steps&lt;/strong&gt; for scaling this workflow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📌&lt;strong&gt;Project Overview&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Objective&lt;/strong&gt;: Automatically provision and update AWS infrastructure using &lt;strong&gt;Terraform Cloud&lt;/strong&gt; whenever new commits are pushed to main. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Tools &amp;amp; Services Used&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terraform Cloud&lt;/strong&gt; - Remote backend, state management, and automated runs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; - CI/CD pipeline for VCS integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terraform &amp;amp; AWS&lt;/strong&gt; - Infrastructure as Code and resource provisioning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS S3 + DynamoDB&lt;/strong&gt; - Optional state backup (Terraform Cloud handles the primary state)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM Roles &amp;amp; GitHub Secrets&lt;/strong&gt; - Secure authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pipeline workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer Commit -&amp;gt; GitHub Actions -&amp;gt; Terraform Validate-&amp;gt; Terraform Cloud Remote Plan -&amp;gt; Terraform Apply -&amp;gt; AWS Resources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allowed me to &lt;strong&gt;version-control my infrastructure&lt;/strong&gt; and deploy changes safely without manually logging into the AWS console.&lt;/p&gt;

&lt;p&gt;🛠 &lt;strong&gt;Step 1: Terraform Cloud Setup&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Created a &lt;strong&gt;Terraform Cloud Organization and workspace&lt;/strong&gt;(workspace linked to github).&lt;/li&gt;
&lt;li&gt;Configured HCL project files for VPC, EC2, and RDS resources.&lt;/li&gt;
&lt;li&gt;Enabled &lt;strong&gt;remote execution&lt;/strong&gt; so Terraform Cloud applies changes automatically.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Backend block in main.tf:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform {
   cloud{
      organization = "my-org"

      workspaces {
         name = "project2-dev"
    } 
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This eliminates the need to manage local state or S3/DynamoDB locks manually- Terraform Cloud takes care of it.&lt;/p&gt;

&lt;p&gt;🛠&lt;strong&gt;Step 2: GitHub Actions Workflow for CI/CD&lt;/strong&gt;&lt;br&gt;
Instead of applying Terraform directly in GitHub Actions, my workflow &lt;strong&gt;validates the code&lt;/strong&gt; and relies on &lt;strong&gt;Terraform Cloud for the plan/apply&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Terraform CI/CD
 on: 
   push:
      branches: 
       - main
jobs:
  terraform-cloud:
    runs-on: ubuntu-latest

      env:
        TF_CLOUD_ORGANIZATION: my-org
        TF_API_TOKEN: ${{ secrets.TF_API_TOKEN }}
        TF_WORKSPACE: poject2-dev

steps:
  - name: Checkout Repo
    uses: actions/checkout@v3  

  - name: Setup Terraform
    uses: hashicorp/setup-terraform@v2
    with:
       terraform_version: 1.11.4 #Pin version for consistency

  - name: Terraform Validate
    run: terraform validate

  - name: Trigger Terraform Cloud Run
    run: |
      terraform login --token=$TF_API_TOKEN
      terraform init
      terraform plan
      terraform apply - auto-approve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key points&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; store the Terraform Cloud API token.&lt;/li&gt;
&lt;li&gt;Workflow &lt;strong&gt;validates locally&lt;/strong&gt; but delegates execution to Terraform Cloud.&lt;/li&gt;
&lt;li&gt;Optional &lt;strong&gt;approval steps&lt;/strong&gt; can be handled via Terraform Cloud's policy or run queue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛡 &lt;strong&gt;Step 3: Security and Secrets&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terraform Cloud &lt;strong&gt;handles the remote state securely&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No secrets or .tfstate files&lt;/strong&gt; are committed to Github.&lt;/li&gt;
&lt;li&gt;IAM roles use least privilege to limit AWS resource access.&lt;/li&gt;
&lt;li&gt;AWS credentials were stored as &lt;strong&gt;GitHub Secrets&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📊&lt;strong&gt;Lessons Learned&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Terraform Cloud simplifies team collaboration&lt;/strong&gt; - no local state headaches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD + IaC improves reliability&lt;/strong&gt; - every infrastructure change is tested and approved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version-controlled deployments&lt;/strong&gt; provide a clear audit trail for cloud environments.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🚀&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;strong&gt;multi-enviroment pipelines&lt;/strong&gt;(dev, staging, prod)&lt;/li&gt;
&lt;li&gt;Send Slack or Teams notifications on successful plans and applies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💬 &lt;strong&gt;Have you automated Terraform with Terraform Cloud or another CI/CD tool?&lt;/strong&gt; I'd love to hear how you handle multi-environment deployments and approvals.&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #terraform #terraformcloud #devops #iac #cicd #githubactions
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
