Amazon S3 オペレーションS3CrtClientでの の使用 Amazon S3 - AWS SDK for C++

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 オペレーションS3CrtClientでの の使用 Amazon S3

S3CrtClient クラスは のバージョン 1.9 で利用 AWS SDK for C++ でき、Amazon S3 との間で大きなデータファイルをアップロードおよびダウンロードするスループットが向上します。このリリースの改善点の詳細については、「v1.9 による Amazon S3 スループットの向上」を参照してください。 AWS SDK for C++

S3CrtClient は、AWS 共通ランタイム (CRT) ライブラリの上部に実装されます。

注記

不完全または部分的なアップロードに対して課金されないように、Amazon S3 バケットで AbortIncompleteMultipartUpload ライフサイクルルールを有効にすることをお勧めします。

このルールは、開始後、指定された日数内に完了しないマルチパートアップロードを中止するよう Amazon S3 に指示します。設定した時間制限を超えると、Amazon S3 はアップロードを中止して、不完全なアップロードデータを削除します。

詳細については、Amazon S3ユーザーガイド」の「バケットでのライフサイクル設定の設定」を参照してください。

前提条件

開始する前に、「 の使用開始 AWS SDK for C++」を読むことをお勧めします。

サンプルコードをダウンロードし、「」の説明に従ってソリューションを構築しますコード例の開始方法

例を実行するには、コードがリクエストを行うために使用するユーザープロファイルに適切なアクセス許可が必要です AWS ( サービスと アクション用)。詳細については、AWS 「認証情報の提供」を参照してください。

を使用したオブジェクトのアップロードとダウンロード S3CrtClient

この例では、 の使用方法を示しますS3CrtClient。この例では、バケットを作成し、オブジェクトをアップロードし、オブジェクトをダウンロードしてから、 ファイルとバケットを削除します。PUT オペレーションはマルチパートアップロードになります。GET オペレーションは、複数の「範囲」の GET リクエストに変換されます。マルチパートアップロードの詳細については、Amazon S3 ユーザーガイド」の「マルチパートアップロードを使用したオブジェクトのアップロードとコピー」を参照してください。

提供されたデータファイル はny.json、この例ではマルチパートアップロードとしてアップロードされます。これは、プログラムの正常な実行後にデバッグログを表示することで確認できます。

アップロードが失敗すると、基盤となる CRT ライブラリで AbortMultipartUploadが発行され、既にアップロードされているパートがクリーンアップされます。ただし、すべての障害を内部で処理できるわけではありません (ネットワークケーブルが接続されていないなど)。Amazon S3 バケットにライフサイクルルールを作成して、部分的にアップロードされたデータがアカウントに残らないようにすることをお勧めします (部分的にアップロードされたデータは引き続き課金されます)。ライフサイクルルールを設定する方法については、Amazon S3コストを削減するための不完全なマルチパートアップロードの検出と削除」を参照してください。

デバッグログを使用してマルチパートアップロードの詳細を調べる
  1. ではmain()、コードの更新手順を含むTODO「」コメントがあることに注意してください。

    1. の場合file_name: コードコメントに記載されているリンクから、サンプルデータファイル をダウンロードするかny.json、独自の大きなデータファイルを使用します。

    2. の場合region: 列挙型を使用して region変数をアカウントの に更新 AWS リージョン します。アカウントのリージョンを検索するには、 にログインし AWS Management Console、右上隅にあるリージョンを見つけます。

  2. 例を構築します。

  3. 変数で指定されたファイルをfile_name実行可能フォルダにコピーし、s3-crt-demo実行可能ファイルを実行します。

  4. 実行可能フォルダで、最新の .log ファイルを見つけます。

  5. ログファイルを開き、検索を選択し、 と入力しますpartNumber

  6. ログには次のようなエントリが含まれます。ここで、 partNumberuploadIdはアップロードされたファイルの各部分に指定されます。

    PUT /my-object partNumber=1&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD

    and

    PUT /my-object partNumber=2&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD

GitHub で完全な例をご覧ください。