Amazon S3 Inventory 보고서를 생성할 수 없는 이유는 무엇입니까?

4분 분량
0

Amazon Simple Storage Service(Amazon S3) Inventory 보고서를 구성했지만 전달되지 않고 “액세스 거부” 오류가 표시되었습니다.

간략한 설명

다음 오류 메시지가 발생합니다.

"Access denied Inventory export for 2021-02-19 failed because S3 doesn't have access to the destination bucket or KMS key. Ask the owner of the destination bucket or KMS key to grant the necessary access and then try again."

Amazon S3 Inventory 보고서를 생성하고 위의 오류 메시지가 표시되지 않으려면 요구 사항을 충족해야 합니다.

  • 소스 버킷이 Amazon S3 Inventory 보고서를 대상 버킷에 업로드하도록 허용합니다.
  • 대상 버킷과 소스 버킷을 Amazon S3 Inventory를 설정한 리전과 동일한 AWS 리전에 보관합니다.
  • Inventory 보고서 파일을 암호화하는 데 사용되는 AWS Key Management Service(AWS KMS) 키에 대한 액세스 권한을 Amazon S3에 부여합니다.

참고: Amazon S3에서 첫 번째 Inventory 보고서를 전달하는 데 최대 48시간이 걸릴 수 있습니다.

해결 방법

소스 버킷이 Amazon S3 Inventory 보고서를 대상 버킷에 업로드하도록 허용

버킷 정책에서 소스 버킷이 대상 버킷에 업로드하도록 허용하는지 확인합니다.

PutObject 작업을 포함하는 버킷 정책 예시:

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId",
    "Statement": [
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::sourcebucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}

모든 Deny 문에서 PutObject 작업에 영향을 미칠 수 있는 s3.amazonaws.com을 제외하십시오. 명시적 DenyAllow 문보다 우선합니다.

다음 버킷 정책 예시는 s3.amazonaws.com에 대한 액세스를 거부하고 지정된 IP 주소 범위에 대한 액세스만 허용합니다.

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::destinationbucket",
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}

다음은 s3.amazonaws.com 액세스를 허용하는 이전 버킷 정책의 업데이트된 버전입니다.

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Action": "s3:*",
            "Effect": "Deny",
            "Resource": [
                "arn:aws:s3:::destinationbucket",
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                },
                "ArnNotLike": {
                    "aws:SourceArn": "arn:aws:s3:::sourcebucket"
                }
            },
            "Principal": "*"
        },
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::sourcebucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            },
            "Principal": {
                "AWS": [
                    "s3.amazonaws.com"
                ]
            }
        }
    ]
}

대상 버킷이 소스 버킷과 동일한 리전에 있는지 확인합니다.

Amazon S3 콘솔을 엽니다. 버킷 목록으로 이동하고 리전 열을 확인하여 대상 버킷과 소스 버킷이 동일한 리전에 있는지 확인합니다.

소스 버킷과 대상 버킷이 서로 다른 리전에 있는 경우 새 버킷을 생성하거나 선택하십시오.

참고: 객체를 전송할 때까지 버킷에 속한 객체는 버킷을 생성한 리전에 남아 있습니다. 자세한 내용은 버킷 개요를 참조하십시오.

Inventory 보고서 파일을 암호화하는 데 사용된 AWS KMS 키에 대한 액세스 권한 부여

AWS KMS 키로 Amazon S3 버킷을 암호화한 경우에는 Amazon S3에 AWS KMS 키에 대한 액세스 권한을 부여해야 합니다.

다음 단계를 완료합니다.

  1. AWS KMS 콘솔을 엽니다.
    참고: AWS KMS 키를 소유한 AWS 계정을 사용하여 로그인합니다.

  2. 탐색 창에서 고객 관리형 키를 선택합니다.

  3. 고객 관리형 키에서 Inventory 보고서 파일을 암호화하는 데 사용할 AWS KMS 키를 선택합니다.

  4. 키 정책에서 정책 보기로 전환을 선택합니다.

  5. 편집을 선택합니다.

  6. 키 정책 편집에서 기존 키 정책에 다음 키 정책을 추가합니다.

    {
        "Sid": "Allow Amazon S3 use of the KMS key",
        "Effect": "Allow",
        "Principal": {
            "Service": "s3.amazonaws.com"
        },
        "Action": [
            "kms:GenerateDataKey"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "source-account-id"
            },
            "ArnLike": {
                "aws:SourceARN": "arn:aws:s3:::source-bucket-name"
            }
        }
    }
  7. 변경 사항 저장을 선택합니다.

참고: Amazon S3 콘솔의 Inventory 구성에서 마지막 내보내기 열을 선택합니다. 마지막 내보내기 열이 비어 있으면 Amazon S3가 Inventory 보고서를 전송하지 않았음을 의미할 수 있습니다. Amazon S3가 Inventory 보고서를 전송한 경우 대상 버킷의 지정된 경로에서 Inventory 보고서를 찾을 수 있습니다.

서버 액세스 로그 및 CloudTrail 기록 검토

서버 액세스 로그를 확인하여 버킷 정책이 변경되면서 전송이 중지되었는지 여부를 확인하십시오. 로그 형식의 예시는 Amazon S3 서버 액세스 로그 형식을 참조하십시오.

다음은 버킷 정책이 변경되었음을 보여주는 로그 항목의 예시입니다.

REST.PUT.BUCKETPOLICY

AWS CloudTrail 이벤트 기록에서 PutBucketPolicy API 작업을 검색할 수도 있습니다. PutBucketPolicy 작업이 90일보다 이전에 수행된 경우에는 Amazon S3에서 CloudTrail 로그를 쿼리해야 합니다. 자세한 내용은 AWS Docs GitHub 웹사이트에서 CloudTrail의 Amazon S3 정보를 참조하십시오.

Inventory 범위의 접두사 필터 확인

접두사 필터를 구성했는데 48시간이 지나도 Inventory 보고서가 전달되지 않는 경우 접두사 구성을 확인하십시오. 접두사 필터가 인벤토리에 포함된 버킷 내의 기존 접두사와 일치하는지 확인하십시오. 공백, 오타 및 선행 슬래시를 제거하십시오.

관련 정보

S3 버킷 및 객체에 대한 CloudTrail 이벤트 로깅 활성화

S3 Inventory, S3 분석 및 S3 Inventory 보고서에 대한 권한 관리

AWS 공식
AWS 공식업데이트됨 5달 전