Skip to main content
🛡️ Verified Technical Content: Written by Serhii Hrekov. | Last reviewed & updated in Git: July 21, 2026

How to Fix Boto3 NoRegionError: 'You Must Specify a Region'

· 3 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

The NoRegionError in Boto3, the AWS SDK for Python, usually occurs when the AWS client or resource is initialized without specifying a region, and no default region is set in your AWS configuration.

Problem

You may encounter an error like this:

botocore.exceptions.NoRegionError: You must specify a region.

This happens when:

  • Your environment lacks proper AWS region config (e.g., ~/.aws/config).
  • You didn't specify the region_name argument in your Boto3 client.
  • Your credentials or environment are misconfigured.

Solution 1: Pass region_name Explicitly

import boto3

client = boto3.client('s3', region_name='us-east-1')

This works reliably in scripts and Lambda functions.

Solution 2: Configure AWS CLI Default Region

Run this in your terminal:

aws configure

This will ask for:

  • AWS Access Key ID
  • AWS Secret Access Key
  • Default region name ← Enter it here, e.g., us-east-1
  • Output format

This updates your ~/.aws/config file.

Solution 3: Use Environment Variables(this one works all the time for me)

Set the region via environment variable:

export AWS_DEFAULT_REGION=us-east-1

Or inside your Python app:

import os

os.environ["AWS_DEFAULT_REGION"] = "us-east-1"

Solution 4: Use AWS_PROFILE (If You Use Named Profiles)

If you have multiple profiles in ~/.aws/config, make sure the correct one is used:

export AWS_PROFILE=default

Or set it directly in code using boto3.Session:

import boto3

session = boto3.Session(profile_name='default')
s3 = session.client('s3')

Summary

Fix MethodWhen to Use
Pass region_name to boto3.client()In scripts, apps, or Lambda
Run aws configureFor CLI-based workflows
Set env var AWS_DEFAULT_REGIONWhen working in Docker/CI/CD
Use boto3.Session(profile_name=...)With multiple profiles

Further Reading