我正在测试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?
答案 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)