Amazon Web Services offers several services which are region specific. When encountering an error, the first thing you should do is validate that you are operating in the correct region(s). This was an issue I ran into recently when using CloudFormation.
I recently authored an AWS CloudFormation Template to create a single AMI. I opted to request a parameter for the KeyName instead of hard coding it into the script. The JSON file didn't present any syntax errors, however, the script rolled back every time. I dug a little deeper into the errors to discover an issue with the Key Parameter.
I then examined the "Parameter" value and found that it was blank,
The reason why this failed was due to my working in the wrong AWS region. My keys were in the US East Virginia region, but I was set to US East Ohio.
I deleted the stack, changed the region to US East N. Virginia then ran the script again which completed successfully this time.
It's important to realize that context is key to almost any problem. I spent quite a bit of time writing and editing a script that worked exactly as it should, but was broken because it was being run in the wrong region. Amazon publishes a list of service Regional availability here (https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).
Amazon documents the region specific nature of keys in the "AWS Key Management Service FAQs" document. That document is located here (https://aws.amazon.com/kms/faqs/). Amazon states
What geographic region are my keys stored in?
"Keys are only stored and used in the region in which they are created. They cannot be transferred to another region. For example; keys created in the EU-Central (Frankfurt) region are only stored and used within the EU-Central (Frankfurt) region."