불완전한 멀티파트 업로드 정리를 위한 Amazon S3 수명 주기 구성 규칙을 확인하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 10월 17일

불완전한 멀티파트 업로드를 정리하기 위해 Amazon Simple Storage Service(Amazon S3) 수명 주기 구성 규칙을 설정했습니다. 규칙이 작동하는지 확인하려면 어떻게 해야 합니까?

참고: AWS 명령줄 인터페이스(AWS CLI)를 사용하여 규칙을 설정할 때 이 규칙을 AbortIncompleteMultipartUpload라고 합니다.  

간략한 설명

다음 방법 중 하나로 수명 주기 구성 규칙을 확인할 수 있습니다.

  • 서버 액세스 로그를 쿼리합니다.
  • AWS CLI를 사용하여 멀티파트 업로드의 일부를 업로드하여 규칙을 테스트합니다.

해결 방법

서버 액세스 로그 쿼리

서버 액세스 로그를 쿼리하려면 수명 주기 규칙을 실행하도록 설정하기 전에 버킷에서 서버 액세스 로깅을 활성화해야 합니다. 로그를 사용할 수 있게 되면 로그를 검토하여 규칙이 불완전한 멀티파트 업로드를 정리했는지 확인할 수 있습니다. 서버 액세스 로그가 보고하는 작업에 대한 자세한 내용은 수명 주기 및 로깅을 참조하십시오.

AWS CLI를 사용하여 멀티파트 업로드의 일부를 업로드하여 규칙 테스트

서버 액세스 로깅을 활성화하지 않은 경우 불완전한 멀티파트 업로드를 실행하여 규칙을 테스트할 수 있습니다.

참고: 다음 예제에서는 AWS CLI를 사용하여 멀티파트 업로드를 수행합니다. AWS SDK를 사용하여 멀티파트 업로드를 수행하려면 멀티파트 업로드 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

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 값을 복사합니다. 이 명령 출력은 다음과 유사합니다.

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

6.    파일의 일부 부분에 대해 3단계와 4단계를 반복합니다. 이 테스트의 경우 파일을 완료하기 위해 일부 파트를 업로드하지 마십시오.

참고: 업로드하는 새 파트가 있을 때마다 파트 번호를 늘려야 합니다.

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

10.    명령은 다음과 같이 진행 중인 멀티파트 업로드 목록을 반환합니다.

{
    "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"
            }
        }
    ]
}

11.    수명 주기 구성 규칙을 설정할 때 멀티파트 업로드가 시작되고 며칠이 지나면 정리가 발생할지 지정했습니다. 규칙에 대해 설정한 일수를 기다립니다.

12.    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."

13.    list-multipart-uploads 명령을 다시 실행하여 멀티파트 작업이 중단되었는지 확인합니다. 규칙이 멀티파트 작업을 중단한 후에는 명령이 출력을 반환하지 않습니다.