跳至内容

如何验证用于清理未完成分段上传的 Amazon S3 生命周期配置规则?

2 分钟阅读
0

我设置了一条 Amazon Simple Storage Service (Amazon S3) 生命周期配置规则,用于清理未完成的分段上传。我想确认该规则是否有效。

解决方法

注意: 当您使用 AWS 命令行界面 (AWS CLI) 设置规则时,该规则被称为 AbortIncompleteMultipartUpload。

您可以通过以下方式之一验证生命周期配置规则。

查询服务器访问日志

要查询服务器访问日志,您必须在生命周期规则设置运行之前,在存储桶上启用服务器访问日志记录。日志可用后,您可以通过查看日志来验证该规则是否已清理未完成的分段上传。有关服务器访问日志所报告操作的详细信息,请参阅生命周期和日志记录

通过使用 AWS CLI 上传分段上传的部分分段来测试规则

如果您未启用服务器访问日志记录,则可以通过运行未完成的分段上传来测试该规则:

**注意:**以下示例使用 AWS CLI 执行分段上传。要使用 AWS SDK 执行分段上传,请参阅使用分段上传来上传和复制对象

  1. 将要上传的文件分成多个分段。例如,如果您使用的是 Linux 操作系统,则可以运行 split 命令,类似于以下:

    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 值作为后续步骤的参考。命令输出类似于以下内容:

  6. 对文件的部分分段重复步骤 3 和 4。在此测试中,请勿上传所有分段以完成文件上传。

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

    **注意:**请务必在上传每个新分段时递增分段编号。

  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

    该命令会返回正在进行的分段上传列表,类似于以下:

    {
        "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"
                }
            }
        ]
    }
  10. 设置生命周期配置规则时,您已指定在分段上传开始后多少天执行清理操作。请等待您为该规则设置的天数。

  11. 再次运行 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."

  12. 再次运行 list-multipart-uploads 命令,以确认分段操作已停止。当规则停止分段操作后,该命令将不会返回任何输出。

相关信息

如何使用 AWS CLI 将大文件分段上传到 Amazon S3?

AWS 官方已更新 1 年前