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

작업 상태 및 완료 보고서 추적 (Tracking job status and completion reports)

S3 Batch Operations로 작업 상태를 보고 갱신하고, 알림과 로깅을 추가하고, 작업 실패를 추적하고, 완료 보고서를 생성할 수 있어요. 작업이 어떤 상태를 거쳐 진행되는지, 그리고 완료 보고서로 어떻게 검증하는지 살펴볼게요.

출처: 문서

본문

S3 Batch Operations에서는 작업 상태를 보고 갱신하고, 알림과 로깅을 추가하고, 작업 실패를 추적하고, 완료 보고서를 생성할 수 있어요.

작업 상태 (Job statuses)

작업을 만들고 실행하면 작업은 일련의 상태를 거쳐 진행돼요. 다음 표는 상태와 상태 간 가능한 전환을 설명해요.

상태 설명 전환
New 작업을 만들면 New 상태로 시작해요. Amazon S3가 매니페스트 객체를 처리하기 시작하면 작업은 자동으로 Preparing 상태로 이동해요.
Preparing Amazon S3가 작업을 설정하고 실행하기 위해 매니페스트 객체와 기타 작업 매개변수를 처리하고 있어요. Amazon S3가 매니페스트와 기타 매개변수 처리를 마치면 작업은 자동으로 Ready 상태로 이동해요. 그러면 작업은 매니페스트에 있는 객체들에 대해 지정된 작업을 시작할 준비가 된 상태예요. 작업이 실행 전에 확인이 필요한 경우(예: Amazon S3 콘솔로 작업을 만들 때) 작업은 Preparing에서 Suspended로 전환돼요. 실행을 확인할 때까지 Suspended 상태로 유지되죠.
Suspended 작업이 확인을 요구하지만 아직 실행을 확인하지 않은 상태예요. 확인이 필요한 작업은 Amazon S3 콘솔로 만든 작업뿐이에요. 콘솔로 만든 작업은 Preparing 직후 Suspended 상태로 들어가요. 작업 실행을 확인하고 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로 전환되고 있어요. Pausing 단계가 끝나면 작업은 자동으로 Paused로 이동해요.
Paused 현재 작업이 실행되는 동안 더 높은 우선순위의 다른 작업을 제출하면 작업이 Paused가 될 수 있어요. Paused 작업은 작업의 실행을 막고 있는 더 높은 우선순위 작업이 완료되거나, 실패하거나, 일시 중단되면 자동으로 Active로 돌아가요.
Completing 작업이 다른 상태에서 Complete로 전환되고 있어요. Completing 단계가 끝나면 작업은 자동으로 Complete로 이동해요.
Complete 작업이 매니페스트의 모든 객체에 대해 요청된 작업을 수행했어요. 각 객체에 대해 성공했을 수도 실패했을 수도 있어요. 작업이 완료 보고서를 생성하도록 구성되어 있다면, 보고서는 작업이 Complete가 되는 즉시 사용 가능해요. Complete는 종료 상태예요. 작업이 Complete에 도달하면 다른 상태로 전환되지 않아요.
Cancelling 작업이 Cancelled 상태로 전환되고 있어요. Cancelling 단계가 끝나면 작업은 자동으로 Cancelled로 이동해요.
Cancelled 작업 취소를 요청했고 S3 Batch Operations가 작업을 성공적으로 취소했어요. 작업은 Amazon S3에 새 요청을 제출하지 않아요. Cancelled는 종료 상태예요. 작업이 Cancelled에 도달하면 다른 상태로 전환되지 않아요.
Failing 작업이 Failed 상태로 전환되고 있어요. Failing 단계가 끝나면 작업은 자동으로 Failed로 이동해요.
Failed 작업이 실패했고 더 이상 실행되지 않아요. 작업 실패에 대한 자세한 내용은 Tracking job failures 문서를 참고하세요. Failed는 종료 상태예요. 작업이 Failed에 도달하면 다른 상태로 전환되지 않아요.

작업 상태 갱신 (Updating job status)

다음 AWS CLI 예제들은 Batch Operations 작업의 상태를 갱신해요. Amazon S3 콘솔로 Batch Operations 작업을 관리하는 방법은 Using the Amazon S3 console to manage your S3 Batch Operations jobs 문서를 참고하세요.

이 예제 명령을 사용하려면 사용자 입력 플레이스홀더를 자신의 정보로 바꾸세요. create-job 명령에서 --no-confirmation-required 매개변수를 지정하지 않았다면, 상태를 Ready로 설정해 작업을 확인할 때까지 작업은 일시 중단(suspended) 상태로 유지돼요. Amazon S3는 그 후 작업이 실행될 자격을 얻어요.

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

작업 상태를 Cancelled로 설정해 작업을 취소해요.

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

AWS SDK for Java로 작업 상태를 갱신하는 예제는 Amazon S3 API Reference의 Update the status of a batch job을 참고하세요.

알림과 로깅 (Notifications and logging)

완료 보고서를 요청하는 것 외에도 AWS CloudTrail을 사용해 Batch Operations 활동을 캡처·검토·감사할 수 있어요. Batch Operations는 기존 Amazon S3 API 작업을 사용해 작업을 수행하므로, 그 작업들은 직접 호출했을 때와 같은 이벤트도 내보내요. 따라서 이미 Amazon S3에서 사용하던 것과 같은 알림·로깅·감사 도구와 프로세스로 작업과 모든 태스크의 진행 상황을 추적하고 기록할 수 있어요. 자세한 내용은 다음 절의 예제를 참고하세요.

참고 Batch Operations는 작업 실행 중에 CloudTrail에서 관리 이벤트와 데이터 이벤트를 모두 생성해요. 이 이벤트의 양은 각 작업 매니페스트의 키 수에 따라 늘어나요. 자세한 내용은 계정에 구성한 트레일 수에 따라 요금이 어떻게 바뀌는지 예시를 포함한 CloudTrail 요금 페이지를 참고하세요. 요구 사항에 맞게 이벤트를 구성하고 기록하는 방법은 AWS CloudTrail User Guide의 Create your first trail 문서를 참고하세요.

Amazon S3 이벤트에 대한 자세한 내용은 Amazon S3 Event Notifications 문서를 참고하세요.

작업 실패 추적 (Tracking job failures)

S3 Batch Operations 작업이 지정된 매니페스트를 읽지 못하는 것처럼 성공적으로 실행되지 못하게 하는 문제를 만나면 작업이 실패해요. 작업이 실패하면 하나 이상의 실패 코드나 실패 사유가 생성돼요. S3 Batch Operations는 실패 코드와 사유를 작업과 함께 저장해서, 작업의 세부 정보를 요청해 확인할 수 있어요. 작업에 완료 보고서를 요청했다면 실패 코드와 사유가 거기에도 나타나요.

많은 수의 실패 작업을 실행하지 않도록 Amazon S3는 모든 Batch Operations 작업에 태스크 실패 임계값을 부과해요. 작업이 최소 1,000개의 태스크를 실행하면 Amazon S3가 태스크 실패율을 모니터링해요. 어느 시점이든 실패율(실행된 총 태스크 중 실패한 태스크의 비율)이 50%를 초과하면 작업이 실패해요. 작업이 태스크 실패 임계값을 초과해 실패했다면 실패 원인을 파악할 수 있어요. 예를 들어 지정된 버킷에 존재하지 않는 객체를 매니페스트에 실수로 포함했을 수 있어요. 오류를 고친 후 작업을 다시 제출할 수 있어요.

참고 S3 Batch Operations는 비동기적으로 작동하고, 태스크가 매니페스트에 나열된 객체 순서대로 실행되지 않을 수도 있어요. 따라서 매니페스트 순서로 어떤 객체의 태스크가 성공했고 실패했는지 판단할 수 없어요. 대신 작업의 완료 보고서(요청했다면)를 검토하거나 AWS CloudTrail 이벤트 로그를 확인해 실패 원인을 찾는 데 도움을 받을 수 있어요.

완료 보고서 (Completion reports)

작업을 만들 때 완료 보고서를 요청할 수 있어요. S3 Batch Operations가 최소한 하나의 태스크를 성공적으로 호출하는 한, 작업이 태스크 실행을 마치거나, 실패하거나, 취소된 후 Amazon S3는 완료 보고서를 생성해요. 완료 보고서는 모든 태스크 또는 실패한 태스크만 포함하도록 구성할 수 있어요.

완료 보고서는 작업 구성, 상태, 그리고 각 태스크에 대한 정보(객체 키와 버전, 상태, 오류 코드, 오류 설명 포함)를 담아요. 완료 보고서는 추가 설정 없이 태스크 결과를 통합된 형식으로 보기 좋게 제공해요. 완료 보고서는 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)로 암호화돼요. 완료 보고서 예제는 Examples: S3 Batch Operations completion reports 문서를 참고하세요.

완료 보고서를 구성하지 않아도 CloudTrail과 Amazon CloudWatch로 작업과 태스크를 모니터링하고 감사할 수 있어요. 자세한 내용은 다음 항목을 참고하세요.