无法在AWS C ++ SDK中设置区域

时间:2017-05-23 16:00:41

标签: c++ amazon-web-services amazon-s3 aws-sdk

我正在测试AWS C ++ SDK。我已将我的区域(eu-central-1)设置为环境变量,并在〜/ .aws / config中设置,如下所示:http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html

我正在测试AWS提供的此示例代码:https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/cpp/example_code/s3/put_object.cpp

问题是我收到此错误: ExceptionName: AuthorizationHeaderMalformed Message: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-central-1'

为什么它不使用区域eu-central-1?

2 个答案:

答案 0 :(得分:1)

SDK确实使用配置文件,但它不会自动为您设置区域。默认区域为us-east-1。因为,我假设您的存储桶位于eu-central-1,您需要将ClientConfiguration上的区域设置为eu-central-1。

如果您想使用配置文件中的区域,可以将其用作帮助:https://github.com/aws/aws-sdk-cpp/blob/master/aws-cpp-sdk-core/include/aws/core/config/AWSProfileConfigLoader.h

答案 1 :(得分:1)

我遇到了同样的问题,我的awscli已经验证我的默认区域设置为“us-west-2”,但SDK仍然选择“us-east-1”作为默认区域而忽略默认区域在〜/ .aws / config文件中。

作为解决方法,我使用ClientConfiguration在EC2客户端服务调用之前设置区域,代码片段如下所示:

Dim url = "https://socialblade.com/youtube/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ/realtime"
Dim web = New HtmlWeb()
Dim doc = web.Load(url)

Dim n = doc.DocumentNode.Descendants().FirstOrDefault(Function(d) d.Id = "rawCount").InnerText

Console.WriteLine(n)