4.5. Swift 오브젝트 작업
개발자는 Ceph Object Gateway를 통해 Swift API(애플리케이션 프로그래밍 인터페이스)를 사용하여 오브젝트 작업을 수행할 수 있습니다. 오브젝트를 나열, 생성, 업데이트 및 삭제할 수 있습니다. 오브젝트의 메타데이터를 추가하거나 업데이트할 수도 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- RESTful 클라이언트입니다.
4.5.1. Swift 오브젝트 작업
오브젝트는 데이터 및 메타데이터를 저장하기 위한 컨테이너입니다. 컨테이너에 많은 오브젝트가 있을 수 있지만 오브젝트 이름은 고유해야 합니다. 이 API를 사용하면 클라이언트는 오브젝트를 생성하고, 액세스 제어 및 메타데이터를 설정하고, 오브젝트의 데이터 및 메타데이터를 검색하고, 오브젝트를 삭제할 수 있습니다. 이 API는 특정 사용자 계정의 정보와 관련된 요청을 수행하기 때문에 이 API의 모든 요청을 인증해야 합니다. 컨테이너 또는 오브젝트의 액세스 제어가 의도적으로 공개적으로 액세스되지 않는 한, 이는 익명 요청을 허용합니다.
4.5.2. Swift에서 오브젝트를 가져옵니다.
오브젝트를 검색하려면 API 버전, 계정, 컨테이너 및 오브젝트 이름을 사용하여 GET
요청을 만듭니다. 컨테이너 내의 오브젝트를 검색하려면 컨테이너에 대한 읽기 권한이 있어야 합니다.
구문
GET /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
요청 헤더
범위
- 설명
- 오브젝트 콘텐츠의 하위 집합을 검색하려면 바이트 범위를 지정할 수 있습니다.
- 유형
- 날짜
- 필수 항목
- 없음
if- Cryostat-Since
- 설명
-
소스 오브젝트의
last_modified
속성의 날짜 및 시간 이후 수정된 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
if-Unmodified-Since
- 설명
-
소스 오브젝트의
last_modified
속성의 날짜와 시간 이후 수정되지 않은 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
copy-If-Match
- 설명
- 요청의 ETag가 소스 오브젝트의 ETag와 일치하는 경우에만 복사합니다.
- 유형
- ETag
- 필수 항목
- 없음
copy-If-None-Match
- 설명
-
요청의
ETag
가 소스 오브젝트의 ETag와 일치하지 않는 경우에만 복사합니다. - 유형
- ETag
- 필수 항목
- 없음
응답 헤더
content-Range
- 설명
- 오브젝트 콘텐츠 하위 집합의 범위입니다. request에 range 헤더 필드가 지정된 경우에만 반환됩니다.
4.5.3. Swift에서 오브젝트를 생성하거나 업데이트합니다.
새 오브젝트를 생성하려면 API 버전, 계정, 컨테이너 이름 및 새 오브젝트 이름을 사용하여 PUT
요청을 만듭니다. 오브젝트를 생성하거나 업데이트하려면 컨테이너에 대한 쓰기 권한이 있어야 합니다. 오브젝트 이름은 컨테이너 내에서 고유해야 합니다. PUT
요청은 멱등이 아니므로 고유한 이름을 사용하지 않으면 요청이 오브젝트를 업데이트합니다. 그러나 오브젝트 이름에 pseudo-hierarchical 구문을 사용하여 다른 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-Encoding
- 설명
- 개체가 더 큰 집계 개체의 일부인지 여부를 나타냅니다.Indicates whether the object is part of a larger aggregate object.
- 유형
- 문자열
- 유효한 값
-
청크
- 필수 항목
- 없음
4.5.4. Swift 오브젝트 삭제
오브젝트를 삭제하려면 API 버전, 계정, 컨테이너 및 오브젝트 이름을 사용하여 DELETE
요청을 만듭니다. 해당 오브젝트를 삭제하려면 컨테이너에 대한 쓰기 권한이 있어야 합니다. 오브젝트를 성공적으로 삭제하면 오브젝트 이름을 재사용할 수 있습니다.
구문
DELETE /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
4.5.5. Swift에서 오브젝트 복사
오브젝트를 복사하면 오브젝트의 서버 측 복사본을 만들 수 있으므로 다른 컨테이너에서 다운로드하여 업로드할 필요가 없습니다. 한 오브젝트의 콘텐츠를 다른 오브젝트로 복사하려면 API 버전, 계정 및 컨테이너 이름을 사용하여 PUT
요청 또는 COPY
요청을 수행할 수 있습니다.
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- Cryostat-Since
- 설명
-
소스 오브젝트의
last_modified
속성의 날짜 및 시간 이후 수정된 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
if-Unmodified-Since
- 설명
-
소스 오브젝트의
last_modified
속성의 날짜와 시간 이후 수정되지 않은 경우에만 복사합니다. - 유형
- 날짜
- 필수 항목
- 없음
copy-If-Match
- 설명
- 요청의 ETag가 소스 오브젝트의 ETag와 일치하는 경우에만 복사합니다.
- 유형
- ETag
- 필수 항목
- 없음
copy-If-None-Match
- 설명
-
요청의
ETag
가 소스 오브젝트의 ETag와 일치하지 않는 경우에만 복사합니다. - 유형
- ETag
- 필수 항목
- 없음
4.5.6. Swift get 오브젝트 메타데이터
오브젝트의 메타데이터를 검색하려면 API 버전, 계정, 컨테이너 및 오브젝트 이름을 사용하여 HEAD
요청을 만듭니다. 컨테이너 내의 오브젝트에서 메타데이터를 검색하려면 컨테이너에 대한 읽기 권한이 있어야 합니다. 이 요청은 오브젝트 자체에 대한 요청과 동일한 헤더 정보를 반환하지만 오브젝트의 데이터를 반환하지는 않습니다.
구문
HEAD /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
4.5.7. 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
- 설명
- 임의의 문자열 값을 사용하는 사용자 정의 메타 데이터 키입니다.
- 유형
- 문자열
- 필수 항목
- 없음