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