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()) は実際には「error: " と "-" が書式設定された出力に含まれています。また、応答コードは 0 であり、これはHttpResponse.hにリストされているコードには含まれていません。

Github から aws-doc-sdk-examples リポジトリをダウンロードしたので、問題は AWS 構成にあるとは思いません。そこで C++ の例をコンパイルして実行できます (たとえば、s3 の list_buckets プログラム)。フォルダ)。残念ながら、aws-doc-sdk-examples には、私が最も使用したいと考えている API の一部である Batch サンプル コードが含まれていません。

また、(boto3 モジュールを介して) AWS Batch API を使用する単純な python プログラムを実行できることにも注意したいので、この問題は私の AWS 構成に固有のものではないと思います。

「エンドポイントに接続できません」というエラーを説明できるデモ コードの問題を誰かが確認できますか、または接続に失敗する理由をより明確にするのに役立つリソースを提案できますか? たとえば、有効な例外名や応答コードが返されない理由がよくわかりません。

4

1 に答える 1