4.6. Swift 오브젝트 작업
개발자는 Ceph Object Gateway를 통해 Swift API(애플리케이션 프로그래밍 인터페이스)를 사용하여 오브젝트 작업을 수행할 수 있습니다. 오브젝트를 나열, 생성, 업데이트 및 삭제할 수 있습니다. 오브젝트의 메타데이터를 추가하거나 업데이트할 수도 있습니다.
4.6.1. 사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- RESTful 클라이언트.
4.6.2. Swift 오브젝트 작업
오브젝트는 데이터 및 메타데이터를 저장하는 컨테이너입니다. 컨테이너에는 많은 오브젝트가 있을 수 있지만 오브젝트 이름은 고유해야 합니다. 이 API를 사용하면 클라이언트는 오브젝트를 생성하고, 액세스 제어 및 메타데이터를 설정하고, 오브젝트의 데이터 및 메타데이터를 검색하고, 오브젝트를 삭제할 수 있습니다. 이 API는 특정 사용자 계정의 정보와 관련된 요청을 하므로 이 API의 모든 요청을 인증해야 합니다. 컨테이너 또는 오브젝트의 액세스 제어가 의도적으로 공개적으로 액세스할 수 있는 한, 즉 익명의 요청을 허용합니다.
4.6.3. Swift에서 오브젝트를 가져옵니다.
오브젝트를 검색하려면 API 버전, 계정, 컨테이너 및 오브젝트 이름을 사용하여 GET
요청을 만듭니다. 컨테이너 내에서 오브젝트를 검색하려면 컨테이너에 대한 읽기 권한이 있어야 합니다.
구문
GET /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
요청 헤더
범위
- 설명
- 오브젝트 콘텐츠의 하위 집합을 검색하려면 바이트 범위를 지정할 수 있습니다.
- 유형
- 날짜
- 필수 항목
- 없음
if-Modified-Since
- 설명
-
소스 오브젝트의
last_modified
특성의 날짜와 시간 이후에 수정된 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
if-Unmodified-Since
- 설명
-
소스 오브젝트의
last_modified
특성의 날짜 및 시간 이후에 수정되지 않은 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
copy-If-Match
- 설명
- 요청에 있는 ETag가 소스 오브젝트의 ETag와 일치하는 경우에만 복사합니다.
- 유형
- etag
- 필수 항목
- 없음
copy-If-None-Match
- 설명
-
요청에 있는
ETag
가 소스 오브젝트의 ETag와 일치하지 않는 경우에만 복사합니다. - 유형
- etag
- 필수 항목
- 없음
응답 헤더
content-Range
- 설명
- 오브젝트 콘텐츠의 하위 집합 범위입니다. range 헤더 필드가 요청에 지정된 경우에만 반환됩니다.
4.6.4. Swift create 또는 update an object
새 오브젝트를 생성하려면 API 버전, 계정, 컨테이너 이름 및 새 오브젝트의 이름을 사용하여 PUT
요청을 만듭니다. 오브젝트를 생성하거나 업데이트하려면 컨테이너에 쓰기 권한이 있어야 합니다. 오브젝트 이름은 컨테이너 내에서 고유해야 합니다. PUT
요청은 멱등이 아니므로 고유한 이름을 사용하지 않으면 요청이 오브젝트를 업데이트합니다. 그러나 오브젝트 이름에 pseudo-hierarchical 구문을 사용하여 다른 의사 구조 디렉터리에 있는 경우 동일한 이름의 다른 오브젝트와 구별할 수 있습니다. 요청에 액세스 제어 헤더 및 메타데이터 헤더를 포함할 수 있습니다.
구문
PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
요청 헤더
etag
- 설명
- 오브젝트 콘텐츠의 MD5 해시입니다. 권장 사항.
- 유형
- 문자열
- 유효한 값
- 해당 없음
- 필수 항목
- 없음
content-Type
- 설명
- 오브젝트 콘텐츠의 MD5 해시입니다.
- 유형
- 문자열
- 유효한 값
- 해당 없음
- 필수 항목
- 없음
transfer-authorization
- 설명
- 개체가 더 큰 집계 개체의 일부인지 여부를 나타냅니다.Indicates whether the object is part of a larger aggregate object.
- 유형
- 문자열
- 유효한 값
-
chunked
- 필수 항목
- 없음
4.6.5. Swift에서 오브젝트 삭제
오브젝트를 삭제하려면 API 버전, 계정, 컨테이너 및 오브젝트 이름을 사용하여 DELETE
요청을 만듭니다. 컨테이너 내에서 오브젝트를 삭제하려면 컨테이너에 대한 쓰기 권한이 있어야 합니다. 개체를 성공적으로 삭제하면 개체 이름을 다시 사용할 수 있습니다.
구문
DELETE /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
4.6.6. Swift에서 오브젝트 복사
오브젝트를 복사하면 오브젝트의 서버 측 복사본을 만들 수 있으므로 이를 다운로드하여 다른 컨테이너로 업로드할 필요가 없습니다. 한 오브젝트의 콘텐츠를 다른 오브젝트에 복사하려면 PUT
요청 또는 COPY
요청을 API 버전, 계정, 컨테이너 이름으로 만들 수 있습니다.
PUT
요청의 경우 요청에 대상 컨테이너 및 오브젝트 이름을 사용하고 요청 헤더에 소스 컨테이너와 오브젝트를 사용합니다.
복사
요청의 경우 요청에서 소스 컨테이너와 오브젝트를 사용하고 요청 헤더에서 대상 컨테이너와 오브젝트를 사용합니다. 컨테이너에 오브젝트를 복사하려면 쓰기 권한이 있어야 합니다. 대상 오브젝트 이름은 컨테이너 내에서 고유해야 합니다. 요청은 멱등이 아니므로 고유한 이름을 사용하지 않는 경우 요청은 대상 오브젝트를 업데이트합니다. 오브젝트 이름에 pseudo-hierarchical 구문을 사용하여 대상 오브젝트를 다른 pseudo-hierarchical 디렉터리에 있는 경우 동일한 이름의 소스 오브젝트와 구분할 수 있습니다. 요청에 액세스 제어 헤더 및 메타데이터 헤더를 포함할 수 있습니다.
구문
PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1 X-Copy-From: TENANT:SOURCE_CONTAINER/SOURCE_OBJECT Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
또는 다음을 수행합니다.
구문
COPY /API_VERSION/ACCOUNT/TENANT:SOURCE_CONTAINER/SOURCE_OBJECT HTTP/1.1 Destination: TENANT:DEST_CONTAINER/DEST_OBJECT
요청 헤더
X-Copy-From
- 설명
-
PUT
요청과 함께 사용하여 소스 컨테이너/오브젝트 경로를 정의합니다. - 유형
- 문자열
- 필수 항목
-
PUT
를 사용하는 경우 .
대상
- 설명
-
대상 컨테이너/오브젝트 경로를 정의하는
COPY
요청과 함께 사용됩니다. - 유형
- 문자열
- 필수 항목
-
예.
COPY
를 사용하는 경우 .
if-Modified-Since
- 설명
-
소스 오브젝트의
last_modified
특성의 날짜와 시간 이후에 수정된 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
if-Unmodified-Since
- 설명
-
소스 오브젝트의
last_modified
특성의 날짜 및 시간 이후에 수정되지 않은 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
copy-If-Match
- 설명
- 요청에 있는 ETag가 소스 오브젝트의 ETag와 일치하는 경우에만 복사합니다.
- 유형
- etag
- 필수 항목
- 없음
copy-If-None-Match
- 설명
-
요청에 있는
ETag
가 소스 오브젝트의 ETag와 일치하지 않는 경우에만 복사합니다. - 유형
- etag
- 필수 항목
- 없음
4.6.7. Swift에서 오브젝트 메타데이터 가져오기
오브젝트의 메타데이터를 검색하려면 API 버전, 계정, 컨테이너 및 오브젝트 이름을 사용하여 HEAD
를 요청합니다. 컨테이너 내의 오브젝트에서 메타데이터를 검색하려면 컨테이너에 대한 읽기 권한이 있어야 합니다. 이 요청은 오브젝트 자체에 대한 요청과 동일한 헤더 정보를 반환하지만 오브젝트 데이터를 반환하지 않습니다.
구문
HEAD /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
4.6.8. Swift 추가 또는 오브젝트 메타데이터 업데이트
오브젝트에 메타데이터를 추가하려면 API 버전, 계정, 컨테이너 및 오브젝트 이름을 사용하여 POST
요청을 만듭니다. 메타데이터를 추가하거나 업데이트하려면 상위 컨테이너에 쓰기 권한이 있어야 합니다.
구문
POST /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
요청 헤더
X-Object-Meta-KEY
- 설명
- 임의의 문자열 값을 사용하는 사용자 정의 메타 데이터 키입니다.
- 유형
- 문자열
- 필수 항목
- 없음