不完全なマルチパートアップロードを削除するためのバケットライフサイクル設定の設定 - Amazon Simple Storage Service

不完全なマルチパートアップロードを削除するためのバケットライフサイクル設定の設定

ベストプラクティスとして、ストレージコストを最小限に抑えるため、AbortIncompleteMultipartUpload アクションを使用してライフサイクルルールを設定することをお勧めします。マルチパートアップロードを中止する方法の詳細については、マルチパートアップロードの中止 を参照してください。

Amazon S3 は、バケットライフサイクルルールをサポートしています。このルールを使用すると、開始後指定された日数内に完了しないマルチパートアップロードを停止するよう Amazon S3 に指示できます。マルチパートアップロードが指定された時間内に完了しない場合、中止操作の対象となります。Amazon S3 は、マルチパートアップロードを中止し、マルチパートアップロードに関連付けられているすべてのパートを削除します。このルールは、既存のマルチパートアップロードと後で作成するマルチパートアップロードの両方に適用されます。

AbortIncompleteMultipartUpload アクションにルールを指定するライフサイクル設定の例を次に示します。

<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix></Prefix> <Status>Enabled</Status> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>7</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration>

この例のルールでは、Prefix エレメントの値 (オブジェクトキー名のプレフィックス) を指定しません。したがって、これはマルチパートアップロードを開始したバケット内のすべてのオブジェクトに適用されます。開始されてから 7 日以内に完了しなかったマルチパートアップロード、中止オペレーションのターゲットとなります。中止アクションは、完了したマルチパートアップロードに影響を与えません。

バケットライフサイクル設定についての詳細は、ストレージのライフサイクルの管理 を参照してください。

注記

マルチパートアップロードが、ルールで指定された日数内に完了した場合、AbortIncompleteMultipartUpload ライフサイクルアクションは適用されません (つまり Amazon S3 はアクションを実行しません)。また、このアクションはオブジェクトには適用されません。このライフサイクルアクションによって削除されるオブジェクトはありません。また、不完全なマルチパートアップロード部分を削除しても、S3 ライフサイクルの早期削除料金は発生しません。

未完了のマルチパートアップロードを自動的に管理するため、S3 コンソールを使用して、指定された日数後にバケットから未完了のマルチパートアップロードのバイトを失効させるライフサイクルポリシーを作成できます。次の手順は、7 日後に未完了のマルチパートアップロードを削除するためのライフサイクルルールを追加する方法を示しています。ライフサイクルルールの追加に関する詳細については、「バケットにライフサイクル設定を設定する」を参照してください。

7 日以上経過した未完了のマルチパートアップロードを中止するライフサイクルルールを追加するには
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Buckets (バケット)] リストで、ライフサイクルルールを作成するバケットの名前を選択します。

  3. [Management (管理)] タブを選択して、[Create lifecycle rule (ライフサイクルルールを作成する)] を選択します。

  4. [Lifecycle rule name (ライフサイクルルール名)] に、ルールの名前を入力します。

    その名前はバケット内で一意である必要があります。

  5. ライフサイクルルールのスコープを選択します。

    • 特定のプレフィックスを持つすべてのオブジェクトに対してライフサイクルルールを作成するには、[1 つまたは複数のフィルタを使用してこのルールの適用範囲を制限] を選択し、[プレフィックス] にプレフィックスを入力します。

    • このライフサイクルルールをバケット内のすべてのオブジェクトに作成するには、[This rule applies to all objects in the bucket] (このルールをバケット内のすべてのオブジェクトに適用する) を選択して、[I acknowledge that this lifecycle rule will apply to all objects in the bucket] (このライフサイクルルールがバケット内のすべてのオブジェクトに適用されることを了承します) を選択します。

  6. [Lifecycle rule actions] (ライフサイクルルールアクション) で、[Delete expired object delete markers or incomplete multipart uploads] (期限切れのオブジェクト削除マーカーまたは未完了のマルチパートアップロードを削除) を選択します。

  7. [Delete expired object delete markers or incomplete multipart uploads] (期限切れオブジェクト削除マーカーまたは未完了のマルチパートアップロードを削除する) で、[Delete incomplete multipart uploads] (未完了のマルチパートアップロードを削除) を選択します。

  8. [Number of days] (日数) フィールドに、未完了のマルチパートアップロードを削除するまでの日数 (この例では 7 日) を入力します。

  9. ルールの作成を選択します。

以下の put-bucket-lifecycle-configuration AWS Command Line Interface (AWS CLI) コマンドは、指定したバケットのライフサイクル設定を追加します。このコマンドを使用するには、user input placeholders を自分の情報に置き換えます。

aws s3api put-bucket-lifecycle-configuration  \ --bucket amzn-s3-demo-bucket1  \ --lifecycle-configuration filename-containing-lifecycle-configuration

次の例は、AWS CLI を使用して未完了のマルチパートアップロードを中止するライフサイクルルールを追加する方法を示しています。これには、7 日以上経過した未完了のマルチパートアップロードを中止する JSON ライフサイクル設定の例が含まれています。

この例の CLI コマンドを使用するには、user input placeholders を自分の情報に置き換えてください。

未完了のマルチパートアップロードを中止するためのライフサイクルルールを追加するには
  1. AWS CLI をセットアップします。手順については、「AWS CLI を使用した Amazon S3 での開発」を参照してください。

  2. 次のサンプルライフサイクル設定をファイル (例、lifecycle.json) に保存します。このサンプル設定では、空のプレフィックスが指定されているため、バケット内のすべてのオブジェクトに適用されます。設定がオブジェクトのサブセットに制限されるようにプレフィックスを指定できます。

    { "Rules": [ { "ID": "Test Rule", "Status": "Enabled", "Filter": { "Prefix": "" }, "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 } } ] }
  3. 次の CLI コマンドを実行して、バケットにこのライフサイクル設定を指定します。

    aws s3api put-bucket-lifecycle-configuration   \ --bucket amzn-s3-demo-bucket1  \ --lifecycle-configuration file://lifecycle.json
  4. ライフサイクル設定がバケットに設定されていることを確認するには、次の get-bucket-lifecycle コマンドを使用してライフサイクル設定を取得します。

    aws s3api get-bucket-lifecycle  \ --bucket amzn-s3-demo-bucket1
  5. ライフサイクル設定を削除するには、次の delete-bucket-lifecycle コマンドを使用します。

    aws s3api delete-bucket-lifecycle \ --bucket amzn-s3-demo-bucket1