不完全なマルチパートアップロードをクリーンアップするための Amazon S3 ライフサイクル設定ルールを検証する方法を教えてください。

最終更新日: 2019 年 10 月 17 日

Amazon Simple Storage Service (Amazon S3) ライフサイクル設定ルールを設定して、不完全なマルチパートアップロードをクリーンアップしました。ルールが機能していることを確認するにはどうすればよいですか?

注: AWS コマンドラインインターフェイス (AWS CLI) を使用してルールを設定した場合、そのルールを AbortIncompleteMultipartUploadと呼びます。 

簡単な説明

ライフサイクル設定ルールは、次のいずれかの方法で検証できます。

  • サーバーアクセスログをクエリする。
  • AWS CLI を使用してマルチパートアップロードの一部をアップロードすることで、ルールをテストする。

解決方法

サーバーアクセスログをクエリする

サーバーアクセスログをクエリするには、ライフサイクルルールを実行するように設定する前に、バケットでサーバーアクセスログを有効にする必要があります。ログが利用可能になったら、ログを確認して、ルールが不完全なマルチパートアップロードをクリーンアップしたかどうかを検証できます。サーバーアクセスログがレポートするオペレーションの詳細については、「ライフサイクルとログ記録」をご参照ください。

AWS CLI を使用してマルチパートアップロードの一部をアップロードし、ルールをテストする

サーバーアクセスのログ記録を有効にしていない場合は、不完全なマルチパートアップロードを実行してルールをテストできます。

注: 次の例では、AWS CLI を使用してマルチパートアップロードを実行しています。AWS SDK を使用してマルチパートアップロードを実行するには、「Multipart Upload API を使用したオブジェクトのアップロード」をご参照ください。

1.    アップロードするファイルを、複数のパートに分割します。たとえば、Linux オペレーティングシステムを使用している場合には、次のような分割のコマンドを実行できます。

split /path/to/filetoupload

2.    AWS CLI を使用して create-multipart-upload コマンドを実行し、次のようなマルチパートアップロードを開始します。

aws s3api create-multipart-upload --bucket awsexamplebucket --key large_test_file

3.    コマンドが UploadID を含む出力を返します。後のステップで参照するため、UploadID 値をコピーします。コマンド出力は次のようになります。

{
    "AbortDate": "Mon, 03 Jun 2019 00:00:00 GMT",
    "AbortRuleId": "multipartcleanup",
    "Bucket": "awsexamplebucket",
    "Key": "objectname",
    "UploadId": "exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk"
}

4.    upload-part コマンドを実行して、ファイルの最初のパートをアップロードします。次に例を示します。

重要: すべての値をバケット、ファイル、マルチパートアップロードの値に置き換えてください。

aws s3api upload-part --bucket awsexamplebucket --key large_test_file --part-number 1 --body large_test_file.001 --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk

5.    コマンドがアップロードしたファイルの一部の ETag 値を含む出力を返します。後のステップで参照するため、ETag 値をコピーします。コマンド出力は次のようになります。

{
    "ETag": "\"example8be9a0268ebfb8b115d4c1fd3\""
}

6.    ファイルの一部で、ステップ 3 と 4 を繰り返します。このテストでは、すべてをアップロードしてファイルを完了ないでください。

注: アップロードする新しいパートごとに、必ずパート番号を増やしてください。

7.    このテストでは、マルチパートアップロードのオペレーションを完了または中止しないでください。代わりに、list-parts コマンドを実行してアップロードしたパートをメモします。次に例を示します。

aws s3api list-parts --bucket awsexamplebucket --key large_test_file --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk

8.    コマンドが次のようなパートのリストを返します。

{
    "Parts": [
        {
            "PartNumber": 1,
            "LastModified": "2019-06-01T18:17:39.000Z",
            "ETag": "\"example8be9a0268ebfb8b115d4c1fd3\"",
            "Size": 162641
        },
        {
            "PartNumber": 2,
            "LastModified": "2019-06-01T18:18:19.000Z",
            "ETag": "\"example246e31ab807da6f62802c1ae8\"",
            "Size": 3961
        }
    ],
    "Initiator": {
        "ID": "arn:aws:iam::111122223333:user/jane",
        "DisplayName": "jane"
    },
    "Owner": {
        "DisplayName": "bucketowner",
        "ID": "examplea2395fe1985ffabfe0c17d3522e5bc7fa1a2d048f8fc764d7709da80d"
    },
    "StorageClass": "STANDARD"
}

9.    次に、以下のようなlist-multipart-uploads を実行して、バケットで進行中のマルチパートアップロードをメモします。

aws s3api list-multipart-uploads --bucket awsexamplebucket

10.    コマンドが、次のような進行中のマルチパートアップロードのリストを返します。

{
    "Uploads": [
        {
            "UploadId": "exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk",
            "Key": "large_test_file",
            "Initiated": "2019-06-01T17:08:33.000Z",
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "bucketowner",
                "ID": "examplea2395fe1985ffabfe0c17d3522e5bc7fa1a2d048f8fc764d7709da80d"
            },
            "Initiator": {
                "ID": "arn:aws:iam::111122223333:user/jane",
                "DisplayName": "jane"
            }
        }
    ]
}

11.    ライフサイクル設定ルールを設定する際に、マルチパートアップロードの開始後にクリーンアップを実行する日数を指定しました。ルールに設定した日数を待ちます。

12.    list-parts コマンドを再度実行して、不完全なマルチパートアップロードのパートが削除されたかどうかを確認します。ルールがパートを削除すると、コマンドが次のレスポンスを返します。

「ListParts オペレーションを呼び出すときにエラーが発生しました (NoSuchUpload): 指定されたアップロードは存在しません。アップロード ID が無効か、アップロードが中止されたまたは完了した可能性があります。」

13.    list-multipart-uploads コマンドを再度実行して、マルチパートオペレーションが中止されたかどうかを確認します。ルールがマルチパートオペレーションを中止すと、コマンドは出力を返しません。