4.4. Swift 컨테이너 작업
개발자는 Ceph Object Gateway를 통해 Swift API(애플리케이션 프로그래밍 인터페이스)를 사용하여 컨테이너 작업을 수행할 수 있습니다. 컨테이너를 나열, 생성, 업데이트 및 삭제할 수 있습니다. 컨테이너의 메타데이터를 추가하거나 업데이트할 수도 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- RESTful 클라이언트입니다.
4.4.1. Swift 컨테이너 작업 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너는 데이터 오브젝트를 저장하는 메커니즘입니다. 계정에는 여러 컨테이너가 있을 수 있지만 컨테이너 이름은 고유해야 합니다. 이 API를 사용하면 클라이언트가 컨테이너를 생성하고, 액세스 제어 및 메타데이터를 설정하고, 컨테이너 콘텐츠를 검색하고, 컨테이너를 삭제할 수 있습니다. 이 API는 특정 사용자 계정의 정보와 관련된 요청을 만들기 때문에 컨테이너의 액세스 제어가 의도적으로 액세스되지 않는 한, 즉 익명 요청을 허용하는 경우 이 API의 모든 요청을 인증해야 합니다.
Amazon S3 API는 'bucket'이라는 용어를 사용하여 데이터 컨테이너를 설명합니다. 누군가가 Swift API 내에서 'bucket'을 참조하는 경우 'bucket'이라는 용어는 'container'라는 용어와 동일하게 해석될 수 있습니다.
오브젝트 스토리지의 한 측면은 계층적 경로 또는 디렉터리를 지원하지 않는다는 것입니다. 대신 각 컨테이너에 오브젝트가 있을 수 있는 하나 이상의 컨테이너로 구성된 하나의 수준을 지원합니다. RADOS 게이트웨이의 Swift 호환 API는 'pseudo-hierarchical containers'의 개념을 지원합니다. 이는 오브젝트 이름 지정을 사용하여 컨테이너 또는 디렉터리 계층 구조를 실제로 스토리지 시스템에 구현하지 않고 사용하는 수단입니다. 예를 들어, photos/buildings/empire-state. Cryostat와 같이 의사 계층 이름으로 오브젝트의 이름을 지정할 수 있지만 컨테이너 이름에는 슬래시(/) 문자가 포함될 수 없습니다.
대용량 오브젝트를 버전이 지정된 Swift 컨테이너에 업로드할 때 python-swiftclient 유틸리티와 함께 --leave-segments 옵션을 사용합니다. --leave-segments 를 사용하지 않는 경우 매니페스트 파일을 덮어씁니다. 결과적으로 기존 오브젝트를 덮어쓰므로 데이터가 손실됩니다.