작업 상태 및 완료 보고서 추적 - Amazon Simple Storage Service

작업 상태 및 완료 보고서 추적

S3 배치 작업에서는 작업 상태를 보고 업데이트하고, 알림 및 로깅을 추가하고, 작업 실패를 추적하고, 완료 보고서를 생성할 수 있습니다.

작업 상태

작업을 생성하고 실행하면 작업은 일련의 상태를 거칩니다. 다음 표에서는 상태 및 상태 간의 가능한 전환에 대해 설명합니다.

상태 설명 Transitions
New 생성된 작업은 New 상태에서 시작합니다. Amazon S3가 매니페스트 객체를 처리하기 시작하면 작업이 자동으로 Preparing 상태로 이동합니다.
Preparing Amazon S3는 작업을 설정 및 실행하기 위한 매니페스트 객체 및 기타 작업 파라미터를 처리합니다. Amazon S3가 매니페스트 및 기타 파라미터 처리를 완료하면 작업이 자동으로 Ready 상태로 이동합니다. 그러면 작업은 매니페스트에 나열된 객체에 대해 지정된 작업을 실행할 준비가 된 것입니다.

예를 들어 Amazon S3 콘솔에서 작업을 생성했을 때와 같이 작업을 실행하기 전에 확인이 필요한 경우 작업이 Preparing 상태에서 Suspended 상태로 전환합니다. 작업은 사용자가 실행을 확인할 때까지 Suspended 상태로 유지됩니다.

Suspended 작업이 확인을 필요로 하지만 사용자가 아직 실행을 확인하지 않았습니다. Amazon S3 콘솔을 사용하여 생성하는 작업만 확인이 필요합니다. 콘솔을 사용해 생성한 작업은 Suspended 상태에서 바로 Preparing 상태로 들어갑니다. 사용자가 작업 실행을 확인하여 Ready 상태가 된 이후에는 작업이 절대로 Suspended 상태로 되돌아가지 않습니다. 작업 실행을 확인하면 작업 상태가 Ready로 변경됩니다.
Ready Amazon S3가 요청된 객체 작업을 시작할 준비가 되었습니다. Amazon S3가 작업을 실행하기 시작하면 작업이 작동으로 Active 상태로 이동합니다. 작업이 Ready 상태를 유지하는 시간은 이미 우선 순위가 높은 작업이 실행 중인지 여부와 이들 작업을 완료하는 데 얼마나 걸리는지에 따라 달라집니다.
Active Amazon S3가 매니페스트에 나열된 객체에 대해 요청된 작업을 실행합니다. 작업이 Active 상태일 때 Amazon S3 콘솔을 사용하거나 REST API, AWS CLI 또는 AWS SDK를 통해 DescribeJob 작업을 사용하여 진행률을 모니터링할 수 있습니다. 작업이 더 이상 객체에 대한 작업을 실행하지 않으면 Active 상태에서 다른 상태로 이동합니다. 이는 작업이 성공적으로 완료되거나 실패한 경우와 같이 자동으로 발생할 수 있습니다. 또는 작업 취소와 같이 사용자 작업의 결과로 발생할 수 있습니다. 이후 작업이 이동하는 상태는 전환 이유에 따라 다릅니다.
Pausing 작업이 다른 상태에서 Paused 상태로 전환합니다. Paused 단계가 완료되면 작업이 자동으로 Pausing 상태로 이동합니다.
Paused 작업이 실행되는 동안 더 높은 우선 순위로 새 작업을 제출하면 현재 작업이 Paused 상태가 될 수 있습니다. 작업 실행을 차단하는 더 높은 우선 순위의 작업이 완료, 실패 또는 일시 중지되면 Paused 작업이 자동으로 Active 상태로 되돌아갑니다.
Complete 작업이 매니페스트의 모든 객체에 대해 요청된 작업을 완료했습니다. 모든 객체에 대해 작업이 성공했거나 실패했을 수 있습니다. 작업이 완료 보고서를 생성하도록 구성한 경우 작업이 Complete 상태가 되는 즉시 보고서가 생성됩니다. Complete는 최종 상태입니다. 작업이 Complete 상태에 도달하면 다른 어떤 상태로도 전환하지 않습니다.
Cancelling 작업이 Cancelled 상태로 전환 중입니다. Cancelled 단계가 완료되면 작업이 자동으로 Cancelling 상태로 이동합니다.
Cancelled 사용자가 작업 취소를 요청했고 S3 배치 작업이 성공적으로 작업을 취소했습니다. 작업이 Amazon S3에 새로운 요청을 제출하지 않습니다. Cancelled는 최종 상태입니다. 작업이 Cancelled 상태에 도달하면 다른 어떤 상태로도 전환하지 않습니다.
Failing 작업이 Failed 상태로 전환 중입니다. Failed 단계가 완료되면 작업이 자동으로 Failing 상태로 이동합니다.
Failed 작업이 실패했고 더 이상 실행되지 않습니다. 작업 실패에 대한 자세한 내용은 작업 실패 추적 섹션을 참조하세요. Failed는 최종 상태입니다. 작업이 Failed 상태에 도달하면 다른 어떤 상태로도 전환하지 않습니다.

작업 상태 업데이트

다음은 AWS CLI 및 SDK for Java 예제입니다. 배치 작업의 상태를 업데이트합니다. S3 콘솔을 사용하여 배치 작업을 관리하는 방법에 대한 자세한 내용은 Amazon S3 콘솔을 사용하여 S3 배치 작업 관리 섹션을 참조하세요.

  • 이전 --no-confirmation-required 예제에서 create-job 파라미터를 지정하지 않은 경우 작업은 사용자가 그 상태를 Ready로 설정하여 확인할 때까지 보류 상태로 유지됩니다. 그러면 Amazon S3이 작업을 실행 가능하도록 만듭니다.

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \ --requested-job-status 'Ready'

  • 작업 상태를 Cancelled로 설정하여 작업을 취소합니다.

    aws s3control update-job-status \ --region us-west-2 \ --account-id 181572960644 \ --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \ --status-update-reason "No longer needed" \ --requested-job-status Cancelled

다음 예제에서는 AWS SDK for Java를 사용하여 S3 배치 작업의 상태를 업데이트합니다.

작업 상태에 대한 자세한 내용은 작업 상태 및 완료 보고서 추적 섹션을 참조하세요.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.UpdateJobStatusRequest; import static com.amazonaws.regions.Regions.US_WEST_2; public class UpdateJobStatus { public static void main(String[] args) { String accountId = "Account ID"; String jobId = "00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c"; try { AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); s3ControlClient.updateJobStatus(new UpdateJobStatusRequest() .withAccountId(accountId) .withJobId(jobId) .withRequestedJobStatus("Ready")); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

알림 및 로깅

AWS CloudTrail을 사용하여 완료 보고서를 요청할 뿐만 아니라 배치 작업 활동을 캡처, 검토 및 감사할 수 있습니다. 배치 작업은 기존 Amazon S3 API를 사용하여 태스크(task)를 수행하기 때문에 이러한 태스크 역시 직접 호출한 경우와 동일한 이벤트를 방출합니다. 따라서 이미 Amazon S3에서 사용하는 것과 동일한 알림, 로깅 및 감사 도구와 프로세스를 사용하여 작업(job) 진행률 및 모든 태스크(task)를 추적하고 기록할 수 있습니다. 자세한 내용은 다음 섹션의 예제를 참조하세요.

참고

Amazon S3 배치 작업은 작업 실행 중에 CloudTrail에서 관리 이벤트와 데이터 이벤트를 둘 다 생성합니다. 이러한 이벤트의 볼륨은 각 작업의 매니페스트에 있는 키의 수에 따라 확장됩니다. 계정에 구성한 추적 수에 따라 달라지는 요금 변경의 예가 포함된 자세한 내용은 CloudTrail 요금 페이지를 참조하세요. 필요에 따라 이벤트를 구성하고 기록하는 방법을 알아보려면 AWS CloudTrail 사용 설명서첫 번째 추적 생성을 참조하세요.

Amazon S3 이벤트에 대한 자세한 정보는 Amazon S3 이벤트 알림 섹션을 참조하세요.

작업 실패 추적

S3 배치 작업 건이 지정된 매니페스트를 읽을 수 없는 경우처럼 성공적으로 실행되지 못하게 하는 문제가 발생하면 해당 작업이 실패합니다. 작업이 실패하면 하나 이상의 실패 코드 또는 실패 이유를 생성합니다. S3 배치 작업은 작업의 세부 정보를 요청하여 볼 수 있도록 작업과 함께 실패 코드 및 이유를 저장합니다. 해당 작업에 대한 완료 보고서를 요청한 경우 실패 코드와 이유도 여기에 나타납니다.

작업이 실패한 작업(operation)을 대량으로 실행하는 것을 방지하기 위해 Amazon S3가 모든 배치 작업에 태스크(task) 실패 임계값을 부여합니다. 하나의 작업이 최소 1,000개의 태스크(task)를 실행하면 Amazon S3가 태스크(task) 실패율을 모니터링합니다. 언제든 실패율(실행된 총 작업 수 대비 실패한 작업 수의 비율)이 50%를 초과하면 작업이 실패합니다. 작업(task) 실패율 임계값이 초과되어 작업이 실패할 경우 실패의 원인을 식별할 수 있습니다. 예를 들어 지정된 버킷에 없는 일부 객체를 실수로 매니페스트에 포함했을 수 있습니다. 오류를 수정한 후에 작업을 다시 제출할 수 있습니다.

참고

S3 배치 작업은 비동기식으로 작동하며, 반드시 매니페스트에 객체가 나열된 순서대로 태스크(task)를 실행하지는 않습니다. 그러므로 매니페스트 순서를 사용하여 어떤 객체의 작업(task)이 성공했거나 실패했는지 판단할 수 없습니다. 대신, 작업 완료 보고서(요청한 경우)를 검토하거나 AWS CloudTrail 이벤트 로그를 검토하여 실패의 원인을 확인할 수 있습니다.

완료 보고서

작업을 생성할 때 완료 보고서를 요청할 수 있습니다. S3 배치 작업이 하나 이상의 태스크를 성공적으로 호출하는 한 Amazon S3가 태스크 실행이 끝나거나 실패하거나 취소된 후 완료 보고서를 생성합니다. 모든 작업 또는 실패한 작업만 포함하도록 완료 보고서를 구성할 수 있습니다.

완료 보고서에는 작업(job) 구성 및 상태, 그리고 객체 키와 버전, 상태, 오류 코드 및 오류 설명 등 각 작업(task)의 정보가 포함됩니다. 완료 보고서를 사용하면 추가 설정을 하지 않아도 통합된 형식으로 작업 결과를 손쉽게 볼 수 있습니다. 완료 보고서의 예는 예: S3 배치 작업 완료 보고서 섹션을 참조하세요.

완료 보고서를 구성하지 않은 경우에도 여전히 CloudTrail 및 Amazon CloudWatch를 사용하여 작업(job) 및 그 태스크(task)를 모니터링하고 감사할 수 있습니다. 자세한 내용은 다음 섹션을 참조하세요.