검색

4.4. Swift 컨테이너 작업

download PDF

개발자는 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 를 사용하지 않는 경우 매니페스트 파일을 덮어씁니다. 결과적으로 기존 오브젝트를 덮어쓰므로 데이터가 손실됩니다.

4.4.2. Swift에서 컨테이너의 ACL(액세스 제어 목록) 업데이트

사용자가 컨테이너를 생성하면 기본적으로 사용자는 컨테이너에 대한 읽기 및 쓰기 액세스 권한을 갖습니다. 다른 사용자가 컨테이너의 콘텐츠를 읽거나 컨테이너에 쓸 수 있도록 하려면 사용자를 구체적으로 활성화해야 합니다. X-Container-Read 또는 X-Container-Write 설정에서 * 를 지정하면 모든 사용자가 컨테이너에서 읽거나 쓸 수 있습니다. 설정 * 은 컨테이너를 공개합니다. 이를 통해 익명 사용자가 컨테이너에서 읽거나 쓸 수 있습니다.

구문

POST /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN
X-Container-Read: *
X-Container-Write: UID1, UID2, UID3

요청 헤더

X-Container-Read
설명
컨테이너에 대한 읽기 권한이 있는 사용자 ID입니다.
유형
사용자 ID의 쉼표로 구분된 문자열 값입니다.
필수 항목
없음
x-Container-Write
설명
컨테이너에 대한 쓰기 권한이 있는 사용자 ID입니다.
유형
사용자 ID의 쉼표로 구분된 문자열 값입니다.
필수 항목
없음

4.4.3. Swift 목록 컨테이너 목록

API 버전을 지정하는 GET 요청으로, 계정은 특정 사용자 계정에 대한 컨테이너 목록을 반환합니다. 요청이 특정 사용자의 컨테이너를 반환하므로 요청에 인증 토큰이 필요합니다. 요청은 익명으로 만들 수 없습니다.

구문

GET /API_VERSION/ACCOUNT HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

요청 매개변수

제한
설명
결과 수를 지정된 값으로 제한합니다.
유형
정수
유효한 값
해당 없음
필수 항목
제공됨
format
설명
결과 수를 지정된 값으로 제한합니다.
유형
정수
유효한 값
JSON 또는 xml
필수 항목
없음
마커
설명
마커 값보다 큰 결과 목록을 반환합니다.
유형
문자열
유효한 값
해당 없음
필수 항목
없음

응답에는 컨테이너 목록이 포함되어 있거나 HTTP 204 응답 코드가 반환됩니다.

응답 엔터티

계정
설명
계정 정보 목록입니다.
유형
컨테이너
container
설명
컨테이너 목록입니다.
유형
컨테이너
name
설명
컨테이너의 이름입니다.
유형
문자열
바이트
설명
컨테이너의 크기입니다.
유형
정수

4.4.4. Swift에서 컨테이너의 오브젝트 나열

컨테이너 내의 오브젝트를 나열하려면 API 버전, 계정 및 컨테이너 이름을 사용하여 GET 요청을 만듭니다. 쿼리 매개변수를 지정하여 전체 목록을 필터링하거나 매개변수를 벗어나 컨테이너에 저장된 처음 10,000개의 개체 이름 목록을 반환할 수 있습니다.

구문

GET /API_VERSION/TENANT:CONTAINER HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

요청 매개변수

format
설명
결과 수를 지정된 값으로 제한합니다.
유형
정수
유효한 값
JSON 또는 xml
필수 항목
없음
prefix
설명
결과 세트를 지정된 접두사로 시작하는 오브젝트로 제한합니다.
유형
문자열
유효한 값
해당 없음
필수 항목
없음
마커
설명
마커 값보다 큰 결과 목록을 반환합니다.
유형
문자열
유효한 값
해당 없음
필수 항목
없음
제한
설명
결과 수를 지정된 값으로 제한합니다.
유형
정수
유효한 값
0 - 10,000
필수 항목
없음
구분 기호
설명
접두사와 나머지 개체 이름의 구분 기호입니다.
유형
문자열
유효한 값
해당 없음
필수 항목
없음
경로
설명
오브젝트의 의사 계층적 경로입니다.
유형
문자열
유효한 값
해당 없음
필수 항목
없음

응답 엔터티

container
설명
컨테이너입니다.
유형
컨테이너
object
설명
컨테이너 내의 오브젝트입니다.
유형
컨테이너
name
설명
컨테이너 내의 오브젝트 이름입니다.
유형
문자열
hash
설명
오브젝트 콘텐츠의 해시 코드입니다.
유형
문자열
last_modified
설명
오브젝트의 콘텐츠가 마지막으로 수정된 시간입니다.
유형
날짜
content_type
설명
오브젝트 내의 콘텐츠 유형입니다.
유형
문자열

4.4.5. Swift에서 컨테이너 생성

새 컨테이너를 생성하려면 API 버전, 계정 및 새 컨테이너의 이름을 사용하여 PUT 요청을 만듭니다. 컨테이너 이름은 고유해야 하며 forward-slash(/) 문자를 포함하지 않아야 하며 256바이트 미만이어야 합니다. 요청에 액세스 제어 헤더 및 메타데이터 헤더를 포함할 수 있습니다. 배치 풀 세트의 키를 식별하는 스토리지 정책을 포함할 수도 있습니다. 예를 들어 radosgw-admin zone get 을 실행하여 placement_pools 에서 사용 가능한 키 목록을 확인합니다. 스토리지 정책을 사용하면 컨테이너의 특수 풀 세트(예: SSD 기반 스토리지)를 지정할 수 있습니다. 작업은 멱등입니다. 이미 존재하는 컨테이너를 생성하라는 요청을 하면 HTTP 202 반환 코드와 함께 반환되지만 다른 컨테이너는 생성하지 않습니다.

구문

PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN
X-Container-Read: COMMA_SEPARATED_UIDS
X-Container-Write: COMMA_SEPARATED_UIDS
X-Container-Meta-KEY:VALUE
X-Storage-Policy: PLACEMENT_POOLS_KEY

headers

X-Container-Read
설명
컨테이너에 대한 읽기 권한이 있는 사용자 ID입니다.
유형
사용자 ID의 쉼표로 구분된 문자열 값입니다.
필수 항목
없음
x-Container-Write
설명
컨테이너에 대한 쓰기 권한이 있는 사용자 ID입니다.
유형
사용자 ID의 쉼표로 구분된 문자열 값입니다.
필수 항목
없음
X-Container-Meta-KEY
설명
임의의 문자열 값을 사용하는 사용자 정의 메타데이터 키입니다.
유형
문자열
필수 항목
없음
x-Storage-Policy
설명
Ceph Object Gateway의 placement_pools 에서 스토리지 정책을 식별하는 키입니다. radosgw-admin 영역을 실행하면 사용 가능한 키에 대해 가져올 수 있습니다.
유형
문자열
필수 항목
없음

동일한 이름의 컨테이너가 이미 존재하고 사용자가 컨테이너 소유자인 경우 작업이 성공합니다. 그렇지 않으면 작업이 실패합니다.

HTTP 응답

409
상태 코드
BucketAlreadyExists
설명
컨테이너는 이미 다른 사용자의 소유권 아래에 있습니다.

4.4.6. Swift 컨테이너 삭제

컨테이너를 삭제하려면 API 버전, 계정 및 컨테이너 이름을 사용하여 DELETE 요청을 만듭니다. 컨테이너는 비어 있어야 합니다. 컨테이너가 비어 있는지 확인하려면 컨테이너에 대해 HEAD 요청을 실행합니다. 컨테이너를 성공적으로 제거하면 컨테이너 이름을 재사용할 수 있습니다.

구문

DELETE /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN

HTTP 응답

204
상태 코드
NoContent
설명
컨테이너가 제거되었습니다.

4.4.7. Swift에서 컨테이너 메타데이터 추가 또는 업데이트

컨테이너에 메타데이터를 추가하려면 API 버전, 계정 및 컨테이너 이름을 사용하여 POST 요청을 만듭니다. 메타데이터를 추가하거나 업데이트하려면 컨테이너에 대한 쓰기 권한이 있어야 합니다.

구문

POST /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
X-Auth-Token: AUTH_TOKEN
X-Container-Meta-Color: red
X-Container-Meta-Taste: salty

요청 헤더

X-Container-Meta-KEY
설명
임의의 문자열 값을 사용하는 사용자 정의 메타데이터 키입니다.
유형
문자열
필수 항목
없음
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.