如何验证用于清理未完成分段上传的 Amazon S3 生命周期配置规则?
我设置了一条 Amazon Simple Storage Service (Amazon S3) 生命周期配置规则,用于清理未完成的分段上传。我想确认该规则是否有效。
解决方法
注意: 当您使用 AWS 命令行界面 (AWS CLI) 设置规则时,该规则被称为 AbortIncompleteMultipartUpload。
您可以通过以下方式之一验证生命周期配置规则。
查询服务器访问日志
要查询服务器访问日志,您必须在生命周期规则设置运行之前,在存储桶上启用服务器访问日志记录。日志可用后,您可以通过查看日志来验证该规则是否已清理未完成的分段上传。有关服务器访问日志所报告操作的详细信息,请参阅生命周期和日志记录。
通过使用 AWS CLI 上传分段上传的部分分段来测试规则
如果您未启用服务器访问日志记录,则可以通过运行未完成的分段上传来测试该规则:
**注意:**以下示例使用 AWS CLI 执行分段上传。要使用 AWS SDK 执行分段上传,请参阅使用分段上传来上传和复制对象。
-
将要上传的文件分成多个分段。例如,如果您使用的是 Linux 操作系统,则可以运行 split 命令,类似于以下:
split /path/to/filetoupload -
使用 AWS CLI 运行 create-multipart-upload 命令以启动分段上传,类似于以下:
aws s3api create-multipart-upload --bucket awsexamplebucket --key large_test_file -
该命令会返回包含 UploadID 的输出。复制 UploadID 值作为后续步骤的参考。命令输出类似于以下内容:
{ "AbortDate": "Mon, 03 Jun 2019 00:00:00 GMT", "AbortRuleId": "multipartcleanup", "Bucket": "awsexamplebucket", "Key": "objectname", "UploadId": "exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk" } -
运行 upload-part 命令上传文件的第一个分段,类似于以下。将所有值替换为您的存储桶、文件和分段上传的值:
aws s3api upload-part --bucket awsexamplebucket --key large_test_file --part-number 1 --body large_test_file.001 --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk -
该命令返回的输出中会包含您上传的文件分段的 ETag 值。复制 ETag 值作为后续步骤的参考。命令输出类似于以下内容:
-
对文件的部分分段重复步骤 3 和 4。在此测试中,请勿上传所有分段以完成文件上传。
{ "ETag": "\"example8be9a0268ebfb8b115d4c1fd3\"" }**注意:**请务必在上传每个新分段时递增分段编号。
-
在此测试中,请勿完成或中止分段上传操作。相反,请通过运行 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" } -
通过运行 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" } } ] } -
设置生命周期配置规则时,您已指定在分段上传开始后多少天执行清理操作。请等待您为该规则设置的天数。
-
再次运行 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."
-
再次运行 list-multipart-uploads 命令,以确认分段操作已停止。当规则停止分段操作后,该命令将不会返回任何输出。
相关信息
相关内容
AWS 官方已更新 3 个月前