Skip to main content
Fix Terraform Error - Error Configuring Terraform AWS Provider - NoCredentialProviders

Fix Terraform Error - Error Configuring Terraform AWS Provider - NoCredentialProviders

Key Takeaway

How to fix NoCredentialProviders error when configuring the Terraform AWS provider. Debug credential chain, instance profiles, and shared config.

Table of Contents

The Error

Error configuring Terraform AWS Provider: no valid credential sources for Terraform AWS Provider found

What Causes This

The AWS provider exhausted its entire credential chain without finding valid credentials. Terraform checks in order: environment variables, shared credentials file (~/.aws/credentials), shared config (~/.aws/config), EC2 instance profile/ECS task role. If none provide valid credentials, you get this error.

How to Fix It

Solution 1: Set Environment Variables

export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_REGION="us-east-1"

# For temporary credentials (STS)
export AWS_SESSION_TOKEN="your-session-token"

terraform plan

Solution 2: Configure Shared Credentials

# Create or update ~/.aws/credentials
aws configure

# Or manually:
mkdir -p ~/.aws
cat > ~/.aws/credentials << CREDS
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = your-secret-key
CREDS

Solution 3: Use Named Profiles

provider "aws" {
  region  = "us-east-1"
  profile = "production"  # Uses [production] from ~/.aws/credentials
}

Solution 4: EC2 Instance Profile

# Verify instance has an IAM role attached
curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/
# Should return the role name

# If no role, attach one via AWS Console or CLI
aws ec2 associate-iam-instance-profile \
  --instance-id i-0123456789abcdef0 \
  --iam-instance-profile Name=my-instance-profile

Solution 5: ECS Task Role

resource "aws_ecs_task_definition" "app" {
  family             = "my-app"
  task_role_arn      = aws_iam_role.task.arn
  execution_role_arn = aws_iam_role.execution.arn
  # ...
}

Solution 6: Debug the Credential Chain

# See which credentials Terraform finds
export TF_LOG=DEBUG
terraform plan 2>&1 | grep -i "credential\|auth\|assume"

Prevention Tips

  1. Pin provider versions — avoid surprise breaking changes
  2. Use CI/CD — catch errors before they hit production
  3. Test with terraform plan — always review before applying
  4. Keep Terraform updated — newer versions have better error messages
  5. Use terraform validate — catches syntax errors early

Hands-On Courses

Learn to avoid these errors with interactive, project-based courses:

Conclusion

This error is common and fixable. Follow the solutions above, and check our Terraform course for hands-on training that covers real-world troubleshooting scenarios.

🚀

Level Up Your Terraform Skills

Hands-on courses, books, and resources from Luca Berton

Luca Berton
Written by

Luca Berton

DevOps Engineer, AWS Partner, Terraform expert, and author. Creator of Ansible Pilot, Terraform Pilot, and CopyPasteLearn.