<?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>DEV Community: Osayuwamen Aigbogun</title>
    <description>The latest articles on DEV Community by Osayuwamen Aigbogun (@greatkalaso).</description>
    <link>https://dev.to/greatkalaso</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1695446%2F4624d0cb-94d7-42dc-9f62-8337fc82c437.jpg</url>
      <title>DEV Community: Osayuwamen Aigbogun</title>
      <link>https://dev.to/greatkalaso</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/greatkalaso"/>
    <language>en</language>
    <item>
      <title>Step-by-Step Guide to Setting Up Terraform, AWS CLI, and Your AWS Environment</title>
      <dc:creator>Osayuwamen Aigbogun</dc:creator>
      <pubDate>Wed, 23 Sep 2026 20:26:27 +0000</pubDate>
      <link>https://dev.to/greatkalaso/step-by-step-guide-to-setting-up-terraform-aws-cli-and-your-aws-environment-50fp</link>
      <guid>https://dev.to/greatkalaso/step-by-step-guide-to-setting-up-terraform-aws-cli-and-your-aws-environment-50fp</guid>
      <description>&lt;p&gt;Setting up your local development environment is one of the first and most important steps when getting started with Infrastructure as Code (IaC).&lt;/p&gt;

&lt;p&gt;When working with Terraform and AWS, how you manage authentication matters just as much as how you write your infrastructure code. Hardcoding AWS access keys into Terraform provider configurations might seem convenient initially, but it introduces unnecessary security risks and makes credential management more difficult.&lt;/p&gt;

&lt;p&gt;A better approach is to use AWS IAM Identity Center (formerly AWS SSO) to manage short-lived credentials and integrate them with the AWS CLI, Terraform, and VS Code.&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through the exact setup process I used, including:&lt;/p&gt;

&lt;p&gt;Configuring AWS IAM Identity Center.&lt;br&gt;
Setting up AWS CLI authentication using SSO.&lt;br&gt;
Managing AWS profiles with aws-sso-util.&lt;br&gt;
Configuring Terraform in VS Code.&lt;br&gt;
Handling PowerShell command-line issues.&lt;br&gt;
Improving the workflow with automated credential checks.&lt;/p&gt;

&lt;p&gt;Let's get started!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Defining the Architecture and Key Decision&lt;/strong&gt;s&lt;/p&gt;

&lt;p&gt;Before running any terminal commands, I made three important decisions regarding the development environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.1 Authentication Strategy: AWS IAM Identity Center&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of using static AWS access keys, I chose AWS IAM Identity Center (AWS SSO).&lt;/p&gt;

&lt;p&gt;This approach provides several advantages:&lt;/p&gt;

&lt;p&gt;Uses temporary credentials instead of long-lived access keys.&lt;br&gt;
Reduces the risk of accidentally exposing secrets.&lt;br&gt;
Simplifies authentication across AWS accounts.&lt;br&gt;
Supports centralized access management through AWS permission sets.&lt;/p&gt;

&lt;p&gt;Security note: Temporary credentials improve security, but they don't eliminate all risks. Always follow the principle of least privilege and avoid assigning administrator permissions unless they are genuinely required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.2 Primary AWS Region&lt;/strong&gt;&lt;br&gt;
For this setup, I selected:&lt;/p&gt;

&lt;p&gt;us-east-1&lt;/p&gt;

&lt;p&gt;This region was used as the default region for my AWS CLI and Terraform configuration.&lt;/p&gt;

&lt;p&gt;Important: IAM Identity Center is configured in a specific AWS Region, and the SSO configuration must use the region where your IAM Identity Center instance is deployed. Your workload resources can be deployed in other regions as needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.3 Tooling Stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are the tools used in this setup:&lt;/p&gt;

&lt;p&gt;Tool    Purpose&lt;br&gt;
AWS CLI v2  AWS authentication and command-line management&lt;br&gt;
Terraform CLI   Infrastructure as Code&lt;br&gt;
aws-sso-util    AWS SSO profile management and credential workflows&lt;br&gt;
Visual Studio Code  Development environment&lt;br&gt;
HashiCorp Terraform Extension   Terraform syntax highlighting and editor support&lt;/p&gt;

&lt;p&gt;With the tools and authentication strategy defined, let's configure the AWS environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Setting Up AWS IAM Identity Center&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first step is to configure IAM Identity Center from the AWS Management Console.&lt;/p&gt;

&lt;p&gt;Step 1: Log In to the AWS Management Console&lt;/p&gt;

&lt;p&gt;Log in using an account with the permissions required to configure IAM Identity Center.&lt;/p&gt;

&lt;p&gt;For a new AWS environment, this may involve the AWS account's management or administrative setup.&lt;/p&gt;

&lt;p&gt;Step 2: Enable IAM Identity Center&lt;br&gt;
Open the AWS Management Console.&lt;br&gt;
Search for IAM Identity Center.&lt;br&gt;
Open the service.&lt;br&gt;
Click Enable if it has not already been activated.&lt;/p&gt;

&lt;p&gt;Once enabled, you can manage users, permission sets, and account assignments.&lt;/p&gt;

&lt;p&gt;Step 3: Create a Dedicated User&lt;/p&gt;

&lt;p&gt;Navigate to:&lt;/p&gt;

&lt;p&gt;IAM Identity Center → Users → Add user&lt;/p&gt;

&lt;p&gt;Enter the required user information, including your name and email address.&lt;/p&gt;

&lt;p&gt;AWS will send an email invitation or activation workflow, depending on your configuration.&lt;/p&gt;

&lt;p&gt;Step 4: Create a Permission Set&lt;/p&gt;

&lt;p&gt;Navigate to:&lt;/p&gt;

&lt;p&gt;IAM Identity Center → Permission sets → Create permission set&lt;/p&gt;

&lt;p&gt;For this setup, I selected:&lt;/p&gt;

&lt;p&gt;Predefined permission set → AdministratorAccess&lt;/p&gt;

&lt;p&gt;Security recommendation: AdministratorAccess grants broad permissions. For production environments, consider creating a custom permission set with only the permissions required for your Terraform workflows.&lt;/p&gt;

&lt;p&gt;Step 5: Assign Account Access&lt;/p&gt;

&lt;p&gt;Navigate to the AWS accounts section.&lt;/p&gt;

&lt;p&gt;Select the AWS account you want to access.&lt;br&gt;
Choose your IAM Identity Center user.&lt;br&gt;
Assign the AdministratorAccess permission set.&lt;br&gt;
Complete the account assignment.&lt;/p&gt;

&lt;p&gt;Your user should now be able to authenticate through the AWS access portal.&lt;/p&gt;

&lt;p&gt;Step 6: Retrieve the AWS Access Portal URL&lt;/p&gt;

&lt;p&gt;From the IAM Identity Center settings dashboard, copy the AWS access portal URL.&lt;/p&gt;

&lt;p&gt;It should look similar to:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://d-xxxxxxxxx.awsapps.com/start" rel="noopener noreferrer"&gt;https://d-xxxxxxxxx.awsapps.com/start&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Important: Use the AWS access portal URL when configuring SSO. Do not substitute the IAM Identity Center instance ARN for the start URL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Configuring the AWS CLI Using SSO&lt;/strong&gt;&lt;br&gt;
With IAM Identity Center configured, the next step is to connect your local machine to AWS.&lt;/p&gt;

&lt;p&gt;I used the integrated terminal in VS Code for this setup.&lt;/p&gt;

&lt;p&gt;Step 1: Start the AWS SSO Configuration Wizard&lt;/p&gt;

&lt;p&gt;Run the following command:&lt;/p&gt;

&lt;p&gt;aws configure sso&lt;/p&gt;

&lt;p&gt;The AWS CLI will guide you through the configuration process.&lt;/p&gt;

&lt;p&gt;Step 2: Provide the Configuration Details&lt;/p&gt;

&lt;p&gt;During the setup, you will be prompted for values similar to the following:&lt;/p&gt;

&lt;p&gt;Configuration   Value&lt;br&gt;
SSO session name    my-org&lt;br&gt;
SSO start URL   Your AWS access portal URL&lt;br&gt;
SSO region  us-east-1 (if applicable to your Identity Center instance)&lt;br&gt;
SSO registration scopes sso:account:access&lt;/p&gt;

&lt;p&gt;For the start URL, use your actual AWS access portal URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://d-xxxxxxxxx.awsapps.com/start" rel="noopener noreferrer"&gt;https://d-xxxxxxxxx.awsapps.com/start&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AWS CLI will open a browser window for authorization.&lt;/p&gt;

&lt;p&gt;After authentication:&lt;/p&gt;

&lt;p&gt;Select the target AWS account.&lt;br&gt;
Select the available permission set.&lt;br&gt;
Enter a profile name when prompted.&lt;/p&gt;

&lt;p&gt;For this setup, I used:&lt;/p&gt;

&lt;p&gt;dev-profile&lt;br&gt;
Step 3: Verify the AWS Session&lt;/p&gt;

&lt;p&gt;Once configuration is complete, verify that your profile can authenticate successfully:&lt;/p&gt;

&lt;p&gt;aws sts get-caller-identity --profile dev-profile&lt;/p&gt;

&lt;p&gt;If authentication is successful, AWS will return information such as:&lt;/p&gt;

&lt;p&gt;Account ID.&lt;br&gt;
IAM role or assumed-role ARN.&lt;br&gt;
Caller identity ID.&lt;/p&gt;

&lt;p&gt;This confirms that the AWS CLI is using the configured profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Automating Profile Management with aws-sso-util&lt;/strong&gt;&lt;br&gt;
Managing multiple AWS accounts and SSO profiles manually can become difficult, especially when working across different environments.&lt;/p&gt;

&lt;p&gt;To simplify this workflow, I installed aws-sso-util, a Python-based command-line utility designed to assist with AWS SSO configuration and credential management.&lt;/p&gt;

&lt;p&gt;Step 1: Install aws-sso-util&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;pip install aws-sso-util&lt;/p&gt;

&lt;p&gt;Tip: Consider using a Python virtual environment when installing Python CLI tools to avoid conflicts with other projects.&lt;/p&gt;

&lt;p&gt;Step 2: Configure AWS SSO Profiles&lt;/p&gt;

&lt;p&gt;The following command was used to populate AWS SSO profile configuration:&lt;/p&gt;

&lt;p&gt;aws-sso-util configure populate --sso-start-url &lt;a href="https://d-xxxxxxxxx.awsapps.com/start" rel="noopener noreferrer"&gt;https://d-xxxxxxxxx.awsapps.com/start&lt;/a&gt; --sso-region us-east-1 --region us-east-1&lt;/p&gt;

&lt;p&gt;Replace the example start URL with your actual AWS access portal URL.&lt;/p&gt;

&lt;p&gt;My recommendation: When working with long commands in PowerShell, use a single-line command when practical. It reduces the risk of line-continuation and formatting errors.&lt;/p&gt;

&lt;p&gt;Step 3: Start the SSO Session&lt;/p&gt;

&lt;p&gt;After configuring the profiles, initiate the login process:&lt;/p&gt;

&lt;p&gt;aws-sso-util login&lt;/p&gt;

&lt;p&gt;Follow the prompts provided by the utility to authenticate.&lt;/p&gt;

&lt;p&gt;Note: The exact behavior of aws-sso-util depends on the installed version and your AWS configuration. Verify the utility's current documentation if a command behaves differently in your environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Configuring Terraform in VS Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that AWS authentication is configured, the next step is to connect Terraform to the AWS environment.&lt;/p&gt;

&lt;p&gt;One of the advantages of using SSO-based authentication is that your Terraform provider configuration can remain simple without embedding static access keys.&lt;/p&gt;

&lt;p&gt;Step 1: Create provider.tf&lt;/p&gt;

&lt;p&gt;Inside your Terraform project, create a file named:&lt;/p&gt;

&lt;p&gt;provider.tf&lt;/p&gt;

&lt;p&gt;Add the following configuration:&lt;/p&gt;

&lt;p&gt;terraform {&lt;br&gt;
  required_version = "&amp;gt;= 1.5.0"&lt;/p&gt;

&lt;p&gt;required_providers {&lt;br&gt;
    aws = {&lt;br&gt;
      source  = "hashicorp/aws"&lt;br&gt;
      version = "~&amp;gt; 5.0"&lt;br&gt;
    }&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;provider "aws" {&lt;br&gt;
  region  = "us-east-1"&lt;br&gt;
  profile = "dev-profile"&lt;br&gt;
}&lt;br&gt;
Understanding the Configuration&lt;/p&gt;

&lt;p&gt;Terraform version constraint&lt;/p&gt;

&lt;p&gt;required_version = "&amp;gt;= 1.5.0"&lt;/p&gt;

&lt;p&gt;This specifies the minimum Terraform version supported by the configuration.&lt;/p&gt;

&lt;p&gt;AWS provider&lt;/p&gt;

&lt;p&gt;source  = "hashicorp/aws"&lt;br&gt;
version = "~&amp;gt; 5.0"&lt;/p&gt;

&lt;p&gt;This identifies the AWS provider and specifies a compatible version range within the 5.x release series.&lt;/p&gt;

&lt;p&gt;AWS region&lt;/p&gt;

&lt;p&gt;region = "us-east-1"&lt;/p&gt;

&lt;p&gt;This sets the default region for AWS resources managed through the provider.&lt;/p&gt;

&lt;p&gt;AWS profile&lt;/p&gt;

&lt;p&gt;profile = "dev-profile"&lt;/p&gt;

&lt;p&gt;This tells Terraform to use the AWS CLI profile named dev-profile.&lt;/p&gt;

&lt;p&gt;Step 2: Initialize Terraform&lt;/p&gt;

&lt;p&gt;Open the integrated terminal in VS Code and run:&lt;/p&gt;

&lt;p&gt;terraform init&lt;/p&gt;

&lt;p&gt;This command initializes the Terraform working directory and downloads the required provider plugins.&lt;/p&gt;

&lt;p&gt;Step 3: Validate the Terraform Configuration&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;terraform validate&lt;/p&gt;

&lt;p&gt;This checks whether the Terraform configuration is syntactically valid and internally consistent.&lt;/p&gt;

&lt;p&gt;Step 4: Run a Terraform Plan&lt;/p&gt;

&lt;p&gt;Next, run:&lt;/p&gt;

&lt;p&gt;terraform plan&lt;/p&gt;

&lt;p&gt;This generates an execution plan showing the infrastructure changes Terraform intends to make.&lt;/p&gt;

&lt;p&gt;If your configuration includes AWS resources, Terraform will need valid credentials and the required permissions to read the relevant AWS APIs.&lt;/p&gt;

&lt;p&gt;Important: terraform plan is not just a general credential test. It evaluates the configuration and may make AWS API calls depending on the resources and data sources involved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Terraform Uses the AWS SSO Credentials&lt;/strong&gt;&lt;br&gt;
Terraform's AWS provider can use credentials supplied through the AWS shared configuration and credential files.&lt;/p&gt;

&lt;p&gt;When the configured AWS profile contains valid temporary credentials, the provider can use them to authenticate with AWS.&lt;/p&gt;

&lt;p&gt;This means you do not need to place static credentials directly inside your Terraform provider block.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security principle:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Never hardcode AWS access keys or secret keys in Terraform configuration files.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Automating the Terraform Workflow (Pro Tip)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One of the challenges of using temporary AWS credentials is that sessions eventually expire.&lt;/p&gt;

&lt;p&gt;Instead of manually checking the session every time, you can create a shell wrapper that checks whether your credentials are still valid before running Terraform.&lt;/p&gt;

&lt;p&gt;The implementation depends on your shell.&lt;/p&gt;

&lt;p&gt;Option 1: Bash or Zsh&lt;/p&gt;

&lt;p&gt;For Bash or Zsh, you can add a function to your shell configuration file, such as:&lt;/p&gt;

&lt;p&gt;~/.zshrc&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;tf() {&lt;br&gt;
  if ! aws sts get-caller-identity --profile dev-profile &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&lt;br&gt;
    echo "SSO session expired. Refreshing..."&lt;br&gt;
    aws sso login --profile dev-profile&lt;br&gt;
  fi&lt;/p&gt;

&lt;p&gt;command terraform "$@"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;After adding the function, reload your shell configuration:&lt;/p&gt;

&lt;p&gt;source ~/.zshrc&lt;/p&gt;

&lt;p&gt;You can then run:&lt;/p&gt;

&lt;p&gt;tf plan&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;tf apply&lt;br&gt;
Option 2: PowerShell&lt;/p&gt;

&lt;p&gt;Since I primarily use VS Code with PowerShell, here's a PowerShell equivalent:&lt;/p&gt;

&lt;p&gt;function tf {&lt;br&gt;
    $profileName = "dev-profile"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws sts get-caller-identity --profile $profileName *&amp;gt; $null

if ($LASTEXITCODE -ne 0) {
    Write-Host "SSO session expired or unavailable. Refreshing..."

    aws sso login --profile $profileName

    if ($LASTEXITCODE -ne 0) {
        Write-Error "AWS SSO login failed."
        return
    }
}

terraform @args
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;You can add this function to your PowerShell profile:&lt;/p&gt;

&lt;p&gt;notepad $PROFILE&lt;/p&gt;

&lt;p&gt;If the profile file does not exist, create it first:&lt;/p&gt;

&lt;p&gt;New-Item -ItemType File -Path $PROFILE -Force&lt;/p&gt;

&lt;p&gt;After saving the function, reload your PowerShell profile:&lt;/p&gt;

&lt;p&gt;. $PROFILE&lt;/p&gt;

&lt;p&gt;Now you can use:&lt;/p&gt;

&lt;p&gt;tf plan&lt;/p&gt;

&lt;p&gt;The wrapper checks whether AWS credentials are valid. If the session is unavailable, it prompts you to authenticate through AWS SSO before proceeding.&lt;/p&gt;

&lt;p&gt;Important: The wrapper only handles the login check. You should still review your Terraform plan carefully before applying infrastructure changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Common Issues and Lessons Learned&lt;/strong&gt;&lt;br&gt;
Setting up Terraform with AWS SSO is relatively straightforward, but a few details can cause confusion.&lt;/p&gt;

&lt;p&gt;7.1 PowerShell and Bash Are Not the Same&lt;/p&gt;

&lt;p&gt;Commands copied from Linux tutorials may not work as expected in PowerShell.&lt;/p&gt;

&lt;p&gt;Feature Bash    PowerShell&lt;br&gt;
Multiline continuation  \   Backtick (`)&lt;br&gt;
Output redirection  /dev/null   $null or PowerShell redirection&lt;br&gt;
Shell profile   ~/.bashrc or ~/.zshrc   $PROFILE&lt;/p&gt;

&lt;p&gt;Always adapt commands to the shell you are using.&lt;/p&gt;

&lt;p&gt;7.2 Use the Correct SSO Start URL&lt;/p&gt;

&lt;p&gt;The AWS SSO start URL is not the same as the IAM Identity Center instance ARN.&lt;/p&gt;

&lt;p&gt;Use the access portal URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://d-xxxxxxxxx.awsapps.com/start" rel="noopener noreferrer"&gt;https://d-xxxxxxxxx.awsapps.com/start&lt;/a&gt;&lt;br&gt;
7.3 Avoid Hardcoded Credentials&lt;/p&gt;

&lt;p&gt;Do not store the following directly in your Terraform provider configuration:&lt;/p&gt;

&lt;p&gt;access_key = "YOUR_ACCESS_KEY"&lt;br&gt;
secret_key = "YOUR_SECRET_KEY"&lt;/p&gt;

&lt;p&gt;Use AWS's supported credential mechanisms instead, such as IAM Identity Center, environment-based credentials, or IAM roles.&lt;/p&gt;

&lt;p&gt;7.4 Check Your Permission Sets&lt;/p&gt;

&lt;p&gt;A successful SSO login does not automatically mean you have permission to perform every Terraform operation.&lt;/p&gt;

&lt;p&gt;Ensure that your assigned permission set grants the permissions required for the resources you are managing.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Final Workflow Summary&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is the workflow I use to connect AWS SSO, Terraform, and VS Code:&lt;/p&gt;

&lt;p&gt;AWS Management Console&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
AWS IAM Identity Center&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
Configure AWS CLI with SSO&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
Create and authenticate AWS profile&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
Configure Terraform provider&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
terraform init&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
terraform validate&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
terraform plan&lt;br&gt;
          │&lt;br&gt;
          ▼&lt;br&gt;
Review and apply infrastructure changes&lt;/p&gt;

&lt;p&gt;The goal is to establish a secure and repeatable workflow for managing AWS infrastructure without relying on static access keys in Terraform configuration files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Setting up Terraform and AWS correctly from the beginning can save you a lot of time and prevent avoidable security mistakes.&lt;/p&gt;

&lt;p&gt;By combining AWS IAM Identity Center, AWS CLI, Terraform, and VS Code, you can build a workflow that supports temporary credentials, cleaner infrastructure code, and more manageable AWS authentication.&lt;/p&gt;

&lt;p&gt;The PowerShell issues I encountered also reinforced an important lesson: understanding your development environment matters. A command that works perfectly in Bash may require adjustments in PowerShell.&lt;/p&gt;

&lt;p&gt;If you're learning Terraform or preparing for real-world cloud engineering projects, getting your authentication workflow right is a valuable first step.&lt;/p&gt;

&lt;p&gt;What's your preferred way of managing AWS credentials for Terraform: IAM Identity Center, IAM roles, or another approach?&lt;/p&gt;

&lt;p&gt;Share your experience in the comments!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>terraform</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What is Infrastructure as Code and Why It's Transforming DevOps</title>
      <dc:creator>Osayuwamen Aigbogun</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:53:03 +0000</pubDate>
      <link>https://dev.to/greatkalaso/what-is-infrastructure-as-code-and-why-its-transforming-devops-1k2b</link>
      <guid>https://dev.to/greatkalaso/what-is-infrastructure-as-code-and-why-its-transforming-devops-1k2b</guid>
      <description>&lt;p&gt;As I continue my journey into cloud computing and DevOps, one concept that has caught my attention is Infrastructure as Code (IaC).&lt;/p&gt;

&lt;p&gt;But what exactly is IaC, and why is it becoming an essential part of modern DevOps?&lt;/p&gt;

&lt;p&gt;🔹 What is Infrastructure as Code (IaC)?&lt;/p&gt;

&lt;p&gt;Infrastructure as Code is the practice of managing and provisioning infrastructure—such as servers, networks, databases, and cloud resources, using code instead of configuring everything manually.&lt;/p&gt;

&lt;p&gt;Traditionally, infrastructure setup involves repetitive manual tasks, which can lead to human errors, inconsistent environments, and difficulties when scaling.&lt;/p&gt;

&lt;p&gt;IaC solves these problems by allowing us to define infrastructure in code, making it repeatable, consistent, automated, and easier to manage.&lt;/p&gt;

&lt;p&gt;🔹 Declarative vs. Imperative Approaches&lt;/p&gt;

&lt;p&gt;There are two common approaches to Infrastructure as Code:&lt;/p&gt;

&lt;p&gt;✅ Declarative Approach: You define what you want your infrastructure to look like, and the tool determines how to achieve that desired state.&lt;/p&gt;

&lt;p&gt;Example: Terraform.&lt;/p&gt;

&lt;p&gt;✅ Imperative Approach: You define how the infrastructure should be created by specifying the sequence of commands or steps to execute.&lt;/p&gt;

&lt;p&gt;Example: A script that creates a virtual machine, configures networking, and installs required software step by step.&lt;/p&gt;

&lt;p&gt;The declarative approach focuses on the desired outcome, while the imperative approach focuses on the instructions needed to achieve it.&lt;/p&gt;

&lt;p&gt;🔹 Why Terraform Is Worth Learning&lt;/p&gt;

&lt;p&gt;Terraform is an open-source Infrastructure as Code tool that allows you to provision and manage infrastructure across different cloud providers and services.&lt;/p&gt;

&lt;p&gt;Here are a few reasons I'm interested in learning Terraform:&lt;/p&gt;

&lt;p&gt;🔸 Automates infrastructure deployment.&lt;/p&gt;

&lt;p&gt;🔸 Supports multiple cloud providers.&lt;/p&gt;

&lt;p&gt;🔸 Enables infrastructure version control.&lt;/p&gt;

&lt;p&gt;🔸 Helps maintain consistency across environments.&lt;/p&gt;

&lt;p&gt;🔸 Encourages collaboration between development and operations teams.&lt;/p&gt;

&lt;p&gt;Terraform is a valuable skill for anyone looking to grow in cloud engineering, DevOps, or cloud infrastructure automation.&lt;/p&gt;

&lt;p&gt;🔹 My Goals for This 30-Day Challenge 🎯&lt;/p&gt;

&lt;p&gt;Over the next 30 days, my goals are to:&lt;/p&gt;

&lt;p&gt;✅ Build a strong foundation in Infrastructure as Code.&lt;/p&gt;

&lt;p&gt;✅ Learn Terraform fundamentals and best practices.&lt;/p&gt;

&lt;p&gt;✅ Understand how to provision AWS resources using code.&lt;/p&gt;

&lt;p&gt;✅ Practice creating and managing cloud infrastructure.&lt;/p&gt;

&lt;p&gt;✅ Develop hands-on projects that strengthen my technical portfolio.&lt;/p&gt;

&lt;p&gt;✅ Share my learning journey, challenges, and progress with the community.&lt;/p&gt;

&lt;p&gt;I believe that consistent learning, practical application, and sharing knowledge are key to growth in tech.&lt;/p&gt;

&lt;p&gt;I'm excited to begin this challenge, learn from others, and take another step toward becoming a stronger cloud and data professional.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>cloud</category>
      <category>devops</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Solving a Complex Backend Problem: My Journey with an Expense Tracker</title>
      <dc:creator>Osayuwamen Aigbogun</dc:creator>
      <pubDate>Fri, 28 Jun 2024 13:39:45 +0000</pubDate>
      <link>https://dev.to/greatkalaso/solving-a-complex-backend-problem-my-journey-with-an-expense-tracker-3pc8</link>
      <guid>https://dev.to/greatkalaso/solving-a-complex-backend-problem-my-journey-with-an-expense-tracker-3pc8</guid>
      <description>&lt;p&gt;Hello, fellow tech enthusiasts!&lt;/p&gt;

&lt;p&gt;I’m thrilled to share my journey as a backend developer tackling a challenging problem recently and why I'm excited about the upcoming HNG Internship. This experience not only tested my technical skills but also highlighted the importance of perseverance and creative problem-solving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was tasked with developing a sophisticated expense tracker application that could handle multiple currencies, provide real-time exchange rates, and ensure data integrity across numerous concurrent users. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Requirement Gathering and Planning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Understanding the requirements was crucial. I had detailed meetings with stakeholders to grasp their needs, which included multi-currency support, real-time exchange rate updates, user authentication, data security, and scalability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Choosing the Tech Stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Based on the requirements, I chose Node.js for its asynchronous capabilities and scalability, MongoDB for its flexibility with unstructured data, and Redis for caching exchange rates to ensure fast access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Setting Up the Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I started by setting up the project structure, integrating Express.js for handling routes, and connecting to MongoDB to establish a solid foundation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Implementing Multi-Currency Support&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To handle multiple currencies, I integrated a reliable third-party API for real-time exchange rates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Ensuring Data Integrity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Concurrency issues can lead to data corruption, so I used transactions in MongoDB to ensure atomicity and data consistency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Optimizing Performance with Caching&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fetching exchange rates frequently can be costly and slow, so I implemented caching using Redis to improve performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why the HNG Internship?
&lt;/h3&gt;

&lt;p&gt;My journey with this expense tracker project underscored the importance of continuous learning and problem-solving. As I prepare for the HNG Internship, I’m eager to leverage these experiences and hone my skills further.&lt;/p&gt;

&lt;p&gt;The HNG Internship offers a unique platform to collaborate with like-minded individuals and learn from industry experts. It’s a golden opportunity to expand my knowledge and make meaningful contributions. I am particularly drawn to the program’s emphasis on real-world projects and the potential to network with professionals in the field.&lt;/p&gt;

&lt;p&gt;To those interested in the HNG Internship, you can learn more about the program &lt;a href="https://hng.tech/internship" rel="noopener noreferrer"&gt;here&lt;/a&gt; and explore hiring opportunities &lt;a href="https://hng.tech/hire" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In conclusion, this journey has been a testament to my passion for backend development and my readiness to tackle complex challenges. The HNG Internship is the next step in my professional growth, and I can't wait to embark on this exciting adventure.&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates on my journey!&lt;/p&gt;

&lt;p&gt;By Osayuwamen Aigbogun &lt;/p&gt;

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