1

我正在尝试让 AWS Batch C++ API 正常工作。这是我编写的一个非常基本的演示程序,用于简单地列出可用的作业定义:

#include <iostream>
#include <aws/core/Aws.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/Outcome.h>
#include <aws/batch/BatchClient.h>
#include <aws/batch/model/DescribeJobDefinitionsRequest.h>

using namespace Aws::Batch::Model;

int main()
{
    //Initialize AWS Batch
    Aws::SDKOptions options;
    Aws::InitAPI(options);
    {
        Aws::Client::ClientConfiguration aws_config;
        aws_config.scheme = Aws::Http::Scheme::HTTP;
        aws_config.connectTimeoutMs = 30000;
        aws_config.requestTimeoutMs = 30000;
        aws_config.verifySSL = false;

        Aws::Batch::BatchClient batch_client(aws_config);

        //Get the list of job definitions
        DescribeJobDefinitionsRequest descjob_request;
        auto descjob_outcome = batch_client.DescribeJobDefinitions(descjob_request);
        if (descjob_outcome.IsSuccess() == true)
        {
            auto job_list = descjob_outcome.GetResult().GetJobDefinitions();
            Aws::Vector<JobDefinition>::iterator it;
            for (it=job_list.begin(); it != job_list.end(); ++it)
            {
                std::cout << "    " 
                          << it->GetJobDefinitionName() 
                          << ":" 
                          << it->GetRevision() 
                          << "  (" 
                          << it->GetStatus() 
                          << ")" 
                          << std::endl;
            }
        }
        else
        {
            std::cout << "Could not get JobDefinition list" << std::endl;
            std::cout << "error: "
                      << descjob_outcome.GetError().GetExceptionName() << " - "
                      << descjob_outcome.GetError().GetMessage() << std::endl;
            std::cout << "Response code: "
                      << int(descjob_outcome.GetError().GetResponseCode()) << std::endl;
        }
    }
    Aws::ShutdownAPI(options);

    return 0;
}

当我运行程序时,我得到这个错误输出:

Could not get JobDefinition list
error:  - Unable to connect to endpoint
Response code: 0

请注意,错误消息(descjob_outcome.GetError().GetMessage()) 是“无法连接到端点”,但异常名称(descjob_outcome.GetError().GetExceptionName()) 实际上是一个空字符串,介于“错误: " 和 "-" 在我的格式化输出中。此外,响应代码为 0,不在HttpResponse.h中列出的代码中。

我不认为问题出在我的 AWS 配置中,因为我从 Github 下载了 aws-doc-sdk-examples 存储库,我可以在那里编译和运行 C++ 示例(例如,s3 中的 list_buckets 程序)文件夹)。不幸的是,aws-doc-sdk-examples 不包含任何 Batch 示例代码,这是我最感兴趣使用的 API 的一部分。

我还想指出,我能够运行一个使用 AWS Batch API(通过 boto3 模块)的简单 python 程序,所以我再次认为这个问题不是我的 AWS 配置所特有的。

任何人都可以在我的演示代码中看到可以解释“无法连接到端点”错误的问题,或者可能建议一些资源来帮助我更清楚地了解连接失败的原因吗?例如,我真的不明白为什么它没有给我一个有效的异常名称或响应代码。

4

1 回答 1

1

Aws Batch 仅支持 HTTPS 端点。

于 2018-03-05T18:39:24.930 回答