2017-04-13 1 views
1

Amazon S3 버킷 또는 iOS의 AWS SDK를 구성하여 버킷에 대한 모든 업로드가 아토믹 상태가되도록 할 수 있습니까?S3에 대한 원자 업로드

업로드가 성공적으로 완료되지 않으면 부분적으로 업로드 된 파일이나 다른 새 객체가 버킷에 남아 있지 않도록 버킷 또는 SDK를 구성하고 싶습니다.

+1

여러 부분 업로드를 사용하지 않는 한 put_object()를 사용할 때 부분 업로드 (예 : 목적에 의한 종료)는 파일을 만들지 않습니다. 3GB 파일을 업로드하고 프로그램을 중간에 종료하여이를 확인하면됩니다. – mootmoot

답변

2

덧글에 언급 된 것처럼 멀티 파트 업로드를 사용하지 않는 경우에는 해당 내용을 즉시 확인해야합니다.

  1. 은 다중 업로드가 보유 영역에 저장 공간을 소비하지만, 양동이 자체가 불완전한 개체를 떠나지 않아 포기 :

    당신이 다중 업로드를 사용하는 경우, 고려해야 할 두 가지가있다. ListObjects, GET 등은 불완전한 multipart 업로드를 볼 수 없으며 기존 객체는 그대로 유지됩니다. 불완전한 멀티 파트 업로드 부분은 멀티 파트 API를 통해서만 액세스 할 수 있으므로 관련있는 의미에서 모든 개체 작성 및 덮어 쓰기 작업 (멀티 파트인지 아닌지)은 자동으로 항상 100 % 원자입니다. 에 설명 된대로 multipart upload overview

  2. 에 그에 대한 자세한 내용은 당신은 불완전한 업로드 ( 정책을 AbortIncompleteMultipartUpload) 정리 버킷 수명주기 정책을 만들 수 있습니다 lifecycle guidelines :

    아마존 S3가 버킷 수명주기 규칙을 지원하는 아마존 S3가 시작된 후 지정된 일수 인 이내에 완료되지 않은 멀티 파트 업로드를 중단하도록 지시 할 수 있습니다. 멀티 파트 업로드가 시간 내에 완료되지 않으면 ab35 작업을 수행하고 Amazon S3는 멀티 파트 업로드를 중단합니다 ( 은 멀티 파트 업로드와 관련된 부분을 삭제합니다).

    규칙을 특정 접두사 또는 전체 버킷에만 첨부 할 수 있습니다. 이는 사용 사례에 더 적절하게 들립니다. 버킷 라이프 사이클에 대한 자세한 내용은 S3 lifecycle rules docs에서 확인할 수 있습니다.

+0

이것은 거의 정확합니다. 버려진 다중 업로드는 보관 영역의 저장 공간을 사용하지만 불완전한 ** 객체 **를 버킷 자체에 남기지 않습니다. ListObjects,'GET', 등등은 불완전한 multipart 업로드를 볼 수 없으며, 기존의 객체는 방해받지 않습니다. 불완전한 멀티 파트 업로드 부분은 멀티 파트 API를 통해서만 액세스 할 수 있으므로 관련있는 의미에서 ** 모든 개체 생성 및 덮어 쓰기 작업 (멀티 파트인지 아닌지)은 자동으로 항상 100 % 원자입니다 ** ** –

+0

@ Michael-sqlbot 멋진 해명을 가져 주셔서 감사합니다. 나는 그것이 anser (또는 새로운 대답)의 일부가 될 가치가 있다고 생각한다. 이 정보를 포함 할 대답을 늘리시겠습니까? 덕분에 – Viccari

+0

. 나는 전혀 신경 쓰지 않는다. –