인벤토리가 무엇인가요?
인벤토리는 사용자가 버킷의 객체를 관리하도록 도와주는 기능입니다. COS를 대신해 List API 동기화 작업을 주기적으로 할 수 있습니다. Cloud Object Storage(COS)는 사용자의 인벤토리 작업 설정에 따라 매일, 매주 또는 매월 사용자 버킷 내 지정된 객체 또는 동일한 객체 접두사를 가진 객체를 정기적으로 스캔하여 CSV 형식의 인벤토리 보고서를 생성하고 사용자가 지정한 버킷에 저장합니다. 또한 일회성 인벤토리 작업을 시작하여 즉시 인벤토리 보고서를 생성할 수도 있습니다. 파일에는 저장된 객체 및 해당 메타데이터가 나열되며 사용자의 구성 정보에 따라 사용자가 필요한 객체 속성 정보가 기록됩니다.
인벤토리 기능의 용도는 다음을 포함하며 이에 국한되지 않습니다.
객체 복사 및 암호화 상태를 심의하고 보고합니다.
비즈니스 작업 흐름 및 빅 데이터 작업을 간소화하고 가속화합니다.
주의:
사용자는 버킷에서 여러 개의 인벤토리 작업을 설정할 수 있으며 인벤토리 작업을 실행하는 동안 객체의 메타데이터 등의 속성 정보는 스캐닝할 수 있지만 객체 콘텐츠를 읽어 들일 수는 없습니다.
현재 금융 클라우드 리전은 지원하지 않습니다.
서브 계정으로 인벤토리 설정을 하려면 서브 계정이 루트 계정으로부터 cos:PutBucketInventory 및 cos:PutObject 작업 권한을 부여받았는지 확인하십시오.
인벤토리 매개변수
사용자가 인벤토리 작업을 설정한 후 COS는 설정에 따라 정기적으로 사용자 버킷 내에 지정된 객체를 스캐닝하며 CSV 형식 파일로 인벤토리 보고서를 출력합니다. 현재 COS 인벤토리 보고서는 다음 정보를 기록할 수 있습니다.
|
| |
| |
| |
| 나열된 객체 수량. 이 항목에 따라 요금이 부과되며, 자세한 사항은 관리 기능 요금 의 인벤토리 기능 요금 부분을 참고하십시오. |
| |
| |
| |
| 버킷의 객체 파일 이름. CSV 파일 형식을 사용할 때 객체 파일 이름은 URL 코드 형식으로 복호화한 후 사용할 수 있습니다. |
| 객체 버전 ID. 버킷에서 버전 제어를 활성화한 후 COS는 버킷에 추가된 객체에 버전 번호를 지정할 수 있습니다. 인벤토리가 객체의 현재 버전 전용인 경우 해당 필드는 포함하지 않습니다. |
| 객체가 최신 버전이라면 True로 설정합니다. 인벤토리가 객체의 현재 버전 전용인 경우 해당 필드는 포함하지 않습니다. |
| 객체가 삭제 마커라면 True로 설정합니다. 인벤토리가 객체의 현재 버전 전용인 경우 해당 필드는 포함하지 않습니다. |
| 객체 크기(바이트 Byte) |
| |
| 실물 태그는 객체의 해시 값입니다. ETag는 객체 콘텐츠의 변경 내용만 반영되며 객체 메타데이터의 변경 내용은 반영되지 않습니다. ETag는 객체 데이터 MD5의 요약일 수도 있고 아닐 수도 있습니다. 이 여부는 객체의 생성 방식과 암호화 방식으로 결정되지 않습니다. |
| 객체의 스토리지 분류. 자세한 내용은 스토리지 유형을 참고하십시오. |
| 객체가 멀티파트 업로드의 형식으로 업로드되면 True로 설정합니다. 자세한 내용은 멀티파트 업로드를 참고하십시오. |
| 객체 복제에서 소스 및 복제본 파일의 상태입니다. 소스 파일 상태: PENDING(복제 예정), COMPLETED(복제됨) 또는 FAILED(복제 실패); 복제 파일 상태: REPLICA(생성된 복제 파일로 복제됨). 자세한 내용은 복사 작용 설명을 참고하십시오. |
| |
Crc64 | 객체의 CRC64 정보. |
x-cos-meta-* | 객체의 사용자 정의 메타데이터 정보(예: x-cos-meta-testheader). 인벤토리는 해당 객체 메타데이터를 출력하며, 객체에 해당 메타데이터가 없으면 비워둡니다. |
주기적 인벤토리 및 일회성 인벤토리
인벤토리는 주기적 인벤토리와 일회성 인벤토리 두 가지 유형을 지원합니다.
주기적 인벤토리: 사용자가 인벤토리 규칙을 설정한 후 월별, 주별 또는 일별로 인벤토리 보고서를 생성할 수 있도록 지원합니다. 월별의 경우 생성할 날짜(1~28일 설정 가능)를 지정해야 하며, 주별의 경우 규칙은 설정한 요일에 따라 생성됩니다.
일회성 인벤토리: 일회성 인벤토리 작업을 시작하여 일회성 보고서를 생성합니다. 현재 COS는 일회성 인벤토리 작업에 대한 기록 조회를 지원하지 않으므로, 이후 보고서를 찾을 수 있도록 작업 시작 규칙 id, 인벤토리 저장 경로 등의 정보를 잘 보관하시기 바랍니다.
인벤토리 설정 방법
인벤토리를 설정하기 전 두 가지 개념을 알아야 합니다.
소스 버킷: 인벤토리 기능을 활성화하고 싶은 버킷.
인벤토리가 나열한 객체를 포함합니다.
인벤토리 설정을 포함합니다.
타깃 버킷: 스토리지 인벤토리의 버킷.
인벤토리 목록 파일을 포함합니다.
Manifest 파일을 포함하며 인벤토리 목록 파일 위치를 설명합니다.
다음은 인벤토리 설정 절차입니다.
소스 버킷에서 분석할 객체 정보 지정
COS에 어떤 객체 정보 분석이 필요한지 보고해야 합니다. 따라서 인벤토리 기능을 설정할 때 소스 버킷에서 아래 정보를 설정해야 합니다.
객체 버전 선택: 모든 객체 버전을 나열하거나 현재 버전만 나열합니다. 모든 객체 버전 나열을 선택했다면 COS는 동일 이름을 가진 객체의 지난 모든 버전을 인벤토리 보고서에 나열합니다. 현재 버전만 나열하도록 선택했다면 COS는 최신 버전 객체만 기록합니다.
분석이 필요한 객체 속성 설정: 객체 속성 중 어떤 정보가 인벤토리 보고서에 어떤 정보가 기록되는지 COS에 알려야 하며 현재 지원하는 객체 속성은 계정 ID, 소스 버킷 이름, 객체 파일 이름, 객체 버전 ID, 최신 버전 여부, 삭제 마커 여부, 객체 크기, 객체 최신 수정 일자, ETag, 객체 스토리지 종류, 리전 간 복제 표시, 멀티파트 업로드 파일에 속하는지의 여부가 포함됩니다.
인벤토리 보고서의 스토리지 정보 설정
COS는 어느 주파수에 따라 인벤토리 보고서를 내보낼지 공지하며 어느 버킷에 인벤토리 보고서가 저장되고 암호화 여부가 필요한지 결정합니다. 설정이 필요한 정보는 다음과 같습니다.
인벤토리 내보내기 빈도수 선택: 매일 혹은 매주. 이 설정을 통해 COS에 어떤 빈도수에 따라 인벤토리 기능을 실행할지 알릴 수 있습니다.
인벤토리 암호화 선택: 비암호화 혹은 SSE-COS. SSE-COS 암호화를 선택했다면 생성한 인벤토리 보고서에 대해 암호화를 진행합니다.
인벤토리를 내보낼 위치 설정: 버킷 저장이 필요한 인벤토리 보고서를 지정해야 합니다.
주의:
타깃 버킷은 반드시 소스 버킷과 동일 리전에 위치해야 하며 양자는 동일 버킷일 수 있습니다.
사용 방법
콘솔을 통한 인벤토리 구성
정기 인벤토리 추가
2. 왼쪽 네비게이션 바에서 버킷 목록을 클릭합니다.
3. 인벤토리 기능을 활성화하려는 버킷(소스 버킷)을 클릭하여 들어갑니다.
4. 왼쪽 네비게이션 바에서 기본 설정 > 인벤토리 설정을 선택한 후 인벤토리 추가를 클릭합니다.
5. 구성 페이지에서 다음 설정을 할 수 있습니다.
5.1 기본 정보
규칙 상태: 현재 인벤토리 규칙의 활성화 상태입니다. 인벤토리를 활성화하거나 비활성화할 수 있습니다.
인벤토리 이름: 인벤토리 이름을 입력합니다.
대상 버킷: 인벤토리를 저장할 버킷을 의미하며, 초기 기본 대상 버킷은 소스 버킷입니다. 대상 버킷은 소스 버킷과 동일한 리전에 있어야 합니다.
인벤토리 보고서 접두사(선택 사항): 대상 버킷에 대해 선택한 접두사를 입력하면 공용 위치의 인벤토리 파일을 그룹화할 수 있으며, 초기값은 기본값입니다.
인벤토리 보고서 생성 경로: 인벤토리 보고서의 생성 경로를 의미합니다.
5.2 필터 조건
파일 범위: 인벤토리 객체의 범위를 선택하며, 전체 버킷 또는 동일한 접두사를 가진 일부 파일을 선택할 수 있습니다. 예를 들어 버킷의 folder 경로 아래 doc 경로의 모든 파일을 선택하려면 파일 접두사를 folder/doc로 지정합니다.
객체 버전: 인벤토리에 포함할 객체의 모든 버전 또는 현재 버전을 선택합니다. 선택하지 않으면 기본적으로 현재 버전만 유지됩니다.
필터 태그(선택 사항): 동일한 태그를 가진 객체를 인벤토리에 포함하도록 필터링합니다. 입력하지 않으면 기본적으로 필터링하지 않습니다.
필터 시간(선택 사항): 수정 시간이 특정 시점 이후이거나 특정 기간 내인 객체를 인벤토리에 포함하도록 필터링합니다. 설정하지 않으면 기본적으로 필터링하지 않습니다.
스토리지 유형 필터링(선택 사항): 지정된 스토리지 유형(있는 경우)의 객체를 인벤토리에 포함하도록 필터링합니다. 스토리지 유형에 대한 소개는 스토리지 유형 개요를 참고하십시오. 설정하지 않으면 기본적으로 필터링하지 않습니다. 사용자 정의 헤더 출력(선택 사항): 인벤토리 보고서에 객체의 사용자 정의 헤더를 포함하려면 출력할 사용자 정의 헤더를 입력하십시오. x-cos-meta-* 헤더만 출력이 지원됩니다. 입력하지 않으면 기본적으로 사용자 정의 헤더를 출력하지 않습니다.
인벤토리 정보: 인벤토리 보고서에 포함할 객체의 해당 정보를 선택합니다. 선택 가능한 옵션은 크기, 스토리지 유형, ETag, 버킷 복제 상태, 멀티파트 업로드 상태, 최신 업데이트 날짜, 태그, CRC64입니다. 선택하지 않으면 기본적으로 모두 선택됩니다.
설명:
ETag(엔티티 태그)는 객체의 해시로, 객체 내용의 변경만 반영되며 메타데이터의 변경은 반영되지 않습니다. ETag는 반드시 객체 데이터의 MD5 요약이 되는 것은 아니며, 객체의 생성 방식과 암호화 방식에 따라 다릅니다.
생성된 인벤토리 내용은 기본적으로 Appid, Bucket, Key, LastModifiedTime 필드 내용을 포함합니다.
버킷에 버전 관리가 활성화된 경우 생성된 인벤토리 내용에 VersionId, IsLatest, IsDeleteMarker 필드 내용이 추가됩니다.
5.3 출력 형식
출력 형식: 출력 인벤토리 파일 형식은 GZIP으로 압축된 CSV 파일입니다.
생성 주기: 매일/매주/매월 생성이 가능하며, 기본적으로 매일 생성됩니다. 인벤토리의 구체적인 생성 시간은 데이터 양에 따라 결정되며, 구성 설명은 다음과 같습니다.
매일: 예를 들어, 같은 날 오후 3시에 목록이 추가되면, 목록 파일은 일반적으로 다음 날 오전 6시까지(예상 시간) 생성되어 대상 스토리지 버킷에 전달됩니다. 데이터 양이 많으면 생성 시간이 지연될 수 있습니다. 주간 또는 월간 목록 생성을 선택하는 것이 좋습니다.
매주: 기본적으로 7일 주기로 인벤토리를 생성합니다. 예를 들어 9월 1일에 인벤토리를 시작하면 첫 번째 인벤토리는 9월 2일에 생성되고, 이후에는 9월 9일, 9월 16일, 9월 23일…과 같이 7일 주기로 인벤토리가 생성됩니다.
매월: 매월 1일부터 28일까지 원하는 날짜에 인벤토리를 생성할 수 있습니다. 인벤토리 생성 로직은 다음과 같습니다.
인벤토리를 생성하는 현재 날짜가 지정일보다 이전이면 현재 달의 지정된 날짜에 생성됩니다.
예를 들어, 9월 8일에 인벤토리를 시작하고 매월 25일로 지정하면 첫 번째 인벤토리는 9월 25일에 생성되고, 이후에는 10월 25일, 11월 25일, 12월 25일…과 같이 월 단위 주기로 인벤토리가 생성됩니다.
인벤토리를 생성하는 현재 날짜가 지정일보다 이후이거나 같으면 다음 달의 지정된 날짜에 생성됩니다.
예를 들어, 9월 8일에 인벤토리를 시작하고 매월 3일로 지정하면 첫 번째 인벤토리는 10월 3일에 생성되고, 이후에는 11월 3일, 12월 3일…과 같이 월 단위 주기로 인벤토리가 생성됩니다.
인벤토리 암호화: 인벤토리에 서버 측 암호화가 필요한지 선택할 수 있습니다. 선택 가능한 옵션은 다음과 같습니다.
암호화 안 함: 인벤토리를 암호화하지 않으며, 이 옵션이 기본값입니다.
SSE-COS: COS 호스팅 키를 사용한 서버 측 암호화로 보고서를 암호화합니다. 자세한 내용은 COS 개발자 가이드의 SSE-COS 암호화를 참고하십시오. 접근 승인: 기본적으로 비활성화되어 있습니다. 접근 승인을 활성화하면 다음 단계를 진행할 수 있습니다.
5.4 정보 확인
5.5 버킷의 인벤토리 구성 정보를 확인합니다. 수정이 필요한 경우 이전 단계를 클릭하십시오.
6. 구성 정보에 문제가 없으면 확인을 클릭하십시오. 이후 COS는 설정한 주기에 따라 자동으로 인벤토리 파일을 생성하여 지정한 대상 버킷에 전달합니다.
설명:
인벤토리 기능으로 생성된 인벤토리 보고서 형식 및 내용에 대한 정보는 인벤토리 기능 개요를 참고하십시오. 7. 생성 완료 후 인벤토리는 지정된 경로, 즉 5.1의 인벤토리 보고서 생성 경로로 전달됩니다. 자세한 내용은 인벤토리 보고서 저장 경로를 참고하십시오. 실시간 인벤토리 생성
설명:
생성된 인벤토리 규칙을 즉시 실행하려면 실시간 인벤토리 생성을 선택할 수 있습니다.
2. 왼쪽 네비게이션 바에서 버킷 목록을 클릭한 후 인벤토리 규칙이 생성된 버킷(소스 버킷)으로 이동합니다.
3. 왼쪽 기본 설정 > 인벤토리 설정을 클릭한 후 해당 인벤토리 규칙을 찾고 오른쪽의 더보기 > 즉시 실행을 클릭하면 빠르게 인벤토리를 생성할 수 있습니다.
4. 생성 완료 후 실시간 인벤토리는 지정된 경로, 즉 현재 정기 인벤토리 규칙에서 설정한 인벤토리 보고서 생성 경로로 전송됩입니다.
인벤토리 미리보기
2. 왼쪽 네비게이션 바에서 버킷 목록을 클릭한 후 인벤토리 규칙이 생성된 버킷(소스 버킷)으로 이동합니다.
3. 왼쪽 기본 설정 > 인벤토리 설정을 클릭한 후 해당 인벤토리 규칙을 찾고 더보기 > 인벤토리 미리보기를 클릭하면 빠르게 인벤토리 결과를 확인할 수 있습니다.
4. 인벤토리 미리보기 페이지에서는 현재 규칙에 따라 생성된 모든 인벤토리(정기 인벤토리 및 실시간 인벤토리)가 표시됩니다. 인벤토리 디렉토리로 바로 이동하여 인벤토리 결과를 확인할 수 있으며, 날짜 및 인벤토리 유형별로 필터링이 가능합니다.
주의:
인벤토리 작업을 시작한 후 인벤토리 결과는 점차 업데이트되며, 인벤토리 디렉토리 아래의 manifest.json 파일이 생성된 후에야 인벤토리 결과가 완전히 생성됩니다.
5. 날짜 선택이 완료되면 인벤토리 디렉토리명 열에서 특정 디렉토리를 클릭하면 해당 디렉토리로 빠르게 이동할 수 있으며, 생성된 인벤토리 내용을 확인할 수 있습니다. 자세한 내용은 인벤토리 보고서 저장 경로를 참고하십시오. 6. 인벤토리 결과를 직접 확인하려면 작업 열에서 인벤토리 결과 보기를 클릭하면 구성한 필터 조건에 따른 객체 총 수와 크기를 확인할 수 있습니다. 더 자세한 인벤토리 정보는 다운로드를 클릭하여 압축 해제 후 확인할 수 있습니다.
7. 다운로드한 CSV 파일의 해당 필드명은 manifest.json 파일의 'fileSchema'에서 확인할 수 있습니다. 더 많은 필드 의미와 설명은 인벤토리 매개변수를 참고하십시오. API로 인벤토리 설정
API를 사용해 지정 버킷에 인벤토리 기능을 활성화하려면 다음 단계를 참고하십시오.
1. COS 역할을 생성합니다.
2. COS 역할 권한을 바인딩합니다.
3. 인벤토리 기능을 활성화합니다.
1. COS 역할 생성
COS 역할 생성과 구체적인 인터페이스 정보는 CreateRole을 참고하십시오.
roleName은 반드시 COS_QcsRole이어야 합니다.
policyDocument: {
"version": "2.0",
"statement": [{
"action": "name/sts:AssumeRole",
"effect": "allow",
"principal":{
"service": "cos.cloud.tencent.com"
}
}]
}
2. COS 역할 권한 바인딩
역할 권한 바인딩 권한과 구체적인 인터페이스 정보는 AttachRolePolicy를 참고하십시오.
policyName은 QcloudCOSFullAccess, roleName은 1단계의 COS_QcsRole입니다. roleName 생성 시 반환된 roleID를 사용할 수 있습니다. 3. 인벤토리 기능 활성화
인벤토리 파일을 저장할 대상 버킷과 소스 버킷은 동일한 리전에 있어야 하며, 인터페이스를 호출하여 인벤토리 기능을 활성화해야 합니다. 구체적인 인터페이스 정보는 다음과 같습니다.
주기적 인벤토리
인벤토리 보고서 저장 경로
인벤토리 보고서 및 관련 Manifest 파일은 대상 버킷에 게시되며, 인벤토리 보고서는 다음 경로에 게시됩니다.
destination-prefix/appid/source-bucket/config-ID/
Manifest 관련 파일은 대상 버킷의 다음 경로에 게시됩니다.
destination-prefix/appid/source-bucket/config-ID/YYYYMMDD/manifest.json
destination-prefix/appid/source-bucket/config-ID/YYYYMMDD/manifest.checksum
주의:
인벤토리 작업을 시작한 후 인벤토리 결과는 점차 업데이트되며, 인벤토리 디렉토리 아래의 manifest.json 파일이 생성된 후에야 인벤토리 결과가 완전히 생성됩니다.
경로에서 나타내는 의미는 다음과 같습니다.
destination-prefix: 사용자가 인벤토리를 설정할 때 설치하는 ‘타깃 접두사’입니다. 타깃 버킷에서 공용 위치에 있는 모든 인벤토리 보고서를 그룹화하는데 사용할 수 있습니다.
source-bucket: 인벤토리 보고서와 일치하는 소스 버킷 이름입니다. 이 폴더는 각각의 인벤토리 보고서를 여러 소스 버킷에서 동일한 타깃 버킷에 발송할 때 발생하는 충돌을 방지하기 위함입니다.
config-ID: 사용자가 인벤토리를 설정할 때 설치된 ‘인벤토리 이름’으로 동일한 소스 버킷이 여러 인벤토리 보고서를 설치하고 이를 동일한 타깃 버킷에 발송할 때 config-ID로 상이한 인벤토리 보고서를 구분할 수 있습니다.
YYYYMMDD: 타임스탬프. 인벤토리 보고서를 생성할 때 버킷이 스캐닝하기 시작하는 시간과 일자를 포함합니다.
manifest.json: Manifest 파일을 가리킵니다.
manifest.checksum: manifest.json 파일 콘텐츠의 MD5를 가리킵니다.
그 중 Manifest와 관련된 파일은 총 2개의 파일로 manifest.json과 manifest.checksum 입니다.
설명:
Manifest 관련 파일 소개는 다음과 같습니다.
manifest.json과 manifest.checksum은 모두 Manifest 파일입니다. manifest.json은 인벤토리 보고서의 위치를 설명하고 manifest.checksum은 manifest.json 파일 콘텐츠의 MD5입니다. 새로운 인벤토리 보고서를 딜리버리할 때마다 새로운 Manifest 파일이 따라 나올 수 있습니다.
manifest.json이 포함하는 모든 Manifest는 인벤토리의 메타데이터와 관련된 기타 기본 정보를 제공하며 그 정보는 아래와 같습니다.
소스 버킷 이름.
타깃 버킷 이름.
인벤토리 버전.
타임스탬프. 인벤토리 보고서 생성 시 버킷 일자와 시간을 스캐닝하기 시작합니다.
매니페스트 파일의 형식과 구성.
타깃 버킷 인벤토리가 보고하는 객체 키, 크기, md5Checksum.
다음은 CSV 형식 인벤토리의 manifest.json 파일에 있는 Manifest 예시입니다.
{
"sourceAppid": "1250000000",
"sourceBucket": "example-source-bucket",
"destinationAppid": "1250000000",
"destinationBucket": "example-inventory-destination-bucket",
"fileFormat": "CSV",
"listObjectCount": "13",
"listStorageSize": "7212835",
"filterObjectCount": "13",
"filterStorageSize": "7212835",
"fileSchema": "Appid, Bucket, Key, Size, LastModifiedDate, ETag, StorageClass, IsMultipartUploaded, ReplicationStatus",
"files": [
{
"key": "cos_bucket_inventory/1250000000/examplebucket/inventory01/04d73d9debc73d9f0bf85af461abde6c.csv.gz",
"size": "502",
"md5Checksum": "7d40288a09c25b302ad6cb5fced54f35"
}
]
}
인벤토리의 일치성
COS 인벤토리 보고서는 새 객체와 덮어쓴 PUT 그리고 삭제의 최종 일관성을 제공합니다. 따라서 인벤토리 보고서에는 최근 추가되거나 삭제한 객체가 포함되지 않을 수 있습니다. 예시로 COS가 사용자 설정의 인벤토리 업무 과정을 실행할 때 사용자가 객체를 업로드하거나 삭제할 경우 이 작업 결과는 인벤토리 보고서에 반영되지 않을 수 있습니다.
객체가 작업을 실행하기 전 객체의 상태를 확인하려면 HEAD Object API를 사용하여 객체 메타데이터를 인덱스하거나 COS 콘솔에서 객체 속성을 조회하시기 바랍니다.