跳至內容

如何確認 Amazon S3 生命週期組態規則,以清理不完整的分段上傳?

2 分的閱讀內容
0

我設定了 Amazon Simple Storage Service (Amazon S3) 生命週期組態規則,以清理不完整的分段上傳。我想確認該規則是否有效。

解決方法

注意: 當您使用 AWS Command Line Interface (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 官方已更新 2 年前