不完全なマルチパートのアップロードをクリーンアップするための Amazon S3 ライフサイクル設定ルールを検証するにはどうすればよいですか?
不完全なマルチパートアップロードをクリーンアップするための Amazon Simple Storage Service (Amazon S3) ライフサイクル設定ルールを設定しました。ルールが機能していることを確認するにはどうすればよいですか?
簡単な説明
Amazon S3 ライフサイクル設定ルールは、以下の各方法で検証できます。
- サーバーアクセスログをクエリする。
- AWS コマンドラインインターフェイス (AWS CLI) を使用してマルチパートアップロードの一部をアップロードすることでルールをテストする。
注意: AWS CLI を使用してルールを設定するときは、ルールの名前が AbortIncompleteMultipartUpload になります。
解決方法
サーバーアクセスログをクエリする
サーバーアクセスログをクエリするには、S3 ライフサイクルが実行される前に、バケットでサーバーアクセスログを有効にしておく必要があります。ログが利用可能になったら、ログを確認して、ルールが不完全なマルチパートアップロードをクリーンアップしたかどうかを検証します。詳細については、「S3 ライフサイクルとログ記録」を参照してください。
AWS CLI を使用してマルチパートアップロードの一部をアップロードすることでルールをテストする
サーバーアクセスログを有効にしていない場合は、不完全なマルチパートアップロードを実行することでルールをテストできます。
注意: 以下の例では、AWS CLI を使用してマルチパートアップロードを実行します。AWS SDK を使用してマルチパートアップロードを実行するには、「Multipart upload API を使用したオブジェクトのアップロード」を参照してください。
1. アップロードするファイルを複数の部分に分割します。例えば、Linux オペレーティングシステムを使用している場合は、split コマンドを実行します。
split /path/to/filetoupload
2. AWS CLI を使用して create-multipart-upload コマンドを実行し、マルチパートアップロードを開始します。
aws s3api create-multipart-upload --bucket awsexamplebucket --key large_test_file
注意: AWS CLI コマンドの実行時にエラーが発生する場合は、AWS CLI の最新バージョンを使用していることを確認してください。
コマンドから、UploadID が含まれる出力が返されます。
3. この後のステップで参照するため、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
注意: すべての値をお使いの Amazon S3 バケット、ファイル、およびマルチパートアップロードの値に置き換えてください。
コマンドが、アップロードしたファイルの部分の ETag 値が含まれる出力を返します。
5. この後のステップで参照するため、ETag 値をコピーします。コマンドの出力は以下のようになります。
{
"ETag": "\"example8be9a0268ebfb8b115d4c1fd3\""
}
6. ファイルの一部で、ステップ 3 と 4 を繰り返します。このテストでは、すべての部分をアップロードしてファイルを完成させないでください。
注意: アップロードする新しい部分ごとに PartNumber を増やしてください。
7. このテストでは、マルチパートアップロード操作を完了または中断しないでください。その代わりに、list-parts コマンドを実行してアップロードされた部分をメモします。
aws s3api list-parts --bucket awsexamplebucket --key large_test_file --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk
このコマンドはそれらの部分のリストを返します。
{
"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"
}
8. list-multipart-uploads コマンドを実行して、バケットに対して進行中のマルチパートアップロードを特定します。
aws s3api list-multipart-uploads --bucket awsexamplebucket
コマンドが、進行中のマルチパートアップロードのリストを返します。
{
"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"
}
}
]
}
9. S3 ライフサイクル設定ルールに設定した日数が経過するまで待ちます。(S3 ライフサイクル設定ルールには、マルチパートアップロードの開始後にクリーンアップが開始されるまでの日数が指定されています。)
10. list-parts コマンドを再度実行して、不完全なマルチパートアップロードの各部分が削除されているかどうかを確認します。ルールによってこれらの部分が削除されると、コマンドが以下のレスポンスを返します。
"An error occurred (NoSuchUpload) when calling the ListParts operation: The specified upload does not exist. The upload ID may be invalid, or the upload may have been aborted or completed."
11. list-multipart-uploads コマンドを再度実行して、マルチパート操作が中断されたかどうかを確認します。ルールによってマルチパート操作が中断されると、コマンドは出力を返しません。
関連情報
関連するコンテンツ
- 質問済み 1年前lg...
- 質問済み 5年前lg...
- 質問済み 6年前lg...
- AWS公式更新しました 4年前