내용으로 건너뛰기

Amazon S3 Batch Operations 문제를 해결하려면 어떻게 해야 합니까?

6분 분량
0

버킷 내의 객체에 대해 Amazon Simple Storage Service(Amazon S3) Batch Operations 작업을 생성할 때 Amazon S3에서 오류가 반환됩니다. 또는 Amazon S3 Batch Operations 작업이 실패합니다.

해결 방법

작업 실패를 추적하려면 작업의 세부 정보 또는 완료 보고서를 요청하십시오. 원인을 파악하고 문제를 해결한 후 S3 Batch Operations 작업을 다시 제출하십시오.

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

매니페스트 .csv 또는 .json 파일 형식이 잘못됨

S3 Batch Operations에서는 .csv 및 .json 인벤토리 매니페스트 파일을 지원합니다. 매니페스트 파일의 형식을 올바르게 지정하지 않은 경우에는 Amazon S3에서 새 배치 작업을 생성한 후 올바른 형식을 지정해야 합니다.

매니페스트를 지정할 때 다음 작업을 수행하십시오.

  • Amazon S3 Inventory 보고서의 경우 .csv 형식의 보고서를 사용하고 인벤토리 보고서와 연결된 manifest.json 파일을 지정합니다.
  • .csv 파일의 경우 매니페스트 파일의 각 행에 버킷 이름과 객체 키를 포함합니다. 객체 버전도 포함할 수 있습니다. 매니페스트에 버전 ID를 포함하는 경우 모든 객체에 대해 ID를 지정해야 합니다.
    참고: 객체 키를 URL로 인코딩해야 합니다.
  • 객체가 버전이 지정된 버킷 내에 있는 경우 해당 객체의 버전 ID를 지정해야 합니다. 그렇지 않으면 배치 작업이 실패합니다. 또는 Amazon S3이 잘못된 버전의 객체에 배치 작업을 적용할 수 있습니다.

매니페스트 파일이 여러 버킷 이름을 지정하거나 여러 헤더 행을 포함함

매니페스트 파일에 나열된 모든 객체가 동일한 버킷에 존재하지 않는 경우 다음과 같은 오류 메시지가 표시됩니다.

"Reasons for failure: 작업당 버킷이 1개 이상일 수 없습니다. JOB_ID"

매니페스트 파일에는 하나의 버킷 이름만 지정되어 있고 헤더 행을 포함하지 않아야 합니다.

여러 헤더 행을 포함하는 매니페스트 파일의 예:

bucket,keymy-batch-bucket,object001.txt
my-batch-bucket,object002.txt
my-batch-bucket,object003.txt
my-batch-bucket,object004.txt

IAM 역할에 매니페스트 파일을 읽을 수 있는 권한이 없음

AWS Identity and Access Management(IAM) 역할에 매니페스트를 읽을 권한이 없는 경우 다음 오류 중 하나가 발생합니다.

AWS CLI의 경우 "Reason for failure Reading the manifest is forbidden: AccessDenied"

-또는-

Amazon S3 콘솔의 경우 "Warning: Unable to get the manifest object's ETag. Specify a different object to continue"

S3 Batch Operations 작업을 생성하는 IAM 역할에는 매니페스트 파일에 대한 GetObject 읽기 권한이 있어야 합니다. 객체의 메타데이터가 S3 객체 소유권과 액세스 권한이 불일치하는지 확인하십시오. 또한 매니페스트 파일을 암호화하는 지원되지 않는 AWS Key Management Service(AWS KMS) 키가 있는지 확인하십시오.

참고: S3 Batch Operations에서는 AWS KMS로 암호화된 .csv 인벤토리 보고서를 지원합니다. S3 Batch Operations는 AWS KMS로 암호화된 .csv 매니페스트 파일을 지원하지 않습니다. 자세한 내용은 Amazon S3 콘솔을 사용하여 인벤토리 구성을 참조하십시오.

배치 작업이 다른 리전에 존재함

S3 Batch Operations 복사 작업은 대상 버킷과 동일한 AWS 리전에 있어야 합니다. 예를 들어 대상 버킷이 us-west-2 리전에 있는 경우, 배치 작업을 생성할 때 us-west-2를 리전으로 선택하십시오.

S3 인벤토리 보고서의 대상 버킷이 누락됨

S3 배치 작업이 생성하는 매니페스트의 대상 버킷이 존재해야 합니다. 또한 Amazon S3 버킷 정책이 s3:PutObject 작업을 허용해야 합니다. 작업이 보고서를 다른 AWS 계정으로 전송하는 경우, 대상 버킷에서 IAM 역할이 s3:PutObject 작업을 수행할 수 있도록 허용하는지 확인하십시오.

IAM 역할의 신뢰 정책이 없음

IAM 역할의 신뢰 정책은 다른 보안 주체가 역할을 맡는 데 필요한 조건을 정의합니다. S3 Batch Operations 보안 주체가 IAM 역할을 맡을 수 있도록 하려면 해당 역할에 신뢰 정책을 연결합니다.

정책 예시:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "batchoperations.s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

참고: IAM 사용자가 아니라 IAM 역할을 지정해야 합니다.

IAM 역할에 배치 작업을 생성할 수 있는 권한이 없음

S3 Batch Operations 작업을 생성하려면 IAM 역할에 s3:CreateJob 권한을 부여하십시오. 또한 작업을 생성하는 엔터티에는 배치 작업에 대해 지정한 IAM 역할을 전달할 수 있는 iam:PassRole 권한이 있어야 합니다. 자세한 내용은 IAM JSON 정책 요소: 리소스를 참조하십시오.

IAM 역할에 배치 작업 내 작업을 수행할 수 있는 권한이 없음

배치 작업에서 특정 작업을 수행할 수 있는 올바른 권한을 IAM 역할에 부여해야 합니다.

복사 작업에 필요한 권한이 있는 IAM 정책의 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{DestinationBucket}}/*"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::{{SourceBucket}}",
                "arn:aws:s3:::{{SourceBucket}}/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::{{ManifestBucket}}/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{ReportBucket}}/*"
            ]
        }
    ]
}

AWS Organizations SCP에서 액세스 거부

Organizations를 사용하는 경우 서비스 제어 정책(SCP)에 Amazon S3에 대한 액세스를 거부하는 Deny 문이 없는지 확인하십시오. 그렇지 않으면 배치 작업을 생성할 때 액세스 거부됨 오류가 발생할 수 있습니다.

모든 S3 작업을 명시적으로 거부하는 SCP의 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Principal": "*",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

제한적 정책을 적용하려면 허용 목록에 S3 Batch Operations가 위임된 IAM 역할을 추가합니다.

제한적 정책의 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Principal": "*",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "aws:userId": [
                        "AROAEXAMPLEID:*",
                        "AIDAEXAMPLEID",
                        "111111111111"
                    ]
                }
            }
        }
    ]
}

매니페스트에 객체의 버전 ID가 누락됨

S3 Batch Operations 작업이 매니페스트에서 버전 ID 필드가 비어 있는 객체를 발견하면 다음 오류가 발생합니다.

"Error: BUCKET_NAME,prefix/file_name, 실패, 400, InvalidRequest, VersionId 누락으로 인해 작업이 실패했습니다"

작업 중 매니페스트 형식이 버전 ID를 사용하는 경우, 버전 ID 필드는 빈 문자열일 수 없습니다. 대신 버전 ID 필드가 null 문자열이어야 합니다. 이 문제를 해결하려면 비어 있는 버전 ID를 null 문자열로 변환하십시오.

참고: S3 Batch Operations는 전체 작업이 아닌 지정된 객체에 대해서만 실패합니다.

Object Lock 보존을 사용하기 때문에 Amazon S3가 작업 보고서를 전송하지 않음

거버넌스 모드 또는 규정 준수 모드에서 대상 버킷에 S3 Object Lock 보존을 구성하면 다음 오류가 발생합니다.

"Error: 실패 사유입니다. The job report could not be written to your bucket. Check your permissions."

Amazon S3는 보존 모드 구성이 있는 대상 버킷에 대해 Object Lock을 지원하지 않습니다. 보존 모드를 구성하면 버킷이 Write Once Read Many(WORM)로 보호됩니다. 이 문제를 해결하려면 Object Lock 보존이 없는 대상 버킷을 선택하십시오.

참고: 완료 보고서만 실패하고 작업은 실패하지 않습니다. 작업이 성공적으로 완료되며 모든 객체가 처리됩니다.

ETag 버전이 일치하지 않음

Amazon S3 콘솔 또는 AWS CLI의 ETag 값이 버킷의 ETag 값과 일치하지 않는 경우 다음 오류가 발생합니다.

"Error reading the manifest. 원인: ETag 불일치. 예상된 ETag: 69f52a4e9f797e987155d9c8f5880897"

S3 Batch Operations 작업에서 매니페스트를 선택하면 매니페스트 객체 키, ETag 및 선택적 버전 ID를 지정할 수 있습니다. ETag 값이 S3 버킷에 있는 매니페스트 객체의 최신 버전의 ETag와 일치하는지 확인하십시오. Amazon S3 콘솔의 배치 작업 탭에서 매니페스트 파일 속성의 매니페스트 객체 ETag를 확인합니다. AWS CLI에서 매니페스트 사양이 전달하는 ETag의 값을 확인합니다.

참고: S3 Batch Operations 작업을 기존 작업의 복제로 생성한 경우 복제된 매니페스트에서 ETag를 업데이트하십시오.

HTTP 500 및 503 오류

Amazon S3에서 요청을 처리할 수 없는 경우 500 Internal Error 상태 코드를 받게 됩니다. S3 버킷에 대한 요청 수가 많은 경우 503 Slow Down 상태 코드를 받게 됩니다. 이러한 문제를 해결하려면 Amazon S3에서 발생하는 HTTP 500 또는 503 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

참고: Amazon S3에 요청하는 애플리케이션에 재시도 로직을 구축하는 것이 좋습니다.

AWS 공식업데이트됨 3달 전