AWS S3 C ++:結果が切り捨てられたときにすべてのオブジェクトを一覧表示します

彼はウマンガウミリアに到着します

次のコードを使用して、S3バケット内のすべてのキーを一覧表示します。

バケットには約15,000個のオブジェクトがあります。ただし、このコードは最初の1000個のオブジェクトを無限にループします。SetMarker()メソッドを尊重していないようです。

これを修正する方法に関するヒントはありますか?

#include <aws/s3/S3Client.h>
#include <aws/s3/model/ListObjectsRequest.h>
#include <aws/s3/model/Object.h>

int main(int argc, const char* argv[])
{
    Aws::SDKOptions options;
    Aws::InitAPI(options);
    {
        Aws::Client::ClientConfiguration config;
        config.region="ap-northeast-1";

        Aws::S3::S3Client s3_client(config);
        Aws::S3::Model::ListObjectsRequest objects_request;

        objects_request.WithBucket("MYBUCKETNAME").WithPrefix("some-prefox");

        bool isDone = false;
        bool isFailed= false;
        Aws::S3::Model::ListObjectsOutcome outcome;
        int c=0;

        while(!isDone) {
                 outcome=s3_client.ListObjects(objects_request);
                 if(!outcome.IsSuccess()) break;
                 //process
                 Aws::Vector<Aws::S3::Model::Object> object_list = outcome.GetResult().GetContents();

                 for (auto const &s3_object : object_list)
                {
                    std::cout << "* " << s3_object.GetKey() << std::endl;
                    c++;

                }
                std::cout<<"--------- Break"<<c<<"\n";
                 isDone=!outcome.GetResult().GetIsTruncated();
                 if(!isDone) {
                    objects_request.SetMarker(outcome.GetResult().GetNextMarker());

                }
            }
            std::cout << "Count "<<c<<"\n";
            //check isFailed
            if(!outcome.IsSuccess()) {
                std::cout << "ListObjects error: " <<
                outcome.GetError().GetExceptionName() << " " <<
                outcome.GetError().GetMessage() << std::endl;
            }

    }

    Aws::ShutdownAPI(options);
}
アラン・バートルズ

NextMarkerドキュメントによると

注意

この要素は、区切り文字要求パラメーターを指定した場合にのみ返されます。応答にNextMarkerが含まれておらず、切り捨てられている場合は、応答の最後のキーの値を後続の要求のマーカーとして使用して、次のオブジェクトキーのセットを取得できます。

したがって、コードは次のようになります。

if(!isDone) {
  objects_request.SetMarker(outcome.GetResult().GetContents().back().GetKey());
}

また、V1 ListObjectsメソッドは非推奨であることに注意してください。これは、少し使いやすい明示的な継続トークンを使用するListObjectsV2を使用する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AWS SDK for JavaScriptを使用してS3バケットのフォルダー内のオブジェクトを一覧表示すると、空のContents配列が返されるのに、KeyCountが1より大きいのはなぜですか?

分類Dev

aws s3 apiでdelimeterとsort_byを使用してオブジェクトを一覧表示する方法は?

分類Dev

Javaを使用してバケット内のすべてのAWS S3オブジェクトを一覧表示する方法

分類Dev

AWS SDKを使用してS3オブジェクトへの事前署名されたURLを生成するには、何か費用がかかりますか?

分類Dev

AWS S3 SDK for Java2.xでオブジェクトを一覧表示します

分類Dev

AWS S3読み取りは、新しく作成されたオブジェクトを返すことが保証されていますか?

分類Dev

429 aws-sdkを使用してs3オブジェクトの署名付きURLを生成するときにリクエストが多すぎる

分類Dev

AWS Lambdaは、ファイルのバージョン管理を使用して内部のS3バケットオブジェクトとサブディレクトリを一覧表示します

分類Dev

aws Java SDKを介してS3オブジェクトをどのように公開しますか?

分類Dev

aws s3オブジェクトを表示できませんが、ダウンロードします

分類Dev

AWS C ++ SDKを使用して、リージョン、バケット、オブジェクトキーのS3 URIを解析するにはどうすればよいですか?

分類Dev

AWS S3バケット内のオブジェクトを一覧表示します(サーバーレスを使用してデプロイされます)

分類Dev

AWS S3はいつ期限切れのオブジェクトを削除しますか?

分類Dev

AWS Lambda C#オブジェクトをS3にアップロード

分類Dev

AWS LambdaとS3:s3オブジェクトパスを画像処理関数に渡す

分類Dev

AWS LambdaはS3オブジェクトの作成によってトリガーされ、オブジェクトのコピーリクエストを発行します。これにより、無限ループが作成されます。これを回避する方法はありますか?

分類Dev

AWSがJAVAを使用してs3オブジェクトから新しいファイルを作成するとエラーが発生する

分類Dev

Python 3 Boto 3、AWS S3:オブジェクトURLを取得する

分類Dev

aws S3syncコマンドがS3のレプリケートされたオブジェクトに対して機能しない

分類Dev

aws S3syncコマンドがS3のレプリケートされたオブジェクトに対して機能しない

分類Dev

AWS CLIを使用してS3オブジェクトの場所(パブリックURL)を取得する方法はありますか?

分類Dev

オブジェクトとしてそこに保存された後、AWS S3から読み取り可能なメールを取得するにはどうすればよいですか?

分類Dev

バケット名とキーを取得するために、C#でAWSSDK.S3を使用してAWS S3パス(s3:// <バケット名> / <キー>)を解析する方法

分類Dev

aws cliを使用してs3オブジェクトの最新バージョンを取得するにはどうすればよいですか?

分類Dev

AWS S3オブジェクトのリスト

分類Dev

GolangのAWS S3のNoCredentialproviders

分類Dev

Heroku + S3 AWS + Django!=画像なし

分類Dev

引き受けロールを使用して、別のAWSアカウントから自分のアカウントS3バケットにS3オブジェクトをPUTする方法は?

分類Dev

AWS S3のFileUtil.copyMerge()

Related 関連記事

  1. 1

    AWS SDK for JavaScriptを使用してS3バケットのフォルダー内のオブジェクトを一覧表示すると、空のContents配列が返されるのに、KeyCountが1より大きいのはなぜですか?

  2. 2

    aws s3 apiでdelimeterとsort_byを使用してオブジェクトを一覧表示する方法は?

  3. 3

    Javaを使用してバケット内のすべてのAWS S3オブジェクトを一覧表示する方法

  4. 4

    AWS SDKを使用してS3オブジェクトへの事前署名されたURLを生成するには、何か費用がかかりますか?

  5. 5

    AWS S3 SDK for Java2.xでオブジェクトを一覧表示します

  6. 6

    AWS S3読み取りは、新しく作成されたオブジェクトを返すことが保証されていますか?

  7. 7

    429 aws-sdkを使用してs3オブジェクトの署名付きURLを生成するときにリクエストが多すぎる

  8. 8

    AWS Lambdaは、ファイルのバージョン管理を使用して内部のS3バケットオブジェクトとサブディレクトリを一覧表示します

  9. 9

    aws Java SDKを介してS3オブジェクトをどのように公開しますか?

  10. 10

    aws s3オブジェクトを表示できませんが、ダウンロードします

  11. 11

    AWS C ++ SDKを使用して、リージョン、バケット、オブジェクトキーのS3 URIを解析するにはどうすればよいですか?

  12. 12

    AWS S3バケット内のオブジェクトを一覧表示します(サーバーレスを使用してデプロイされます)

  13. 13

    AWS S3はいつ期限切れのオブジェクトを削除しますか?

  14. 14

    AWS Lambda C#オブジェクトをS3にアップロード

  15. 15

    AWS LambdaとS3:s3オブジェクトパスを画像処理関数に渡す

  16. 16

    AWS LambdaはS3オブジェクトの作成によってトリガーされ、オブジェクトのコピーリクエストを発行します。これにより、無限ループが作成されます。これを回避する方法はありますか?

  17. 17

    AWSがJAVAを使用してs3オブジェクトから新しいファイルを作成するとエラーが発生する

  18. 18

    Python 3 Boto 3、AWS S3:オブジェクトURLを取得する

  19. 19

    aws S3syncコマンドがS3のレプリケートされたオブジェクトに対して機能しない

  20. 20

    aws S3syncコマンドがS3のレプリケートされたオブジェクトに対して機能しない

  21. 21

    AWS CLIを使用してS3オブジェクトの場所(パブリックURL)を取得する方法はありますか?

  22. 22

    オブジェクトとしてそこに保存された後、AWS S3から読み取り可能なメールを取得するにはどうすればよいですか?

  23. 23

    バケット名とキーを取得するために、C#でAWSSDK.S3を使用してAWS S3パス(s3:// <バケット名> / <キー>)を解析する方法

  24. 24

    aws cliを使用してs3オブジェクトの最新バージョンを取得するにはどうすればよいですか?

  25. 25

    AWS S3オブジェクトのリスト

  26. 26

    GolangのAWS S3のNoCredentialproviders

  27. 27

    Heroku + S3 AWS + Django!=画像なし

  28. 28

    引き受けロールを使用して、別のAWSアカウントから自分のアカウントS3バケットにS3オブジェクトをPUTする方法は?

  29. 29

    AWS S3のFileUtil.copyMerge()

ホットタグ

アーカイブ