I have a boto3 client :
boto3.client('kms')
But it happens on new machines, They open and close dynamically.
if endpoint is None:
if region_name is None:
# Raise a more specific error message that will give
# better guidance to the user what needs to happen.
raise NoRegionError()
Why is this happening? and why only part of the time?
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 theregion_name
parameter as in:or you can have a default region associated with your profile in your
~/.aws/config
file as in:or you can use an environment variable as in:
but you do need to tell boto3 which region to use.
For those using CloudFormation template. You can set
AWS_DEFAULT_REGION
environment variable using UserData andAWS::Region
. For example,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.Where my
~/.aws/config
file looks like this:I do this because I use different profiles for different logins to AWS, Personal and Work.
I believe, by default, boto picks the region which is set in aws cli. You can run command #aws configure and press enter (it shows what creds you have set in aws cli with region)twice to confirm your region.
In my case sensitivity mattered.
you can also set environment variables in the script itself, rather than passing region_name parameter
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
case sensitivity may matter.