

# 작업 상태 및 완료 보고서 추적
<a name="batch-ops-job-status"></a>

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

**Topics**
+ [작업 상태](#batch-ops-job-status-table)
+ [작업 상태 업데이트](#updating-job-statuses)
+ [알림 및 로깅](#batch-ops-notifications)
+ [작업 실패 추적](#batch-ops-job-status-failure)
+ [완료 보고서](#batch-ops-completion-report)
+ [예: AWS CloudTrail을(를) 통해 Amazon EventBridge에서 S3 배치 작업 추적](batch-ops-examples-event-bridge-cloud-trail.md)
+ [예: S3 배치 작업 완료 보고서](batch-ops-examples-reports.md)

## 작업 상태
<a name="batch-ops-job-status-table"></a>

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


| Status | 설명 | 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` 상태로 되돌아갑니다. | 
| `Completing` | 작업이 다른 상태에서 `Complete` 상태로 전환합니다. | `Complete` 단계가 완료되면 작업이 자동으로 `Completing` 상태로 이동합니다. | 
| `Complete` | 작업이 매니페스트의 모든 객체에 대해 요청된 작업을 완료했습니다. 모든 객체에 대해 작업이 성공했거나 실패했을 수 있습니다. 작업이 완료 보고서를 생성하도록 구성한 경우 작업이 `Complete` 상태가 되는 즉시 보고서가 생성됩니다. | `Complete`는 최종 상태입니다. 작업이 `Complete` 상태에 도달하면 다른 어떤 상태로도 전환하지 않습니다. | 
| `Cancelling` | 작업이 `Cancelled` 상태로 전환 중입니다. | `Cancelled` 단계가 완료되면 작업이 자동으로 `Cancelling` 상태로 이동합니다. | 
| `Cancelled` | 사용자가 작업 취소를 요청했고 S3 Batch Operations가 성공적으로 작업을 취소했습니다. 작업이 Amazon S3에 새로운 요청을 제출하지 않습니다. | `Cancelled`는 최종 상태입니다. 작업이 `Cancelled` 상태에 도달하면 다른 어떤 상태로도 전환하지 않습니다. | 
| `Failing` | 작업이 `Failed` 상태로 전환 중입니다. | `Failed` 단계가 완료되면 작업이 자동으로 `Failing` 상태로 이동합니다. | 
| `Failed` | 작업이 실패했고 더 이상 실행되지 않습니다. 작업 실패에 대한 자세한 내용은 [작업 실패 추적](#batch-ops-job-status-failure) 섹션을 참조하세요. | `Failed`는 최종 상태입니다. 작업이 `Failed` 상태에 도달하면 다른 어떤 상태로도 전환하지 않습니다. | 

## 작업 상태 업데이트
<a name="updating-job-statuses"></a>

다음 AWS CLI 및 AWS SDK for Java 예제는 Batch Operations 작업의 상태를 업데이트합니다. Amazon S3 콘솔을 사용하여 Batch Operations 작업을 관리하는 방법에 대한 자세한 내용은 [Amazon S3 콘솔을 사용하여 S3 배치 작업 관리](batch-ops-managing-jobs.md#batch-ops-manage-console) 섹션을 참조하세요.

### AWS CLI 사용
<a name="batch-ops-example-cli-update-job-status"></a>

다음 예제 명령을 사용하려면 *`user input placeholders`*를 사용자의 정보로 대체하세요.
+ `create-job` 명령에 `--no-confirmation-required` 파라미터를 지정하지 않았다면 작업은 사용자가 그 상태를 `Ready`로 설정하여 확인할 때까지 보류 상태로 유지됩니다. 그러면 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
  ```

### Java용 AWS SDK 사용
<a name="batch-ops-examples-java-update-job-status"></a>

AWS SDK for Java를 사용하여 작업 상태를 업데이트하는 방법의 예는 *Amazon S3 API 참조*의 [Update the status of a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobStatus_section.html)을 참조하세요.

## 알림 및 로깅
<a name="batch-ops-notifications"></a>

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

**참고**  
Batch Operations는 작업 실행 중에 CloudTrail에서 관리 이벤트와 데이터 이벤트를 둘 다 생성합니다. 이러한 이벤트의 볼륨은 각 작업의 매니페스트에 있는 키의 수에 따라 규모가 조정됩니다. 자세한 내용은 계정에 구성한 추적 수에 따라 달라지는 요금 변경의 예제가 포함된 [CloudTrail 요금](https://aws.amazon.com/cloudtrail/pricing/) 페이지를 참조하세요. 필요에 따라 이벤트를 구성하고 기록하는 방법을 알아보려면 *AWS CloudTrail 사용 설명서*의 [첫 번째 추적 생성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-tutorial.html#tutorial-step2)을 참조하세요.

Amazon S3 이벤트에 대한 자세한 정보는 [Amazon S3 이벤트 알림](EventNotifications.md) 섹션을 참조하세요.

## 작업 실패 추적
<a name="batch-ops-job-status-failure"></a>

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

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

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

## 완료 보고서
<a name="batch-ops-completion-report"></a>

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

완료 보고서에는 작업 구성, 상태, 그리고 객체 키와 버전, 상태, 오류 코드 및 오류 설명 등 각 태스크의 정보가 포함됩니다. 완료 보고서를 사용하면 추가 설정을 하지 않아도 통합된 형식으로 작업 결과를 손쉽게 볼 수 있습니다. 완료 보고서는 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 통해 암호화됩니다. 완료 보고서의 예는 [예: S3 배치 작업 완료 보고서](batch-ops-examples-reports.md) 섹션을 참조하세요.

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

**Topics**
+ [작업 상태](#batch-ops-job-status-table)
+ [작업 상태 업데이트](#updating-job-statuses)
+ [알림 및 로깅](#batch-ops-notifications)
+ [작업 실패 추적](#batch-ops-job-status-failure)
+ [완료 보고서](#batch-ops-completion-report)
+ [예: AWS CloudTrail을(를) 통해 Amazon EventBridge에서 S3 배치 작업 추적](batch-ops-examples-event-bridge-cloud-trail.md)
+ [예: S3 배치 작업 완료 보고서](batch-ops-examples-reports.md)

# 예: AWS CloudTrail을(를) 통해 Amazon EventBridge에서 S3 배치 작업 추적
<a name="batch-ops-examples-event-bridge-cloud-trail"></a>

Amazon S3 배치 작업 활동은 AWS CloudTrail에 이벤트로 기록됩니다. Amazon EventBridge에서 사용자 정의 규칙을 생성하고 이러한 이벤트를 원하는 대상 알림 리소스(예: Amazon Simple Notification Service(Amazon SNS))로 보낼 수 있습니다.

**참고**  
Amazon EventBridge는 이벤트를 관리하는 데 선호되는 방법입니다. Amazon CloudWatch Events와 EventBridge는 기본 서비스 및 API가 동일하지만 EventBridge가 더 많은 기능을 제공합니다. CloudWatch 또는 EventBridge에서 변경한 내용은 각 콘솔에 나타납니다. 자세한 내용은 *[Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*를 참조하세요.

**Topics**
+ [CloudTrail에 기록된 S3 배치 작업 이벤트](#batch-ops-examples-cloud-trail-events)
+ [S3 배치 작업 이벤트 추적을 위한 EventBridge 규칙](#batch-ops-examples-event-bridge)

## CloudTrail에 기록된 S3 배치 작업 이벤트
<a name="batch-ops-examples-cloud-trail-events"></a>



배치 작업이 생성되면 CloudTrail에 `JobCreated` 이벤트로 기록됩니다. 작업이 실행되면 처리 중에 상태가 변경되고 다른 `JobStatusChanged` 이벤트가 CloudTrail에 기록됩니다. [CloudTrail 콘솔](https://console.aws.amazon.com/cloudtrail)에서 이러한 이벤트를 볼 수 있습니다. CloudTrail에 대한 자세한 내용은 [https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html)를 참조하세요.

**참고**  
S3 배치 작업 `status-change` 이벤트만 CloudTrail에 기록됩니다.

**Example - CloudTrail에 의해 기록된 S3 배치 작업 완료 이벤트**  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-05T18:25:30Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "f907577b-bf3d-4c53-b9ed-8a83a118a554",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "recipientAccountId": "123412341234",
    "serviceEventDetails": {
        "jobId": "d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "jobArn": "arn:aws:s3:us-west-2:181572960644:job/d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "status": "Complete",
        "jobEventId": "b268784cf0a66749f1a05bce259804f5",
        "failureCodes": [],
        "statusChangeReason": []
    }
}
```

## S3 배치 작업 이벤트 추적을 위한 EventBridge 규칙
<a name="batch-ops-examples-event-bridge"></a>

다음 예제에서는 Amazon EventBridge에서 규칙을 생성하여 AWS CloudTrail에 의해 기록된 S3 배치 작업 이벤트를 선택한 대상으로 캡처하는 방법을 보여 줍니다.

이렇게 하려면 [이벤트에 반응하는 EventBridge 규칙 생성](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)의 모든 단계에 따라 규칙을 생성합니다. 해당하는 경우 다음 S3 배치 작업 사용자 지정 이벤트 패턴 정책을 붙여넣고 원하는 대상 서비스를 선택합니다.

**S3 배치 작업 사용자 지정 이벤트 패턴 정책**

```
{
    "source": [
        "aws.s3"
    ],
    "detail-type": [
        "AWS Service Event via CloudTrail"
    ],
    "detail": {
        "eventSource": [
            "s3.amazonaws.com"
        ],
        "eventName": [
            "JobCreated",
            "JobStatusChanged"
        ]
    }
}
```

 다음 예제는 EventBridge 이벤트 규칙에서 Amazon Simple Queue Service(Amazon SQS)로 전송된 두 개의 배치 작업 이벤트입니다. 배치 작업은 처리 중에 여러 가지 상태(`New`, `Preparing`, `Active` 등)를 거치므로 각 작업에 대해 여러 메시지를 수신할 수 있습니다.

**Example - JobCreated 샘플 이벤트**  

```
{
    "version": "0",
    "id": "51dc8145-541c-5518-2349-56d7dffdf2d8",
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.s3",
    "account": "123456789012",
    "time": "2020-02-27T15:25:49Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "11112223334444",
            "invokedBy": "s3.amazonaws.com"
        },
        "eventTime": "2020-02-27T15:25:49Z",
        "eventSource": "s3.amazonaws.com",
        "eventName": "JobCreated",
        "awsRegion": "us-east-1",
        "sourceIPAddress": "s3.amazonaws.com",
        "userAgent": "s3.amazonaws.com",
        "eventID": "7c38220f-f80b-4239-8b78-2ed867b7d3fa",
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
            "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
            "status": "New",
            "jobEventId": "f177ff24f1f097b69768e327038f30ac",
            "failureCodes": [],
            "statusChangeReason": []
        }
    }
}
```

**Example - JobStatusChanged 작업 완료 이벤트**  

```
{
  "version": "0",
  "id": "c8791abf-2af8-c754-0435-fd869ce25233",
  "detail-type": "AWS Service Event via CloudTrail",
  "source": "aws.s3",
  "account": "123456789012",
  "time": "2020-02-27T15:26:42Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "eventVersion": "1.05",
    "userIdentity": {
      "accountId": "1111222233334444",
      "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-27T15:26:42Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "eventID": "0238c1f7-c2b0-440b-8dbd-1ed5e5833afb",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "serviceEventDetails": {
      "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
      "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
      "status": "Complete",
      "jobEventId": "51f5ac17dba408301d56cd1b2c8d1e9e",
      "failureCodes": [],
      "statusChangeReason": []
    }
  }
}
```

# 예: S3 배치 작업 완료 보고서
<a name="batch-ops-examples-reports"></a>

S3 배치 작업을 생성할 때 모든 작업 또는 실패한 작업에 대한 완료 보고서를 요청할 수 있습니다. 하나 이상의 작업이 성공적으로 호출되면 S3 배치 작업은 완료, 실패 또는 취소된 작업에 대한 보고서를 생성합니다.

완료 보고서에는 객체 키 이름 및 버전, 상태, 오류 코드 및 오류 설명을 포함한 각 작업에 대한 추가 정보가 수록됩니다. 실패한 각 작업의 오류 설명은 작업 생성 중 발생한 문제(예: 권한)를 진단하는 데 사용할 수 있습니다. **체크섬 계산** 작업의 경우 완료 보고서에는 모든 객체에 대한 체크섬 값이 포함됩니다.

**참고**  
완료 보고서는 항상 Amazon S3 관리형 키(SSE-S3)를 사용하여 암호화됩니다.

**Example - 상위 매니페스트 결과 파일**  
상위 `manifest.json` 파일에는 다음 예제와 같이 성공한 각 보고서의 위치와 (작업이 실패한 경우) 실패한 보고서의 위치가 포함됩니다.  

```
{
    "Format": "Report_CSV_20180820",
    "ReportCreationDate": "2019-04-05T17:48:39.725Z",
    "Results": [
        {
            "TaskExecutionStatus": "succeeded",
            "Bucket": "my-job-reports",
            "MD5Checksum": "83b1c4cbe93fc893f54053697e10fd6e",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/6217b0fab0de85c408b4be96aeaca9b195a7daa5.csv"
        },
        {
            "TaskExecutionStatus": "failed",
            "Bucket": "my-job-reports",
            "MD5Checksum": "22ee037f3515975f7719699e5c416eaa",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/b2ddad417e94331e9f37b44f1faf8c7ed5873f2e.csv"
        }
    ],
    "ReportSchema": "Bucket, Key, VersionId, TaskStatus, ErrorCode, HTTPStatusCode, ResultMessage"
}
```

**성공한 작업 보고서**

성공한 작업 보고서에는 *성공적인* 작업에 대한 다음 정보가 포함됩니다.
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**실패한 작업 보고서**

실패한 작업 보고서에는 *실패한* 모든 작업에 대한 다음 정보가 포함됩니다.
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Example - Lambda 함수 작업 보고서**  
다음 예제에서 Lambda 함수는 Amazon S3 객체를 다른 버킷에 성공적으로 복사했습니다. 반환된 Amazon S3 응답은 S3 배치 작업으로 다시 전달된 다음 최종 완료 보고서에 기록됩니다.  

```
amzn-s3-demo-bucket1,image_17775,,succeeded,200,,"{u'CopySourceVersionId': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'RequestId': '3ED5852152014362', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'x-amz-copy-source-version-id': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', 'server': 'AmazonS3', 'x-amz-request-id': '3ED5852152014362', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17763,,succeeded,200,,"{u'CopySourceVersionId': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'RequestId': '1BC9F5B1B95D7000', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'x-amz-copy-source-version-id': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', 'server': 'AmazonS3', 'x-amz-request-id': '1BC9F5B1B95D7000', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17860,,succeeded,200,,"{u'CopySourceVersionId': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 40, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'RequestId': '8D9CA56A56813DF3', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'x-amz-copy-source-version-id': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', 'server': 'AmazonS3', 'x-amz-request-id': '8D9CA56A56813DF3', 'date': 'Fri, 05 Apr 2019 17:35:40 GMT', 'content-type': 'application/xml'}}}"
```
다음 예제 보고서는 AWS Lambda 함수가 시간을 초과하여 실패 임계값을 초과한 경우를 보여줍니다. 그런 다음 `PermanentFailure`로 표시되었습니다.  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:21.155Z 2845ca0d-38d9-4c4b-abcf-379dc749c452 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15897,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.610Z 2d0a330b-de9b-425f-b511-29232fde5fe4 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_14819,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:22.362Z fcf5efde-74d4-4e6d-b37a-c7f18827f551 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15930,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.809Z 3dd5b57c-4a4a-48aa-8a35-cbf027b7957e Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17644,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:46.025Z 10a764e4-2b26-4d8c-9056-1e1072b4723f Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17398,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:44.661Z 1e306352-4c54-4eba-aee8-4d02f8c0235c Task timed out after 3.00 seconds""}"
```

**Example - 체크섬 계산 작업 보고서**  
다음 예제에서 **체크섬 계산** 작업은 업로드된 객체의 체크섬을 저장 중에 성공적으로 계산했습니다. 반환된 Amazon S3 응답은 S3 Batch Operations로 다시 전달된 다음 최종 완료 보고서에 기록됩니다.  

```
amzn-s3-demo-bucket1,s3-standard-1mb-test-object,,succeeded,200,,"{""checksum_base64"":""bS9TOQ\u003d\u003d"",""etag"":""3c3c1813042989094598e4b57ecbdc82"",""checksumAlgorithm"":""CRC32"",""checksumType"":""FULL_OBJECT"",""checksum_hex"":""6D2F5339""}"
```
다음 예제 보고서는 **체크섬 계산** 작업이 실패하여 작업 보고서가 실패할 때 발생하는 상황을 보여줍니다.  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 SSE-C encryption type is not supported for this operation", ""errorCode"": "400"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Key not found", ""errorCode"": "404"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Internal server error, please retry", ""errorCode"": "500"}"
```