S3 Express One Zone でのバッチオペレーションの使用 - Amazon Simple Storage Service

S3 Express One Zone でのバッチオペレーションの使用

Amazon S3 バッチオペレーションを使用して、S3 バケットに保存されているオブジェクトに対してオペレーションを実行できます。S3 バッチオペレーションの詳細については、「Amazon S3 オブジェクトに対する大規模なバッチオペレーションの実行」を参照してください。

次のトピックでは、ディレクトリバケットで S3 Express One Zone ストレージクラスに保存されているオブジェクトに保存されているオブジェクトに対するバッチオペレーションの実行について説明します。

ディレクトリバケットでのバッチオペレーションの使用

ディレクトリバケットに保存されているオブジェクトに対して Copy オペレーションと Invoke AWS Lambda 関数 オペレーションを実行できます。Copy を使用すると、(1 つのディレクトリバケットから別のディレクトリバケットへ、など) 同じタイプのバケット間でオブジェクトをコピーできます。汎用バケットとディレクトリバケットの間でコピーすることもできます。Invoke AWS Lambda 関数を使用すると、Lambda 関数を使用して、定義したコードを使用してディレクトリバケット内のオブジェクトに対してアクションを実行できます。

オブジェクトのコピー

同じバケット タイプ間、またはディレクトリバケットと汎用バケット間でコピーできます。ディレクトリバケットにコピーするときは、このバケットタイプに適した Amazon リソースネーム (ARN) 形式を使用する必要があります。ディレクトリバケットの ARN 形式は arn:aws:s3express:region:account-id:bucket/bucket-base-name--x-s3 です。

S3 コンソールの Import アクションを使用して、ディレクトリバケットにデータを入力することもできます。インポートは、汎用バケットからディレクトリバケットにオブジェクトをコピーするバッチオペレーションジョブを作成するための効率的な方法です。汎用バケットからディレクトリバケットへのインポートコピージョブの場合、S3 はマニフェストを自動的に生成します。詳細については、「 ディレクトリバケットへのオブジェクトのインポート」と「マニフェストの指定」を参照してください。

Lambda 関数の呼び出し (LambdaInvoke)

バッチオペレーションを使用してディレクトリバケットで動作する Lambda 関数を呼び出すには、独自の要件があります。例えば、v2 JSON 呼び出しスキーマを使用して Lambda リクエストを構築し、ジョブを作成する際に InvocationSchemaVersion 2.0 を指定する必要があります。詳細については、「AWS Lambda 関数の呼び出し」を参照してください。

主な違い

バッチオペレーションを使用して、S3 Express One Zone ストレージクラスを使用するディレクトリバケットに保存されたオブジェクトに対して一括操作を実行する場合の主な相違点は、次の一覧のとおりです。

  • ディレクトリバケットでは、SSE-S3 および AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) がサポートされています。ディレクトリバケット (送信元または送信先) でお客様が提供するキーを使用したサーバー側の暗号化 (SSE-C) を設定する CopyObject リクエストを行うと、HTTP 400 (Bad Request) エラーの応答が返されます。

    バケットのデフォルト暗号化では、希望する暗号化設定を使用することをお勧めします。また、CreateSession リクエストまたは PUT オブジェクトリクエストでは、バケットのデフォルト暗号化を上書きしないことをお勧めします。その後、新しいオブジェクトは必要な暗号化設定で自動的に暗号化されます。ディレクトリバケットの暗号化の上書き動作、および SSE-KMS を使用してディレクトリバケット内の新しいオブジェクトコピーを暗号化する方法の詳細については、「Specifying server-side encryption with AWS KMS for new object uploads」を参照してください。

    S3 バケットキーは、バッチオペレーションの Copy オペレーションを通じて、汎用バケットからディレクトリバケット、ディレクトリバケットから汎用バケット、またはディレクトリバケット間で SSE-KMS で暗号化されたオブジェクトをコピーする場合は、サポートされません。この場合、KMS で暗号化されたオブジェクトに対してコピーリクエストが実行されるたびに、Amazon S3 は AWS KMS を呼び出します。ディレクトリバケットで SSE-KMS を使用する場合の詳細については、「ディレクトリバケットのデフォルト暗号化の設定とモニタリング」および「ディレクトリバケットでの AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用」を参照してください。

  • ディレクトリバケット内のオブジェクトにはタグを付けることができません。指定できるのは空のタグセットのみです。デフォルトでは、バッチオペレーションがタグをコピーします。タグ付きのオブジェクトを汎用バケットからディレクトリバケットにコピーすると、501 (Not Implemented) の応答が表示されます。

  • S3 Express One Zone では、アップロードまたはダウンロード中にデータを検証するために使用されるチェックサムアルゴリズムを選択するオプションが提供されます。CRC32、CRC32、SHA-1、SHA-256 などのセキュアハッシュアルゴリズム (SHA) や巡回冗長検査 (CRC) データ整合性チェックアルゴリズムのいずれかを選択できます。MD5 ベースのチェックサムは S3 Express One Zone ストレージクラスではサポートされていません。

  • デフォルトでは、すべての Amazon S3 バケットで S3 オブジェクト所有者の設定がバケット所有者の強制に指定され、アクセスコントロールリスト (ACL) は無効になります。ディレクトリバケットの場合、この設定は変更できません。オブジェクトは、汎用バケットとディレクトリバケットの間でコピーできます。ただし、ディレクトリバケット間のコピーの場合、デフォルト ACL を上書きすることはできません。

  • マニフェストの指定方法を問わず、リスト自体は汎用バケットに保存する必要があります。バッチオペレーションでは、既存のマニフェストのディレクトリバケットからのインポート (や生成されたマニフェストのディレクトリバケットへの保存) はできません。ただし、マニフェスト内に記述されたオブジェクトはディレクトリバケットに保存できます。

  • バッチオペレーションでは、S3 インベントリレポート内のロケーションとしてディレクトリバケットを指定することはできません。インベントリレポートはディレクトリバケットをサポートしていません。ListObjectsV2 API オペレーションを使用してオブジェクトを一覧表示して、ディレクトリバケット内のオブジェクトのマニフェストファイルを作成できます。その後、CSV ファイルにリストを挿入できます。

アクセス権の付与

コピージョブを実行するには、次のアクセス許可が必要です。

  • あるディレクトリバケットから別のディレクトリバケットにオブジェクトをコピーするには、s3express:CreateSession アクセス許可が必要です。

  • ディレクトリバケットから汎用バケットにオブジェクトをコピーするには、コピー先バケットにオブジェクトコピーを書き込む s3express:CreateSession アクセス許可と s3:PutObject アクセス許可が必要です。

  • 汎用バケットからディレクトリバケットにオブジェクトをコピーするには、s3express:CreateSession アクセス許可とコピーされるソースオブジェクトを読み取る s3:GetObject アクセス許可が必要です。

    詳細については、「Amazon Simple Storage Service API リファレンス」の「CopyObject」を参照してください。

  • Lambda 関数を呼び出すには、Lambda 関数に基づいてリソースにアクセス許可を付与する必要があります。必要となるアクセス許可を判断するには、該当する API アクセス許可を確認します。