boto3 client NoRegionError: You must specify a region error only sometimes
One way or another you must tell boto3 in which region you wish the kms
client to be created. This could be done explicitly using the region_name
parameter as in:
kms = boto3.client('kms', region_name='us-west-2')
or you can have a default region associated with your profile in your ~/.aws/config
file as in:
[default]region=us-west-2
or you can use an environment variable as in:
export AWS_DEFAULT_REGION=us-west-2
but you do need to tell boto3 which region to use.
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
In my case sensitivity mattered.
For Python 2 I have found that the boto3 library does not source the region from the ~/.aws/config
if the region is defined in a different profile to default.So you have to define it in the session creation.
session = boto3.Session( profile_name='NotDefault', region_name='ap-southeast-2')print(session.available_profiles)client = session.client( 'ec2')
Where my ~/.aws/config
file looks like this:
[default]region=ap-southeast-2[NotDefault]region=ap-southeast-2
I do this because I use different profiles for different logins to AWS, Personal and Work.