如何验证用于清除未完成的分段上传的 Amazon S3 生命周期配置规则?
我设置了 Amazon Simple Storage Service(Amazon S3)生命周期配置规则来清除未完成的分段上传。如何确认规则是否有效?
简短描述
您可以通过以下每种方式验证 Amazon S3 生命周期配置规则:
- 查询服务器访问日志。
- 通过使用 AWS 命令行界面(AWS CLI)上传某些部分的分段上传来测试规则。
**注意:**如果您使用 AWS CLI 设置规则,则该规则被称为 AbortIncompleteMultipartUpload。
解决方法
查询服务器访问日志
要查询服务器访问日志,您必须在将 S3 生命周期规则设置为运行之前在存储桶上启用服务器访问日志记录。日志可用后,查看日志以验证规则是否清除了未完成的分段上传。有关更多信息,请参阅 S3 生命周期和日志记录。
通过使用 AWS CLI 上传某些部分的分段上传来测试规则
如果您没有启用服务器访问日志记录,则可以通过运行未完成的分段上传来测试规则:
**注意:**以下示例使用 AWS CLI 执行分段上传。要使用 AWS 开发工具包执行分段上传,请参阅使用分段上传 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。在此测试中,请勿上传所有部分来完成文件。
**注意:**对于您上传的每个新部分,请务必递增部分编号。
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 命令查看分段操作是否已放弃。在根据规则放弃分段操作后,该命令将不返回任何输出。
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 6 个月前