Amazon S3 인벤토리 구성 - Amazon Simple Storage Service

Amazon S3 인벤토리 구성

Amazon S3 인벤토리는 사용자가 정의한 일정에 따라 객체 및 메타데이터의 플랫 파일 목록을 제공합니다. Amazon S3 동기식 List API 작업 대신 S3 인벤토리를 예약된 대안으로 사용할 수 있습니다. S3 인벤토리는 객체 및 해당 메타데이터를 나열하는 쉼표로 구분된 값(CSV), Apache Optimized Row Columnar(ORC) 또는 Apache Parquet (Parquet) 출력 파일을 제공합니다.

S3 버킷 또는 접두사를 공유하는 객체(이름이 동일한 문자열로 시작하는 객체)에 대해 일간 또는 주간 기준으로 인벤토리 목록을 생성하도록 S3 인벤토리를 구성할 수 있습니다. 자세한 내용은 Amazon S3 인벤토리 단원을 참조하십시오.

이 섹션에서는 인벤토리 원본 및 대상 버킷에 대한 세부 정보를 비롯하여 인벤토리를 구성하는 방법에 대해 설명합니다.

개요

Amazon S3 인벤토리를 사용하면 정해진 일정에 객체 목록이 S3 버킷에 생성되므로 스토리지를 용이하게 관리할 수 있습니다. 하나의 버킷에 대해 복수의 인벤토리 목록을 구성할 수 있습니다. 인벤토리 목록은 대상 버킷에 있는 CSV, ORC 또는 Parquet 파일에 게시됩니다.

인벤토리를 설정하는 가장 쉬운 방법은 Amazon S3 콘솔을 사용하는 것이지만, Amazon S3 REST API, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용할 수도 있습니다. 콘솔에서는 대상 버킷에 버킷 정책을 추가하는 절차의 첫 번째 단계를 자동으로 수행합니다.

S3 버킷의 Amazon S3 인벤토리 설정

  1. 대상 버킷의 버킷 정책을 추가합니다.

    객체를 정해진 위치에 있는 버킷에 쓸 수 있는 권한을 Amazon S3에 부여하는 버킷 정책을 대상 버킷에 생성해야 합니다. 정책에 대한 예는 S3 인벤토리 및 S3 분석 권한 부여을 참조하세요.

  2. 원본 버킷에 있는 객체를 열거하여 대상 버킷에 목록을 게시하도록 인벤토리를 구성합니다.

    원본 버킷에 대한 인벤토리 목록을 구성할 때 목록을 저장하고자 하는 대상 버킷을 지정하고 목록을 매일 혹은 매주 생성할지 정합니다. 또한 모든 객체 버전을 목록에 포함시킬지 아니면 최신 버전만을 목록에 포함시킬지 구성하고 포함시킬 객체 메타데이터를 구성할 수 있습니다.

    S3 인벤토리 보고서 구성의 일부 객체 메타데이터 필드는 선택 사항입니다. 즉, 기본적으로 사용할 수 있지만 사용자에게 s3:PutInventoryConfiguration 권한을 부여하면 제한될 수 있습니다. s3:InventoryAccessibleOptionalFields 조건 키를 사용하여 사용자가 보고서에 이러한 선택적 메타데이터 필드를 포함할 수 있는지를 제어할 수 있습니다.

    S3 인벤토리에서 사용할 수 있는 선택적 메타데이터 필드에 대한 자세한 내용은 Amazon Simple Storage Service API 참조의 OptionalFields 섹션을 참조하세요. 인벤토리 구성의 특정 선택적 메타데이터 필드 대상 액세스 제한에 대한 자세한 정보는 S3 인벤토리 보고서 구성 생성 제어 섹션을 참조하세요.

    Amazon S3 관리형 키(SSE-S3) 또는 AWS Key Management Service(AWS KMS) 고객 관리 키(SSE-KMS)를 사용한 서버 측 암호화를 사용하여 인벤토리 목록 파일을 암호화하도록 지정할 수 있습니다.

    참고

    AWS 관리형 키(aws/s3)는 S3 인벤토리를 사용하는 SSE-KMS 암호화에 지원되지 않습니다.

    SSE-S3 및 SSE-KMS에 대한 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호 섹션을 참조하세요. SSE-KMS 암호화를 사용하려면 3단계를 참조하세요.

    • 콘솔을 사용하여 인벤토리 목록을 구성하는 방법에 대한 자세한 내용은 S3 콘솔을 사용하여 인벤토리 구성 섹션을 참조하세요.

    • Amazon S3 API를 사용하여 인벤토리 목록을 구성하려면 PutBucketInventoryConfiguration REST API 작업을 사용하거나 AWS CLI 또는 AWS SDK의 동일한 기능을 사용하면 됩니다.

  3. SSE-KMS를 사용하여 인벤토리 목록 파일을 암호화하려면 AWS KMS key 사용 권한을 Amazon S3에 부여합니다.

    Amazon S3 콘솔, Amazon S3 REST API, AWS CLI 또는 AWS SDK를 사용하여 인벤토리 목록 파일에 대한 암호화를 구성할 수 있습니다. 어느 방법을 선택하든 인벤토리 파일을 암호화하려면 Amazon S3에 고객 관리형 키 사용 권한을 부여해야 합니다. 인벤토리 파일을 암호화하는 데 사용할 고객 관리형 키에 대한 키 정책을 수정하여 Amazon S3에 권한을 부여합니다. 자세한 내용은 암호화에 고객 관리형 키를 사용하도록 Amazon S3에 권한 부여 단원을 참조하십시오.

    인벤토리 목록 파일을 저장하는 대상 버킷은 소스 버킷을 소유한 계정과 다른 AWS 계정 계정에서 소유할 수 있습니다.  Amazon S3 인벤토리의 계정 간 작업에 SSE-KMS 암호화를 사용하는 경우 S3 인벤토리를 구성할 때 정규화된 KMS 키 ARN을 사용하는 것이 좋습니다. 자세한 내용은 Amazon Simple Storage Service API 참조의 크로스 계정 작업에 SSE-KMS 암호화 사용 및 ServerSideEncryptionByDefault을 참조하세요.

대상 버킷 정책 생성

Amazon S3 콘솔을 통해 인벤토리 구성을 생성하면 Amazon S3가 대상 버킷에 Amazon S3 쓰기 권한을 부여하는 버킷 정책을 자동으로 생성합니다. 그러나 AWS CLI, AWS SDK 또는 Amazon S3 REST API를 통해 인벤토리 구성을 생성하는 경우에는 대상 버킷에 버킷 정책을 수동으로 추가해야 합니다. 자세한 내용은 S3 인벤토리 및 S3 분석 권한 부여 단원을 참조하십시오. S3 인벤토리 대상 버킷 정책은 Amazon S3가 인벤토리 보고서에 대한 데이터를 해당 버킷에 쓰도록 허용합니다.

버킷 정책을 생성하는 동안 오류가 발생하는 경우, 해결 지침이 제시됩니다. 예를 들어 다른 AWS 계정의 대상 버킷을 선택하는 바람에 해당 버킷 정책에 대한 읽기 및 쓰기 권한이 없는 경우 오류 메시지가 나타납니다.

이 경우 대상 버킷 소유자는 버킷 정책을 대상 버킷에 추가해야 합니다. Amazon S3는 대상 버킷에 대한 쓰기 권한이 없기 때문에 이 정책을 대상 버킷에 추가하지 않으면 인벤토리 보고서를 받을 수 없게 됩니다. 소스 버킷이 현재 사용자가 아닌 다른 계정의 소유물인 경우, 정책에서 소스 버킷 소유자의 올바른 계정 ID로 바꿔야 합니다.

암호화에 고객 관리형 키를 사용하도록 Amazon S3에 권한 부여

서버 측 암호화에 AWS Key Management Service(AWS KMS) 고객 관리형 키를 사용하도록 Amazon S3에 권한을 부여하려면 키 정책을 사용해야 합니다. 고객 관리형 키를 사용할 수 있도록 키 정책을 업데이트하려면 아래 절차를 따르세요.

고객 관리형 키를 사용하여 Amazon S3에 암호화 권한을 부여하는 방법
  1. 고객 관리형 키를 소유한 AWS 계정을 사용하여 AWS Management Console에 로그인합니다.

  2. AWS KMS 콘솔(https://console.aws.amazon.com/kms)을 엽니다.

  3. AWS 리전을 변경하려면 페이지의 오른쪽 상단 모서리에 있는 리전 선택기를 사용합니다.

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

  5. 고객 관리형 키에서 인벤토리 파일을 암호화하는 데 사용할 고객 관리형 키를 선택합니다.

  6. 키 정책(Key policy) 섹션에서 정책 보기로 전환(Switch to policy view)을 선택합니다.

  7. 키 정책을 업데이트하려면 편집(Edit)을 선택합니다.

  8. 키 정책 편집 페이지에서 기존 키 정책에 다음 줄을 추가합니다. source-account-id 및 DOC-EXAMPLE-SOURCE-BUCKET에 사용 사례에 적합한 값을 입력합니다.

    { "Sid": "Allow Amazon S3 use of the customer managed 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:::DOC-EXAMPLE-SOURCE-BUCKET" } } }
  9. Save changes(변경 사항 저장)를 선택합니다.

고객 관리형 키 생성 및 키 정책 사용에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드의 다음 링크를 참조하세요.

S3 콘솔을 사용하여 인벤토리 구성

다음 지침에 따라 S3 콘솔을 사용하여 인벤토리를 구성합니다.

참고

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

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 버킷(Buckets)을 선택합니다. 버킷 목록에서 Amazon S3 인벤토리를 구성할 버킷의 이름을 선택합니다.

  3. [Management] 탭을 선택한 후

  4. 인벤토리 구성(Inventory configurations)에서 인벤토리 구성 생성(Create inventory configuration)을 선택합니다.

  5. 인벤토리 구성 이름에 이름을 입력합니다.

  6. 인벤토리 범위에서는 다음을 수행합니다.

    • 선택적 접두사를 입력합니다.

    • 현재 버전만 또는 모든 버전 중에서 포함할 객체 버전을 선택합니다.

  7. [보고서 세부 정보(Report details)]에서 보고서를 저장할 AWS 계정의 위치를 [이 계정(This account)] 또는 [다른 계정(A different account)]으로 선택합니다.

  8. 대상에서 인벤토리 보고서를 저장할 버킷을 선택합니다.

    대상 버킷은 인벤토리를 설정할 버킷과 같은 AWS 리전에 있어야 합니다. 대상 버킷은 다른 AWS 계정에 있을 수 있습니다. 대상 버킷을 지정할 때 선택적 접두사를 포함하여 인벤토리 보고서를 함께 그룹화할 수도 있습니다.

    대상 버킷 필드 아래에 대상 버킷 정책에 추가되어 Amazon S3가 해당 버킷에 데이터를 배치할 수 있도록 허용하는 대상 버킷 권한 문이 표시됩니다. 자세한 내용은 대상 버킷 정책 생성 단원을 참조하십시오.

  9. 빈도에서 보고서 생성 빈도를 매일 또는 매주를 선택합니다.

  10. 출력 형식에서 다음 보고서 형식 중 하나를 선택합니다.

    • CSV - 이 인벤토리 보고서를 S3 배치 작업과 함께 사용하거나 Microsoft Excel과 같은 다른 도구에서 이 보고서를 분석하려는 경우 CSV를 선택합니다.

    • Apache ORC

    • Apache Parquet

  11. 상태에서 활성화 또는 비활성화를 선택합니다.

  12. 서버 측 암호화를 구성하려면 인벤토리 보고서 암호화에서 다음 단계를 따르세요.

    1. 서버 측 암호화에서 암호화를 지정하지 마십시오 또는 암호화 키 지정을 선택하여 데이터를 암호화합니다.

      • Amazon S3에 객체를 저장할 때 객체의 기본 서버 측 암호화에 대한 버킷 설정을 유지하려면 암호화 키를 지정하지 마십시오를 선택합니다. 버킷 대상에서 S3 버킷 키가 사용되는 한 복사 작업은 대상 버킷에 S3 버킷 키를 적용합니다.

        참고

        지정된 대상의 버킷 정책에서 Amazon S3에 저장하기 전에 객체를 암호화하도록 요구하는 경우 암호화 키 지정을 선택해야 합니다. 지정하지 않으면 대상에 대한 객체 복사가 실패합니다.

      • Amazon S3에 저장하기 전에 객체를 암호화하려면 암호화 키 지정을 선택합니다.

    2. 암호화 키 지정을 선택한 경우, 암호화 유형에서 Amazon S3 관리형 키(SSE-S3) 또는 AWS Key Management Service 키(SSE-KMS) 중 하나를 선택해야 합니다.

      SSE-S3는 가장 강력한 블록 암호 중 하나인 256비트 Advanced Encryption Standard(AES-256)을 사용하여 각 객체를 암호화합니다. SSE-KMS는 키에 대한 더 많은 제어 기능을 제공합니다. SSE-S3에 대한 자세한 내용은 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) 사용 섹션을 참조하세요. SSE-KMS에 대한 자세한 내용은 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) 사용 단원을 참조하십시오.

      참고

      SSE-KMS를 사용하여 인벤토리 목록 파일을 암호화하려면 고객 관리형 키를 사용하는 권한을 Amazon S3에 부여해야 합니다. 자세한 내용은 Amazon S3에 KMS 키를 사용하여 암호화할 수 있는 권한 부여를 참조하세요.

    3. AWS Key Management Service 키(SSE-KMS)를 선택한 경우, AWS KMS key에서 다음 옵션 중 하나를 통해 AWS KMS 키를 지정할 수 있습니다.

      참고

      인벤토리 목록 파일을 저장하는 대상 버킷을 다른 AWS 계정에서 소유한 경우 정규화된 KMS 키 ARN을 사용하여 KMS 키를 지정하세요.

      • 사용 가능한 KMS 키 목록에서 선택하려면 AWS KMS 키 중에서 선택을 선택한 다음, 사용 가능한 키 중 대칭 암호화 KMS 키를 선택하세요. KMS 키가 버킷과 같은 리전에 있어야 합니다.

        참고

        AWS 관리형 키(aws/s3)와 고객 관리형 키가 모두 목록에 표시됩니다. 그러나 AWS 관리형 키(aws/s3)는 S3 인벤토리를 사용하는 SSE-KMS 암호화에 지원되지 않습니다.

      • KMS 키 ARN을 입력하려면 AWS KMS 키 ARN 입력을 선택하고 나타나는 필드에 KMS 키 ARN을 입력합니다.

      • AWS KMS 콘솔에서 고객 관리형 키를 생성하려면 KMS 키 생성을 선택합니다.

  13. 추가 메타데이터 필드에 대해 다음 중 하나 이상을 선택하여 인벤토리 보고서에 추가합니다.

    • 크기 - 객체 크기(바이트)를 나타내며, 불완전한 멀티파트 업로드, 객체 메타데이터 및 삭제 마커의 크기는 포함되지 않습니다.

    • 마지막 수정 날짜(Last modified date) - 객체 생성일 또는 최종 수정일 중 최근 날짜

    • 멀티파트 업로드(Multipart upload) - 객체가 멀티파트 업로드로 업로드되도록 지정합니다. 자세한 내용은 멀티파트 업로드를 사용한 객체 업로드 및 복사 섹션을 참조하세요.

    • 복제 상태(Replication status) - 객체의 복제 상태입니다. 자세한 내용은 복제 상태 정보 가져오기 단원을 참조하십시오.

    • 암호화 상태 - 객체를 암호화하는 데 사용된 서버 측 암호화 유형입니다. 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시오.

    • 버킷 키 상태 — AWS KMS에 의해 생성된 버킷 레벨 키가 객체에 적용되는지 여부를 나타냅니다. 자세한 내용은 Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감 단원을 참조하십시오.

    • 객체 액세스 제어 목록 -  이 객체에 대한 액세스 권한이 부여된 AWS 계정 또는 그룹과 부여된 액세스 유형을 정의하는 각 객체에 대한 액세스 제어 목록(ACL)입니다. 이 필드에 대한 자세한 내용은 객체 ACL 필드 작업 단원을 참조하세요. ACL에 대한 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.

    • 객체 소유자 - 객체 소유자입니다.

    • 스토리지 클래스 - 객체 저장에 사용되는 스토리지 클래스입니다.

    • Intelligent-Tiering 액세스 티어 – 객체가 S3 Intelligent-Tiering 스토리지 클래스에 저장된 경우 객체의 액세스 계층(Frequent Access 또는 Infrequent Access)을 나타냅니다. 자세한 내용은 변경되는 또는 알 수 없는 액세스 패턴으로 데이터를 자동으로 최적화하는 스토리지 클래스 단원을 참조하십시오.

    • ETag - 엔터티 태그(ETag)는 객체의 해시입니다. ETag는 객체의 콘텐츠에 대한 변경 사항만 반영하고 메타데이터에 대한 변경을 반영하지 않습니다. ETag는 객체 데이터의 MD5 다이제스트일 수도 아닐 수도 있습니다. 다이제스트인지 여부는 객체 생성 방식 및 암호화 방식에 좌우됩니다. 자세한 내용은 Amazon Simple Storage Service API 참조에서 Object를 참조하십시오.

    • 체크섬 알고리즘 – 객체의 체크섬을 생성하는 데 사용된 알고리즘을 나타냅니다.

    • 모든 객체 잠금 구성 - 다음 설정을 포함한 객체의 객체 잠금 상태입니다.

      • 객체 잠금: 보관 모드 - 객체에 적용된 보호 수준(거버넌스 또는 규정 준수)입니다.

      • 객체 잠금: 다음 날짜까지 보존 – 잠긴 객체를 삭제할 수 없는 기한입니다.

      • 객체 잠금: 법적 보존 상태 - 잠긴 객체의 법적 보존 상태입니다.

      S3 객체 잠금에 대한 자세한 내용은 S3 객체 잠금 작동 방식 단원을 참조하세요.

    인벤토리 보고서의 내용에 대한 자세한 내용은 Amazon S3 인벤토리 목록 단원을 참조하세요.

    인벤토리 구성의 특정 선택적 메타데이터 필드 대상 액세스 제한에 대한 자세한 정보는 S3 인벤토리 보고서 구성 생성 제어 섹션을 참조하세요.

  14. 생성(Create)을 선택합니다.

인벤토리 목록이 게시되면 Amazon S3 Select로 인벤토리 목록 파일을 쿼리할 수 있습니다. Amazon S3 Select를 사용하여 인벤토리 목록을 찾고 인벤토리 목록 파일을 쿼리하는 방법에 대한 자세한 내용은 인벤토리 목록 찾기를 참조하세요.

REST API를 사용한 S3 인벤토리 작업

다음은 Amazon S3 인벤토리 작업에 사용할 수 있는 REST 작업입니다.