Recently I started working on one of my project which I dropped long ago. I was using AWS SDK in this project as this was planned to deploy on AWS.
When I stopped working on this project that time there was no AWS data center in India (Amazon has launched first data center in India which is located in Mumbai). So when I resumed my project (this time I created all my resources in Mumbai region instead of Singapore) again then I get to know that my code is no more working for AWS S3 operations. Every time I tried to do any S3 operations it shows me this error:
The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256
From AWS documentation I get to know that this error is because of API version issue. All new data centers support only latest (v4 at that time) API version and Mumbai data center was one of them. so I download and updated AWS SDK in my project along with updating region in my web config (SDK automatically picks key, secret, region etc by using specified api settings key). But again I got same error.
After searching I get to know that I have to make changes in my code also where I was creating S3 client object because those were required as per the new version of SDK.
AmazonS3Client client = new AmazonS3Client("AWSAccessKey", "AWSSecretKey");
IAmazonS3 client = new AmazonS3Client();
In older version I was supplying key and secret in constructor while creating S3 client object but in new version I used the approach to pick them from web.config (or in app.config if you are woking on desktop application) directly.
Here are the app settings I used in my in web.config which SDK picks automatically:
<add key="AWSRegion" value="ap-southeast-1" /> <add key="AWSAccessKey" value="AWSAccessKey" /> <add key="AWSSecretKey" value="AWSSecretKey" />