【问题标题】:Can't set region in AWS C++ SDK无法在 AWS C++ SDK 中设置区域
【发布时间】:2017-05-23 16:00:40
【问题描述】:

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

【问题讨论】:

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


【解决方案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

【讨论】:

    【解决方案2】:

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

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

        Aws::Client::ClientConfiguration clientConfig;
        clientConfig.region = "us-west-2";
        Aws::EC2::EC2Client ec2(clientConfig);
    

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 1970-01-01
      • 2017-11-19
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多