3.3. S3 버킷 작업
개발자는 Ceph Object Gateway를 통해 Amazon S3 API(애플리케이션 프로그래밍 인터페이스)를 사용하여 버킷 작업을 수행할 수 있습니다.
다음 표에는 함수의 지원 상태와 함께 버킷에 대한 Amazon S3 기능 작업이 나열되어 있습니다.
기능 | 상태 | 참고 |
---|---|---|
지원됨 | ||
지원됨 | 다양한 종류의 ACL 세트입니다. | |
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
부분적으로 지원됨 |
| |
부분적으로 지원됨 |
| |
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | 다른 set of canned ACL | |
지원됨 | 다른 set of canned ACL | |
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
부분적으로 지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 | ||
지원됨 |
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- RESTful 클라이언트입니다.
3.3.1. S3 버킷 알림 생성
버킷 수준에서 버킷 알림을 생성합니다. 알림 구성에는 Red Hat Ceph Storage Object Gateway S3 이벤트, ObjectCreated
,ObjectRemoved
, ObjectLifecycle:Expiration
이 있습니다. 이를 게시하고 버킷 알림을 보내는 대상이어야 합니다. 버킷 알림은 S3 작업입니다.
s3:objectCreate
,s3:objectRemove
및 s3:ObjectLifecycle:Expiration
이벤트에 대한 버킷 알림을 생성하려면 PUT을 사용합니다.
예
client.put_bucket_notification_configuration( Bucket=bucket_name, NotificationConfiguration={ 'TopicConfigurations': [ { 'Id': notification_name, 'TopicArn': topic_arn, 'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*', 's3:ObjectLifecycle:Expiration:*'] }]})
Red Hat은 put
,post
,multipartUpload
와 같은 ObjectCreate
이벤트를 지원합니다
. Red Hat은 object_delete
및 s3_multi_object_delete
와 같은 ObjectRemove
이벤트도 지원합니다.
요청 엔터티
NotificationConfiguration
- 설명
-
TopicConfiguration
엔터티 목록입니다. - 유형
- 컨테이너
- 필수 항목
- 제공됨
TopicConfiguration
- 설명
-
ID,
주제
및 이벤트 엔터티목록입니다
. - 유형
- 컨테이너
- 필수 항목
- 제공됨
id
- 설명
- 알림의 이름입니다.
- 유형
- 문자열
- 필수 항목
- 제공됨
주제
- 설명
주제 Amazon 리소스 이름(ARN)
참고주제를 사전에 생성해야 합니다.
- 유형
- 문자열
- 필수 항목
- 제공됨
이벤트
- 설명
- 지원되는 이벤트 목록입니다. 여러 이벤트 엔터티를 사용할 수 있습니다. 생략하면 모든 이벤트가 처리됩니다.
- 유형
- 문자열
- 필수 항목
- 없음
filter
- 설명
-
S3Key
,S3Metadata
및S3Tags
엔티티. - 유형
- 컨테이너
- 필수 항목
- 없음
S3Key
- 설명
-
개체 키를 기반으로 필터링하기 위한
FilterRule
엔터티 목록입니다. 대부분의 경우 3개의 엔티티가 목록에 있을 수 있습니다. 예를 들어Name
은접두사
,접미사
또는regex
입니다. 필터가 일치하려면 목록의 모든 필터 규칙이 일치해야 합니다. - 유형
- 컨테이너
- 필수 항목
- 없음
S3Metadata
- 설명
-
오브젝트 메타데이터를 기반으로 필터링을 위한
FilterRule
엔터티 목록입니다. 목록의 모든 필터 규칙은 오브젝트에 정의된 메타데이터와 일치해야 합니다. 그러나 오브젝트에는 필터에 나열되지 않은 다른 메타데이터 항목이 있는 경우에도 여전히 일치합니다. - 유형
- 컨테이너
- 필수 항목
- 없음
S3Tags
- 설명
-
오브젝트 태그를 기반으로 필터링하기 위한
FilterRule
엔터티 목록입니다. 목록의 모든 필터 규칙은 오브젝트에 정의된 태그와 일치해야 합니다. 그러나 오브젝트에 필터가 나열되지 않은 다른 태그가 있는 경우에도 여전히 일치합니다. - 유형
- 컨테이너
- 필수 항목
- 없음
S3Key.FilterRule
- 설명
-
이름
및값
엔터티. name은접두사
,접미사
또는regex
입니다.Value
는 키 접두사, 키 접미사 또는 정규식을 키에 맞게 유지합니다. - 유형
- 컨테이너
- 필수 항목
- 제공됨
S3Metadata.FilterRule
- 설명
-
이름
및값
엔터티. name은x-amz-meta-xxx
의 메타데이터 속성 이름입니다. 이 값은 이 속성에 대해 예상되는 값입니다. - 유형
- 컨테이너
- 필수 항목
- 제공됨
S3Tags.FilterRule
- 설명
-
이름
및값
엔터티. name은 태그 키이며 값은 태그 값입니다. - 유형
- 컨테이너
- 필수 항목
- 제공됨
HTTP 응답
400
- 상태 코드
-
MalformedXML
- 설명
- XML이 제대로 구성되어 있지 않습니다.
400
- 상태 코드
-
InvalidArgument
- 설명
- Id가 없거나 누락되었거나 잘못된 항목 ARN 또는 잘못된 이벤트입니다.
404
- 상태 코드
-
NoSuchBucket
- 설명
- 버킷이 존재하지 않습니다.
404
- 상태 코드
-
NoSuchKey
- 설명
- 주제가 존재하지 않습니다.
3.3.2. S3 버킷 알림 가져오기
특정 알림을 받거나 버킷에 구성된 모든 알림을 나열합니다.
구문
Get /BUCKET?notification=NOTIFICATION_ID HTTP/1.1 Host: cname.domain.com Date: date Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
예
Get /testbucket?notification=testnotificationID HTTP/1.1 Host: cname.domain.com Date: date Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
응답 예
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <TopicConfiguration> <Id></Id> <Topic></Topic> <Event></Event> <Filter> <S3Key> <FilterRule> <Name></Name> <Value></Value> </FilterRule> </S3Key> <S3Metadata> <FilterRule> <Name></Name> <Value></Value> </FilterRule> </S3Metadata> <S3Tags> <FilterRule> <Name></Name> <Value></Value> </FilterRule> </S3Tags> </Filter> </TopicConfiguration> </NotificationConfiguration>
notification
하위 리소스는 버킷 알림 구성 또는 빈 NotificationConfiguration
요소를 반환합니다. 호출자는 버킷 소유자여야 합니다.
요청 엔터티
notification-id
- 설명
- 알림의 이름입니다. ID를 제공하지 않으면 모든 알림이 나열됩니다.
- 유형
- 문자열
NotificationConfiguration
- 설명
-
TopicConfiguration
엔터티 목록입니다. - 유형
- 컨테이너
- 필수 항목
- 제공됨
TopicConfiguration
- 설명
-
ID,
주제
및 이벤트 엔터티목록입니다
. - 유형
- 컨테이너
- 필수 항목
- 제공됨
id
- 설명
- 알림의 이름입니다.
- 유형
- 문자열
- 필수 항목
- 제공됨
주제
- 설명
주제 Amazon 리소스 이름(ARN)
참고주제를 사전에 생성해야 합니다.
- 유형
- 문자열
- 필수 항목
- 제공됨
이벤트
- 설명
- 처리된 이벤트입니다. 여러 이벤트 엔티티가 존재할 수 있습니다.
- 유형
- 문자열
- 필수 항목
- 제공됨
filter
- 설명
- 지정된 구성에 대한 필터입니다.
- 유형
- 컨테이너
- 필수 항목
- 없음
HTTP 응답
404
- 상태 코드
-
NoSuchBucket
- 설명
- 버킷이 존재하지 않습니다.
404
- 상태 코드
-
NoSuchKey
- 설명
- 알림이 제공된 경우 존재하지 않습니다.
3.3.3. S3 버킷 알림 삭제
버킷에서 특정 또는 모든 알림을 삭제합니다.
알림 삭제는 S3 알림 API의 확장입니다. 버킷에 정의된 모든 알림은 버킷을 삭제할 때 삭제됩니다. 예를 들어 이중 삭제와 같은 알 수 없는 알림을 삭제하는
것은 오류로 간주되지 않습니다.
특정 또는 모든 알림을 삭제하려면 DELETE를 사용합니다.
구문
DELETE /BUCKET?notification=NOTIFICATION_ID HTTP/1.1
예
DELETE /testbucket?notification=testnotificationID HTTP/1.1
요청 엔터티
notification-id
- 설명
- 알림의 이름입니다. 알림 ID를 제공하지 않으면 버킷의 모든 알림이 삭제됩니다.
- 유형
- 문자열
HTTP 응답
404
- 상태 코드
-
NoSuchBucket
- 설명
- 버킷이 존재하지 않습니다.
3.3.4. 버킷 호스트 이름에 액세스
버킷에 액세스하는 두 가지 모드가 있습니다. 첫 번째 및 기본 방법은 버킷을 URI에서 최상위 디렉터리로 식별합니다.
예
GET /mybucket HTTP/1.1 Host: cname.domain.com
두 번째 방법은 가상 버킷 호스트 이름을 통해 버킷을 식별합니다.
예
GET / HTTP/1.1 Host: mybucket.cname.domain.com
두 번째 방법은 비용이 많이 드는 도메인 인증 및 DNS 와일드카드가 필요하기 때문에 Red Hat은 첫 번째 방법을 선호합니다.
3.3.5. S3 버킷 목록
GET /
는 사용자가 요청하는 버킷 목록을 반환합니다. GET /
는 인증된 사용자가 생성한 버킷만 반환합니다. 익명 요청은 수행할 수 없습니다.
구문
GET / HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
응답 엔터티
버킷
- 설명
- 버킷 목록에 대한 컨테이너입니다.
- 유형
- 컨테이너
bucket
- 설명
- 버킷 정보를 위한 컨테이너입니다.
- 유형
- 컨테이너
이름
- 설명
- 버킷 이름입니다.
- 유형
- 문자열
CreationDate
- 설명
- 버킷이 생성된 UTC 시간입니다.
- 유형
- 날짜
ListAllMyBucketsResult
- 설명
- 결과에 대한 컨테이너입니다.
- 유형
- 컨테이너
소유자
- 설명
-
버킷 소유자
ID
및DisplayName
의 컨테이너입니다. - 유형
- 컨테이너
ID
- 설명
- 버킷 소유자의 ID입니다.
- 유형
- 문자열
DisplayName
- 설명
- 버킷 소유자의 표시 이름입니다.
- 유형
- 문자열
3.3.6. S3 버킷 오브젝트 목록을 반환
버킷 오브젝트 목록을 반환합니다.
구문
GET /BUCKET?max-keys=25 HTTP/1.1
Host: cname.domain.com
매개 변수
접두사
- 설명
- 지정된 접두사가 포함된 오브젝트만 반환합니다.
- 유형
- 문자열
구분 기호
- 설명
- 접두사와 나머지 개체 이름의 구분 기호입니다.
- 유형
- 문자열
마커
- 설명
- 반환된 오브젝트 목록의 시작 인덱스입니다.
- 유형
- 문자열
max-keys
- 설명
- 반환할 최대 키 수입니다. 기본값은 1000입니다.
- 유형
- 정수
HTTP 응답
200
- 상태 코드
-
OK
- 설명
- 버킷이 검색되었습니다.
GET /BUCKET
은 다음 필드가 있는 버킷에 대한 컨테이너를 반환합니다.
버킷 응답 엔터티
ListBucketResult
- 설명
- 오브젝트 목록에 대한 컨테이너입니다.
- 유형
- 엔터티
이름
- 설명
- 콘텐츠가 반환될 버킷의 이름입니다.
- 유형
- 문자열
접두사
- 설명
- 오브젝트 키의 접두사입니다.
- 유형
- 문자열
마커
- 설명
- 반환된 오브젝트 목록의 시작 인덱스입니다.
- 유형
- 문자열
MaxKeys
- 설명
- 반환된 최대 키 수입니다.
- 유형
- 정수
구분 기호
- 설명
-
설정하면 접두사가 동일한 개체가
CommonPrefixes
목록에 표시됩니다. - 유형
- 문자열
IsTruncated
- 설명
-
true
인 경우 버킷 콘텐츠의 하위 집합만 반환되었습니다. - 유형
- 부울
CommonPrefixes
- 설명
- 여러 오브젝트에 동일한 접두사가 포함된 경우 이 목록에 표시됩니다.
- 유형
- 컨테이너
ListBucketResult
에는 각 오브젝트가 Contents
컨테이너 내에 있는 오브젝트가 포함되어 있습니다.
오브젝트 응답 엔터티
내용
- 설명
- 오브젝트의 컨테이너입니다.
- 유형
- 개체
키
- 설명
- 오브젝트의 키입니다.
- 유형
- 문자열
LastModified
- 설명
- 개체의 마지막으로 수정된 날짜와 시간입니다.
- 유형
- 날짜
ETag
- 설명
- 오브젝트의 MD-5 해시입니다. etag는 엔터티 태그입니다.
- 유형
- 문자열
크기
- 설명
- 오브젝트의 크기입니다.
- 유형
- 정수
StorageClass
- 설명
-
항상
STANDARD
를 반환해야합니다. - 유형
- 문자열
3.3.7. S3 새 버킷 생성
새 버킷을 생성합니다. 버킷을 생성하려면 요청을 인증하기 위해 사용자 ID와 유효한 AWS Access Key ID가 있어야 합니다. 익명 사용자로 버킷을 생성할 수 없습니다.
Constraints
일반적으로 버킷 이름은 도메인 이름 제약 조건을 따라야 합니다.
- 버킷 이름은 고유해야 합니다.
- 버킷 이름은 IP 주소로 포맷할 수 없습니다.
- 버킷 이름은 3자에서 63자 사이일 수 있습니다.
- 버킷 이름에는 대문자 또는 밑줄을 포함할 수 없습니다.
- 버킷 이름은 소문자 또는 숫자로 시작해야 합니다.
- 버킷 이름에는 대시(-)가 포함될 수 있습니다.
- 버킷 이름은 일련의 레이블이어야 합니다. 인접한 레이블은 마침표(.)로 구분됩니다. 버킷 이름에는 소문자, 숫자, 하이픈이 포함될 수 있습니다. 각 레이블은 소문자 또는 숫자로 시작하고 끝나야 합니다.
rgw_relaxed_s3_bucket_names
가 true
로 설정된 경우 위의 제약 조건은 완화됩니다. 버킷 이름은 여전히 고유해야 하며 IP 주소로 포맷할 수 없으며 최대 255자 길이의 문자, 숫자, 마침표, 대시 및 밑줄을 포함할 수 있습니다.
구문
PUT /BUCKET HTTP/1.1 Host: cname.domain.com x-amz-acl: public-read-write Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
매개 변수
x-amz-acl
- 설명
- ACL을 지정할 수 있습니다.
- 유효한 값
-
private
,public-read
,public-read-write
,authenticated-read
- 필수 항목
- 없음
HTTP 응답
제약 조건 내에서 버킷 이름이 고유하고 사용되지 않는 경우 작업이 성공적으로 수행됩니다. 동일한 이름의 버킷이 이미 존재하고 사용자가 버킷 소유자인 경우 작업이 성공합니다. 버킷 이름이 이미 사용 중인 경우 작업이 실패합니다.
409
- 상태 코드
-
BucketAlreadyExists
- 설명
- 버킷은 이미 다른 사용자의 소유권에 있습니다.
3.3.8. S3 버킷 웹 사이트
put 버킷 웹 사이트 API는 website
하위 리소스에 지정된 웹 사이트의 구성을 설정합니다. 버킷을 웹 사이트로 구성하려면 웹 사이트
하위 리소스를 버킷에 추가할 수 있습니다.
put
작업에는 S3:PutBucketWebsite
권한이 필요합니다. 기본적으로 버킷 소유자만 버킷에 연결된 웹 사이트를 구성할 수 있습니다.
구문
PUT /BUCKET?website-configuration=HTTP/1.1
예제
PUT /testbucket?website-configuration=HTTP/1.1
추가 리소스
- 이 API 호출에 대한 자세한 내용은 S3 API 를 참조하십시오.
3.3.9. S3 버킷 웹 사이트 가져오기
get 버킷 웹 사이트 API는 website
하위 리소스에 지정된 웹 사이트의 구성을 검색합니다.
가져오기
작업에는 S3:GetBucketWebsite
권한이 필요합니다. 기본적으로 버킷 소유자만 버킷 웹 사이트 구성을 읽을 수 있습니다.
구문
GET /BUCKET?website-configuration=HTTP/1.1
예제
GET /testbucket?website-configuration=HTTP/1.1
추가 리소스
- 이 API 호출에 대한 자세한 내용은 S3 API 를 참조하십시오.
3.3.10. S3 버킷 웹 사이트 삭제
버킷 웹 사이트 삭제 API는 버킷에 대한 웹 사이트 구성을 제거합니다.
구문
DELETE /BUCKET?website-configuration=HTTP/1.1
예제
DELETE /testbucket?website-configuration=HTTP/1.1
추가 리소스
- 이 API 호출에 대한 자세한 내용은 S3 API 를 참조하십시오.
3.3.11. S3 버킷 복제
put 버킷 복제 API는 버킷에 대한 복제 구성을 구성하거나 기존 구성을 대체합니다.
구문
PUT /BUCKET?replication HTTP/1.1
예
PUT /testbucket?replication HTTP/1.1
3.3.12. S3 버킷 복제 가져오기
get 버킷 복제 API는 버킷의 복제 구성을 반환합니다.
구문
GET /BUCKET?replication HTTP/1.1
예
GET /testbucket?replication HTTP/1.1
3.3.13. S3 버킷 복제 삭제
버킷 복제 삭제 API는 버킷에서 복제 구성을 삭제합니다.
구문
DELETE /BUCKET?replication HTTP/1.1
예
DELETE /testbucket?replication HTTP/1.1
3.3.14. S3 버킷 삭제
버킷을 삭제합니다. 버킷을 성공적으로 제거한 후 버킷 이름을 재사용할 수 있습니다.
구문
DELETE /BUCKET HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
HTTP 응답
204
- 상태 코드
-
콘텐츠 없음
- 설명
- 버킷이 제거되었습니다.
3.3.15. S3 버킷 라이프사이클
버킷 라이프사이클 구성을 사용하여 오브젝트를 관리하여 수명 동안 효과적으로 저장할 수 있습니다. Ceph Object Gateway의 S3 API는 AWS 버킷 라이프사이클 작업의 하위 집합을 지원합니다.
-
expiration
: 버킷 내에 있는 오브젝트의 수명을 정의합니다. 개체가 유지해야 하는 일 수 또는 만료 날짜가 소요되며 Ceph Object Gateway에서 오브젝트를 삭제합니다. 버킷에서 버전 관리를 활성화하지 않으면 Ceph Object Gateway에서 오브젝트를 영구적으로 삭제합니다. 버킷을 사용하면 Ceph Object Gateway에서 현재 버전에 대한 삭제 마커를 생성한 다음 현재 버전을 삭제합니다. -
NoncurrentVersionExpiration
: 버킷 내에서 최신이 아닌 오브젝트 버전의 수명을 정의합니다. 이 기능을 사용하려면 버킷 버전 관리를 활성화해야 합니다. 최신이 아닌 오브젝트가 있어야 하는 일 수가 걸립니다. 이 시점에서 Ceph Object Gateway는 noncurrent 오브젝트를 삭제합니다. -
NewerNoncurrentVersions
: 보유할 유효하지 않은 오브젝트 버전 수를 지정합니다. 유지할 최대 100개의 비최신 버전을 지정할 수 있습니다. 보존할 지정된 수가 100개 이상이면 최신 버전이 아닌 추가 버전이 삭제됩니다. -
AbortIncompleteMultipartUpload
: 이는 불완전한 멀티 파트 업로드가 중단되기 전에 경과해야 하는 일 수를 정의합니다. -
BlockPublicPolicy reject
:이 작업은 공용 액세스 블록입니다. 지정된 정책(액세스 지점 또는 기본 버킷에 대해)에서 공용 액세스를 허용하는 경우 액세스 포인트를 통해 생성된 PUT 액세스 권한과 PUT 버킷 정책을 호출합니다. Amazon S3 Block Public Access 기능은 Red Hat Ceph Storage 5.x/ Ceph Pacific 버전에서 사용할 수 있습니다. Amazon S3 리소스에 대한 공용 액세스를 관리하는 데 도움이 되는 액세스 포인트, 버킷 및 계정에 대한 설정을 제공합니다. 기본적으로 새 버킷, 액세스 포인트 및 오브젝트는 공용 액세스를 허용하지 않습니다. 그러나 버킷 정책, 액세스 포인트 정책 또는 오브젝트 권한을 수정하여 공용 액세스를 허용할 수 있습니다. S3 블록 공용 액세스 설정은 이러한 정책과 권한을 재정의하여 이러한 리소스에 대한 공용 액세스를 제한할 수 있습니다.
라이프사이클 구성에는 < Rule> 요소를 사용하는
하나 이상의 규칙이 포함됩니다.
예
<LifecycleConfiguration> <Rule> <Prefix/> <Status>Enabled</Status> <Expiration> <Days>10</Days> </Expiration> </Rule> </LifecycleConfiguration>
라이프사이클 규칙은 라이프사이클 규칙에 지정하는 < Filter
> 요소에 따라 버킷의 모든 오브젝트 서브 세트에 적용할 수 있습니다. 다음과 같은 여러 가지 방법으로 필터를 지정할 수 있습니다.
- 키 접두사
- 오브젝트 태그
- 키 접두사 및 하나 이상의 오브젝트 태그
키 접두사
키 이름 접두사에 따라 개체의 하위 집합에 라이프사이클 규칙을 적용할 수 있습니다. 예를 들어 < keypre/>
;를 지정하면 keypre/
:으로 시작하는 오브젝트에 적용됩니다.
<LifecycleConfiguration> <Rule> <Status>Enabled</Status> <Filter> <Prefix>keypre/</Prefix> </Filter> </Rule> </LifecycleConfiguration>
다른 키 접두사가 있는 오브젝트에 다른 라이프사이클 규칙을 적용할 수도 있습니다.
<LifecycleConfiguration> <Rule> <Status>Enabled</Status> <Filter> <Prefix>keypre/</Prefix> </Filter> </Rule> <Rule> <Status>Enabled</Status> <Filter> <Prefix>mypre/</Prefix> </Filter> </Rule> </LifecycleConfiguration>
오브젝트 태그
< Key
> 및 < Value
> 요소를 사용하여 특정 태그가 있는 오브젝트에만 라이프사이클 규칙을 적용할 수 있습니다.
<LifecycleConfiguration> <Rule> <Status>Enabled</Status> <Filter> <Tag> <Key>key</Key> <Value>value</Value> </Tag> </Filter> </Rule> </LifecycleConfiguration>
접두사 및 하나 이상의 태그
라이프사이클 규칙에서는 키 접두사와 하나 이상의 태그를 기반으로 필터를 지정할 수 있습니다. < And> 요소에서
래핑되어야 합니다. 필터는 접두사가 한 개, 0개 이상의 태그만 포함할 수 있습니다.
<LifecycleConfiguration> <Rule> <Status>Enabled</Status> <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> </Rule> </LifecycleConfiguration>
추가 리소스
- 버킷 라이프사이클에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 S3 GET 버킷 라이프사이클 섹션을 참조하십시오.
- 버킷 라이프사이클 생성에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 S3 생성 또는 버킷 라이프사이클 섹션을 참조하십시오.
- 버킷 라이프사이클 삭제에 대한 자세한 내용은 Red Hat Ceph Storage Developer Guide 에서 S3 Delete a bucket Lifecycle secton을 참조하십시오.
3.3.16. S3 GET 버킷 라이프사이클
버킷 라이프사이클을 가져오려면 GET
을 사용하고 대상 버킷을 지정합니다.
구문
GET /BUCKET?lifecycle HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
요청 헤더
일반적인 요청 헤더에 대한 자세한 내용은 부록 B 의 S3 공통 요청 헤더를 참조하십시오.
응답
응답에는 버킷 라이프사이클 및 해당 요소가 포함됩니다.
3.3.17. S3 버킷 라이프사이클 생성 또는 교체
버킷 라이프사이클을 생성하거나 교체하려면 PUT
을 사용하고 대상 버킷과 라이프사이클 구성을 지정합니다. Ceph Object Gateway는 S3 라이프사이클 기능의 하위 집합만 지원합니다.
구문
PUT /BUCKET?lifecycle HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET <LifecycleConfiguration> <Rule> <Expiration> <Days>10</Days> </Expiration> </Rule> ... <Rule> </Rule> </LifecycleConfiguration>
요청 헤더
content-md5
- 설명
- 메시지의 base64로 인코딩된 MD-5 해시
- 유효한 값
- string 기본값이나 제약 조건이 없습니다.
- 필수 항목
- 없음
추가 리소스
- Amazon S3 공통 요청 헤더에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 부록 B의 S3 공통 요청 헤더 섹션을 참조하십시오.
- Amazon S3 버킷 라이프사이클 에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 S3 버킷 라이프사이클 섹션을 참조하십시오.
3.3.18. S3 버킷 라이프사이클 삭제
버킷 라이프사이클을 삭제하려면 DELETE
를 사용하고 대상 버킷을 지정합니다.
구문
DELETE /BUCKET?lifecycle HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
요청 헤더
요청에는 특수 요소가 포함되어 있지 않습니다.
응답
응답은 공통 응답 상태를 반환합니다.
추가 리소스
- Amazon S3 공통 요청 헤더에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 부록 B의 S3 공통 요청 헤더 섹션을 참조하십시오.
- Amazon S3 공통 응답 상태 코드에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 부록 C에서 S3 공통 응답 상태 코드 섹션을 참조하십시오.
3.3.19. S3 버킷 위치 가져오기
버킷의 영역 그룹을 검색합니다. 이를 호출하려면 사용자가 버킷 소유자여야 합니다. PUT 요청 중에 LocationConstraint
를 제공하여 버킷을 영역 그룹으로 제한할 수 있습니다.
다음과 같이 location
하위 리소스를 버킷 리소스에 추가합니다.
구문
GET /BUCKET?location HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
응답 엔터티
LocationConstraint
- 설명
- 버킷이 있는 영역 그룹(기본 영역 그룹의 빈 문자열)입니다.
- 유형
- 문자열
3.3.20. S3 버킷 버전 관리
버킷의 버전 상태를 검색합니다. 이를 호출하려면 사용자가 버킷 소유자여야 합니다.
다음과 같이 버전 관리
하위 리소스를 버킷 리소스에 추가합니다.
구문
GET /BUCKET?versioning HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
3.3.21. S3 버킷 버전 관리
이 하위 리소스는 기존 버킷의 버전 상태를 설정합니다. 버전 관리 상태를 설정하려면 사용자가 버킷 소유자여야 합니다. 버킷에 버전 관리 상태가 설정되지 않은 경우 버전 관리 상태가 없습니다. GET 버전 관리 요청을 수행해도 버전 관리 상태 값은 반환되지 않습니다.
버킷 버전 관리 상태 설정:
enabled
: 버킷의 오브젝트에 대한 버전 관리를 활성화합니다. 버킷에 추가된 모든 오브젝트에는 고유한 버전 ID가 수신됩니다. 일시 중단됨
: 버킷의 오브젝트에 대한 버전 관리를 비활성화합니다. 버킷에 추가된 모든 오브젝트에는 버전 ID null이 수신됩니다.
구문
PUT /BUCKET?versioning HTTP/1.1
예
PUT /testbucket?versioning HTTP/1.1
버킷 요청 엔터티
VersioningConfiguration
- 설명
- 요청에 대한 컨테이너입니다.
- 유형
- 컨테이너
상태
- 설명
- 버킷의 버전 상태를 설정합니다. 유효한 값: 일시 중지/활성화됨
- 유형
- 문자열
3.3.22. S3 버킷 액세스 제어 목록 가져오기
버킷 액세스 제어 목록을 검색합니다. 사용자는 버킷 소유자이거나 버킷에 READ_ACP
권한이 부여되어야 합니다.
다음과 같이 acl
하위 리소스를 버킷 요청에 추가합니다.
구문
GET /BUCKET?acl HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
응답 엔터티
AccessControlPolicy
- 설명
- 응답을 위한 컨테이너입니다.
- 유형
- 컨테이너
AccessControlList
- 설명
- ACL 정보에 대한 컨테이너입니다.
- 유형
- 컨테이너
소유자
- 설명
-
버킷 소유자
ID
및DisplayName
의 컨테이너입니다. - 유형
- 컨테이너
ID
- 설명
- 버킷 소유자의 ID입니다.
- 유형
- 문자열
DisplayName
- 설명
- 버킷 소유자의 표시 이름입니다.
- 유형
- 문자열
부여
- 설명
-
Grantee
및Permission
에 대한 컨테이너입니다. - 유형
- 컨테이너
부여자
- 설명
-
권한 부여를 수신하는 사용자의
DisplayName
및ID
에 대한 컨테이너입니다. - 유형
- 컨테이너
권한
- 설명
-
Grantee
버킷에 부여된 권한입니다. - 유형
- 문자열
3.3.23. S3 버킷 액세스 제어 목록 추가
액세스 제어를 기존 버킷으로 설정합니다. 사용자는 버킷 소유자이거나 버킷에 대한 WRITE_ACP
권한이 부여되어야 합니다.
다음과 같이 acl
하위 리소스를 버킷 요청에 추가합니다.
구문
PUT /BUCKET?acl HTTP/1.1
요청 엔터티
S3 다중 파트 업로드 목록
AccessControlList
- 설명
- ACL 정보에 대한 컨테이너입니다.
- 유형
- 컨테이너
소유자
- 설명
-
버킷 소유자
ID
및DisplayName
의 컨테이너입니다. - 유형
- 컨테이너
ID
- 설명
- 버킷 소유자의 ID입니다.
- 유형
- 문자열
DisplayName
- 설명
- 버킷 소유자의 표시 이름입니다.
- 유형
- 문자열
부여
- 설명
-
Grantee
및Permission
에 대한 컨테이너입니다. - 유형
- 컨테이너
부여자
- 설명
-
권한 부여를 수신하는 사용자의
DisplayName
및ID
에 대한 컨테이너입니다. - 유형
- 컨테이너
권한
- 설명
-
Grantee
버킷에 부여된 권한입니다. - 유형
- 문자열
3.3.24. S3 버킷 캐시 가져오기
버킷에 대한 cors 구성 정보를 검색합니다. 사용자는 버킷 소유자이거나 버킷에 READ_ACP
권한이 부여되어야 합니다.
아래에 표시된 대로 cors
하위 리소스를 버킷 요청에 추가합니다.
구문
GET /BUCKET?cors HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
3.3.25. S3 bucket cors 설치
버킷의 cors 구성을 설정합니다. 사용자는 버킷 소유자이거나 버킷에 READ_ACP
권한이 부여되어야 합니다.
아래에 표시된 대로 cors
하위 리소스를 버킷 요청에 추가합니다.
구문
PUT /BUCKET?cors HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
3.3.26. S3 버킷 캐시 삭제
버킷에 설정된 cors 구성 정보를 삭제합니다. 사용자는 버킷 소유자이거나 버킷에 READ_ACP
권한이 부여되어야 합니다.
아래에 표시된 대로 cors
하위 리소스를 버킷 요청에 추가합니다.
구문
DELETE /BUCKET?cors HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
3.3.27. S3 버킷 오브젝트 버전 나열
버킷 내의 모든 오브젝트 버전에 대한 메타데이터 목록을 반환합니다. 버킷에 대한 READ 액세스 권한이 필요합니다.
다음과 같이 버전
하위 리소스를 버킷 요청에 추가합니다.
구문
GET /BUCKET?versions HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
GET /BUCKET?versions
에 대한 매개변수를 지정할 수 있지만 필요한 것은 아닙니다.
매개 변수
접두사
- 설명
- 지정된 접두사가 포함된 키를 사용하여 진행 중인 업로드를 반환합니다.
- 유형
- 문자열
구분 기호
- 설명
- 접두사와 나머지 개체 이름의 구분 기호입니다.
- 유형
- 문자열
key-marker
- 설명
- 업로드 목록에 대한 시작 마커입니다.
- 유형
- 문자열
max-keys
- 설명
- 진행 중인 최대 업로드 수입니다. 기본값은 1000입니다.
- 유형
- 정수
version-id-marker
- 설명
- 목록을 시작할 오브젝트 버전을 지정합니다.
- 유형
- 문자열
응답 엔터티
KeyMarker
- 설명
-
key-marker
요청 매개변수(있는 경우)로 지정된 키 마커입니다. - 유형
- 문자열
NextKeyMarker
- 설명
-
IsTruncated
가true
인 경우 후속 요청에 사용할 주요 마커입니다. - 유형
- 문자열
NextUploadIdMarker
- 설명
-
IsTruncated
가true
인 경우 후속 요청에 사용할 업로드 ID 마커입니다. - 유형
- 문자열
IsTruncated
- 설명
-
true
인 경우 버킷의 업로드 콘텐츠 서브 세트만 반환되었습니다. - 유형
- 부울
크기
- 설명
- 업로드된 부분의 크기입니다.
- 유형
- 정수
DisplayName
- 설명
- 소유자의 표시 이름입니다.
- 유형
- 문자열
ID
- 설명
- 소유자의 ID입니다.
- 유형
- 문자열
소유자
- 설명
-
오브젝트를 소유한 사용자의
ID
및DisplayName
에 대한 컨테이너입니다. - 유형
- 컨테이너
StorageClass
- 설명
-
결과 오브젝트를 저장하는 데 사용되는 메서드입니다.
STANDARD
또는REDUCED_REDUNDANCY
- 유형
- 문자열
버전
- 설명
- 버전 정보의 컨테이너입니다.
- 유형
- 컨테이너
versionId
- 설명
- 오브젝트의 버전 ID입니다.
- 유형
- 문자열
versionIdMarker
- 설명
- 잘린 응답의 키의 마지막 버전입니다.
- 유형
- 문자열
3.3.28. S3 헤드 버킷
버킷에서 HEAD를 호출하여 존재하는지 여부와 호출자에 액세스 권한이 있는지 확인합니다. 버킷이 존재하고 호출자에 권한이 있는 경우 200 OK
를 반환합니다. 버킷이 존재하지 않는 경우 404 Not Found
; 및, 버킷이 존재하지만 호출자에 액세스 권한이 없는 경우 403 Forbidden
을 반환합니다.
구문
HEAD /BUCKET HTTP/1.1 Host: cname.domain.com Date: date Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
3.3.29. S3 다중 파트 업로드 목록
GET /?uploads
는 현재 진행 중인 멀티 파트 업로드, 즉 애플리케이션이 다중 파트 업로드를 시작하지만 서비스는 아직 모든 업로드를 완료하지 않은 목록을 반환합니다.
구문
GET /BUCKET?uploads HTTP/1.1
GET /BUCKET?uploads
에 대한 매개변수를 지정할 수 있지만 이 매개변수는 필요하지 않습니다.
매개 변수
접두사
- 설명
- 지정된 접두사가 포함된 키를 사용하여 진행 중인 업로드를 반환합니다.
- 유형
- 문자열
구분 기호
- 설명
- 접두사와 나머지 개체 이름의 구분 기호입니다.
- 유형
- 문자열
key-marker
- 설명
- 업로드 목록에 대한 시작 마커입니다.
- 유형
- 문자열
max-keys
- 설명
- 진행 중인 최대 업로드 수입니다. 기본값은 1000입니다.
- 유형
- 정수
max-uploads
- 설명
- 다중 파트 업로드의 최대 수입니다. 범위는 1-1000입니다. 기본값은 1000입니다.
- 유형
- 정수
version-id-marker
- 설명
-
key-marker
가 지정되지 않은 경우 무시됩니다.ID
에 따라 사전순으로 나열할 첫 번째 업로드의ID
를 지정합니다. - 유형
- 문자열
응답 엔터티
ListMultipartUploadsResult
- 설명
- 결과를 위한 컨테이너입니다.
- 유형
- 컨테이너
ListMultipartUploadsResult.Prefix
- 설명
-
접두사 request 매개변수(있는 경우)로 지정된
접두사
입니다. - 유형
- 문자열
bucket
- 설명
- 버킷 콘텐츠를 수신할 버킷입니다.
- 유형
- 문자열
KeyMarker
- 설명
-
key-marker
요청 매개변수(있는 경우)로 지정된 키 마커입니다. - 유형
- 문자열
UploadIdMarker
- 설명
-
upload-id-marker
요청 매개변수(있는 경우)로 지정된 마커입니다. - 유형
- 문자열
NextKeyMarker
- 설명
-
IsTruncated
가true
인 경우 후속 요청에 사용할 주요 마커입니다. - 유형
- 문자열
NextUploadIdMarker
- 설명
-
IsTruncated
가true
인 경우 후속 요청에 사용할 업로드 ID 마커입니다. - 유형
- 문자열
MaxUploads
- 설명
-
max-uploads
요청 매개변수로 지정된 최대 업로드입니다. - 유형
- 정수
구분 기호
- 설명
-
설정하면 접두사가 동일한 개체가
CommonPrefixes
목록에 표시됩니다. - 유형
- 문자열
IsTruncated
- 설명
-
true
인 경우 버킷의 업로드 콘텐츠 서브 세트만 반환되었습니다. - 유형
- 부울
업로드
- 설명
-
키
,UploadId
,InitiatorOwner
,StorageClass
및Initiated
요소를 위한 컨테이너입니다. - 유형
- 컨테이너
키
- 설명
- 다중 파트 업로드가 완료되면 오브젝트의 키입니다.
- 유형
- 문자열
UploadId
- 설명
-
다중 파트 업로드를 식별하는
ID
입니다. - 유형
- 문자열
이니시에이터
- 설명
-
업로드를 시작한 사용자의
ID
및DisplayName
을 포함합니다. - 유형
- 컨테이너
DisplayName
- 설명
- 이니시에이터의 표시 이름입니다.
- 유형
- 문자열
ID
- 설명
- 이니시에이터의 ID입니다.
- 유형
- 문자열
소유자
- 설명
-
업로드된 오브젝트를 소유한 사용자의
ID
및DisplayName
에 대한 컨테이너입니다. - 유형
- 컨테이너
StorageClass
- 설명
-
결과 오브젝트를 저장하는 데 사용되는 메서드입니다.
STANDARD
또는REDUCED_REDUNDANCY
- 유형
- 문자열
시작됨
- 설명
- 사용자가 업로드를 시작한 날짜 및 시간입니다.
- 유형
- 날짜
CommonPrefixes
- 설명
- 여러 오브젝트에 동일한 접두사가 포함된 경우 이 목록에 표시됩니다.
- 유형
- 컨테이너
CommonPrefixes.Prefix
- 설명
-
prefix
request 매개 변수에 정의된 접두사 뒤에 있는 키의 하위 문자열입니다. - 유형
- 문자열
3.3.30. S3 버킷 정책
Ceph Object Gateway는 버킷에 적용된 Amazon S3 정책 언어의 하위 집합을 지원합니다.
생성 및 제거
Ceph Object Gateway는 radosgw-admin
CLI 툴을 사용하는 대신 표준 S3 작업을 통해 S3 버킷 정책을 관리합니다.
관리자는 s3cmd
명령을 사용하여 정책을 설정하거나 삭제할 수 있습니다.
예
$ cat > examplepol { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": ["arn:aws:iam::usfolks:user/fred"]}, "Action": "s3:PutObjectAcl", "Resource": [ "arn:aws:s3:::happybucket/*" ] }] } $ s3cmd setpolicy examplepol s3://happybucket $ s3cmd delpolicy s3://happybucket
제한
Ceph Object Gateway는 다음 S3 작업만 지원합니다.
-
s3:AbortMultipartUpload
-
s3:CreateBucket
-
s3:DeleteBucketPolicy
-
s3:DeleteBucket
-
s3:DeleteBucketWebsite
-
s3:DeleteBucketReplication
-
s3:DeleteReplicationConfiguration
-
s3:DeleteObject
-
s3:DeleteObjectVersion
-
s3:GetBucketAcl
-
s3:GetBucketCORS
-
s3:GetBucketLocation
-
s3:GetBucketPolicy
-
s3:GetBucketRequestPayment
-
s3:GetBucketVersioning
-
s3:GetBucketWebsite
-
s3:GetBucketReplication
-
s3:GetReplicationConfiguration
-
s3:GetLifecycleConfiguration
-
s3:GetObjectAcl
-
s3:GetObject
-
s3:GetObjectTorrent
-
s3:GetObjectVersionAcl
-
s3:GetObjectVersion
-
s3:GetObjectVersionTorrent
-
s3:ListAllMyBuckets
-
s3:ListBucketMultiPartUploads
-
s3:ListBucket
-
s3:ListBucketVersions
-
s3:ListMultipartUploadParts
-
s3:PutBucketAcl
-
s3:PutBucketCORS
-
s3:PutBucketPolicy
-
s3:PutBucketRequestPayment
-
s3:PutBucketVersioning
-
s3:PutBucketWebsite
-
s3:PutBucketReplication
-
s3:PutReplicationConfiguration
-
s3:PutLifecycleConfiguration
-
s3:PutObjectAcl
-
s3:PutObject
-
s3:PutObjectVersionAcl
Ceph Object Gateway는 사용자, 그룹 또는 역할에 대한 정책 설정을 지원하지 않습니다.
Ceph Object Gateway는 Amazon three-digit 계정 ID 대신 RGW 테넌트
ID를 사용합니다. AWS(Amazon Web Service) S3과 Ceph Object Gateway S3 간에 정책을 사용하려는 Ceph Object Gateway 관리자는 사용자를 생성할 때 Amazon 계정 ID를 테넌트 ID로 사용해야 합니다.
AWS S3를 사용하면 모든 테넌트가 단일 네임스페이스를 공유합니다. 반면 Ceph Object Gateway는 모든 테넌트에 버킷의 자체 네임스페이스를 제공합니다. 현재 다른 테넌트에 속하는 버킷에 액세스하려는 Ceph Object Gateway 클라이언트는 S3 요청에서 테넌트:bucket
으로 처리해야 합니다.
AWS에서 버킷 정책은 다른 계정에 대한 액세스 권한을 부여할 수 있으며 해당 계정 소유자는 사용자 권한이 있는 개별 사용자에게 액세스 권한을 부여할 수 있습니다. Ceph Object Gateway는 아직 사용자, 역할 및 그룹 권한을 지원하지 않으므로 계정 소유자가 개별 사용자에게 직접 액세스 권한을 부여해야 합니다.
버킷에 대한 전체 계정 액세스 권한을 부여하면 해당 계정의 모든 사용자에게 액세스 권한이 부여됩니다.
버킷 정책은 문자열 보간을 지원하지 않습니다.
Ceph Object Gateway는 다음 조건 키를 지원합니다.
-
aws:CurrentTime
-
aws:EpochTime
-
aws:PrincipalType
-
aws:Referer
-
aws:SecureTransport
-
aws:SourceIp
-
aws:UserAgent
-
AWS:username
Ceph Object Gateway 는 ListBucket
작업에 대해 다음 조건 키만 지원합니다.
-
s3:prefix
-
s3:delimiter
-
s3:max-keys
Swift에 미치는 영향
Ceph Object Gateway는 Swift API에서 버킷 정책을 설정하는 기능을 제공하지 않습니다. 그러나 S3 API로 설정된 버킷 정책은 Swift 및 S3 작업을 제어합니다.
Ceph Object Gateway는 정책에 지정된 보안 주체와 Swift 자격 증명과 일치합니다.
3.3.31. S3 버킷에 요청 결제 구성 가져오기
requestPayment
하위 리소스를 사용하여 버킷의 요청 결제 구성을 반환합니다. 사용자는 버킷 소유자이거나 버킷에 READ_ACP
권한이 부여되어야 합니다.
다음과 같이 requestPayment
하위 리소스를 버킷 요청에 추가합니다.
구문
GET /BUCKET?requestPayment HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
3.3.32. S3 버킷에 요청 결제 구성 설정
requestPayment
하위 리소스를 사용하여 버킷의 요청 결제 구성을 설정합니다. 기본적으로 버킷 소유자는 버킷에서 다운로드 비용을 지불합니다. 이 구성 매개변수를 사용하면 버킷 소유자가 다운로드를 요청하는 사람이 요청 및 버킷에서 데이터 다운로드에 대해 청구되도록 지정할 수 있습니다.
다음과 같이 requestPayment
하위 리소스를 버킷 요청에 추가합니다.
구문
PUT /BUCKET?requestPayment HTTP/1.1
Host: cname.domain.com
요청 엔터티
Payer
- 설명
- 다운로드 및 요청 요금을 지불하는 사용자를 지정합니다.
- 유형
- enum
requestPaymentConfiguration
- 설명
-
Payer
용 컨테이너입니다. - 유형
- 컨테이너
3.3.33. 멀티 테넌트 버킷 작업
클라이언트 애플리케이션이 버킷에 액세스하면 항상 특정 사용자의 인증 정보로 작동합니다. Red Hat Ceph Storage 클러스터에서 모든 사용자는 테넌트에 속합니다. 결과적으로 테넌트가 명시적으로 지정되지 않은 경우 모든 버킷 작업에는 해당 컨텍스트에 암시적 테넌트가 있습니다. 따라서 참조된 버킷과 동일한 테넌트에 속하는 경우 멀티 테넌시는 이전 릴리스와 완전히 호환됩니다.
명시적 테넌트를 지정하는 데 사용되는 확장 기능은 사용된 프로토콜 및 인증 시스템에 따라 다릅니다.
다음 예에서 콜론 문자는 테넌트와 버킷을 구분합니다. 따라서 샘플 URL은 다음과 같습니다.
https://rgw.domain.com/tenant:bucket
반면 간단한 Python 예제에서는 버킷 메서드 자체에서 테넌트와 버킷을 구분합니다.
예
from boto.s3.connection import S3Connection, OrdinaryCallingFormat c = S3Connection( aws_access_key_id="TESTER", aws_secret_access_key="test123", host="rgw.domain.com", calling_format = OrdinaryCallingFormat() ) bucket = c.get_bucket("tenant:bucket")
호스트 이름에 콜론 또는 버킷 이름에 아직 유효하지 않은 다른 구분자를 포함할 수 없기 때문에 멀티 테넌시를 사용하는 S3 스타일 하위 도메인을 사용할 수 없습니다. 마침표를 사용하면 모호한 구문이 생성됩니다. 따라서 bucket-in-URL-path
형식을 다중 테넌시와 함께 사용해야 합니다.
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드 의 사용자 관리에서 멀티 테넌시 섹션을 참조하십시오.
3.3.34. S3 블록 공용 액세스
S3 Block Public Access 기능을 사용하여 버킷과 사용자를 설정하여 Red Hat Ceph Storage 오브젝트 스토리지 S3 리소스에 대한 공용 액세스를 관리할 수 있습니다.
이 기능을 사용하여 버킷 정책, 액세스 포인트 정책 및 오브젝트 권한을 재정의하여 공용 액세스를 허용할 수 있습니다. 기본적으로 새 버킷, 액세스 포인트 및 오브젝트는 공용 액세스를 허용하지 않습니다.
Ceph Object Gateway의 S3 API는 AWS 공용 액세스 설정의 하위 집합을 지원합니다.
BlockPublicPolicy
: 사용자가 액세스 포인트 및 버킷 정책을 관리할 수 있도록 하는 설정을 정의합니다. 이 설정을 사용하면 사용자가 버킷 또는 포함된 오브젝트를 공개적으로 공유할 수 없습니다. 기존 액세스 지점 및 버킷 정책은 이 설정을 활성화하면 영향을 받지 않습니다. 이 옵션을TRUE
로 설정하면 S3가 발생합니다.- PUT Bucket 정책에 대한 호출을 거부하려면 다음을 수행합니다.
- 모든 버킷의 동일한 계정 액세스 지점에 대해 PUT 액세스 포인트 정책에 대한 호출을 거부하려면 다음을 수행합니다.
사용자가 특정 버킷의 블록 공용 액세스 설정을 변경할 수 없도록 사용자 수준에서 이 설정을 적용합니다.
TRUE
설정은 지정된 정책에서 공용 액세스를 허용하는 경우에만 작동합니다.
-
RestrictPublicBuckets
: 공용 정책으로 버킷 또는 액세스 지점에 대한 액세스를 제한하는 설정을 정의합니다. 이 제한은 버킷 소유자 계정 및 액세스 지점 소유자 계정 내의 AWS 서비스 주체 및 권한 부여 사용자에게만 적용됩니다. 이렇게 하면 계정 내 사용자가 액세스 포인트 또는 버킷을 관리할 수 있지만 지정된 경우를 제외하고 액세스 지점 또는 버킷에 대한 계정 간 액세스가 차단됩니다. 이 설정을 활성화하면 기존 액세스 지점 또는 버킷 정책에는 영향을 미치지 않습니다. 이는 Amazon S3가 특정 계정에 대한 공용 위임을 포함하여 모든 공용 액세스 지점 또는 버킷 정책에서 파생된 공용 액세스 및 교차 계정 액세스를 차단하는 경우에만 정의합니다.
ACL(액세스 제어 목록)은 현재 Red Hat Ceph Storage에서 지원되지 않습니다.
달리 정의하지 않는 한 버킷 정책은 공용으로 간주됩니다. 버킷 정책의 공용 액세스를 차단하려면 다음 중 하나 이상에 대해 고정된 값에만 액세스 권한을 부여해야 합니다.
고정 값에는 와일드카드(*
) 또는 AWS ID 및 액세스 관리 정책 변수가 포함되어 있지 않습니다.
- AWS 주체, 사용자, 역할 또는 서비스 주체
-
aws:SourceIp
를 사용한 CIDR(Classless Inter-Domain Routings) 세트 -
aws:SourceArn
-
aws:SourceVpc
-
aws:SourceVpce
-
aws:SourceOwner
-
aws:SourceAccount
-
s3:x-amz-server-side-encryption-aws-kms-key-id
-
패턴 외부
AWS:userid
:ROLEID:*
s3:DataAccessPointArn
참고버킷 정책에서 사용하는 경우 계정 ID가 수정된 한 이 값은 정책을 공용으로 렌더링하지 않고 액세스 포인트 이름에 대한 와일드카드를 포함할 수 있습니다.
-
s3:DataAccessPointPointAccount
다음 예제 정책은 공용으로 간주됩니다.
예
{ "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}} }
정책을 공용이 아닌 상태로 만들려면 고정 값이 있는 조건 키를 포함합니다.
예
{ "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}} }
추가 리소스
- PublicAccessBlock 가져오기에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 S3 GET 'PublicAccessBlock' 섹션을 참조하십시오.
- PublicAccessBlock 생성 또는 수정에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 S3 PUT 'PublicAccessBlock' 섹션을 참조하십시오.
- PublicAccessBlock 삭제에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 S3 Delete 'PublicAccessBlock' 섹션을 참조하십시오.
- 버킷 정책에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 S3 버킷 정책 섹션을 참조하십시오.
- Amazon Simple Storage Service( S3) 설명서의 Amazon S3 스토리지에 대한 공용 액세스 차단 섹션을 참조하십시오.
3.3.35. S3 GET PublicAccessBlock
S3 Block Public Access 기능을 구성하려면 GET
을 사용하고 대상 AWS 계정을 지정합니다.
구문
GET /v20180820/configuration/publicAccessBlock HTTP/1.1 Host: cname.domain.com x-amz-account-id: _ACCOUNTID_
요청 헤더
일반적인 요청 헤더에 대한 자세한 내용은 부록 B 의 S3 공통 요청 헤더를 참조하십시오.
응답
응답은 HTTP 200 응답이며 XML 형식으로 반환됩니다.
3.3.36. S3 PUT PublicAccessBlock
이를 사용하여 S3 버킷에 대한 PublicAccessBlock
구성을 생성하거나 수정합니다.
이 작업을 사용하려면 s3:PutBucketPublicAccessBlock
권한이 있어야 합니다.
PublicAccessBlock
구성이 버킷과 계정 간에 다른 경우 Amazon S3는 버킷 수준 및 계정 수준 설정의 가장 제한적인 조합을 사용합니다.
구문
PUT /?publicAccessBlock HTTP/1.1 Host: Bucket.s3.amazonaws.com Content-MD5: ContentMD5 x-amz-sdk-checksum-algorithm: ChecksumAlgorithm x-amz-expected-bucket-owner: ExpectedBucketOwner <?xml version="1.0" encoding="UTF-8"?> <PublicAccessBlockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <BlockPublicAcls>boolean</BlockPublicAcls> <IgnorePublicAcls>boolean</IgnorePublicAcls> <BlockPublicPolicy>boolean</BlockPublicPolicy> <RestrictPublicBuckets>boolean</RestrictPublicBuckets> </PublicAccessBlockConfiguration>
요청 헤더
일반적인 요청 헤더에 대한 자세한 내용은 부록 B 의 S3 공통 요청 헤더를 참조하십시오.
응답
응답은 HTTP 200 응답이며 빈 HTTP 본문으로 반환됩니다.
3.3.37. S3 PublicAccessBlock
삭제
이를 사용하여 S3 버킷의 PublicAccessBlock
구성을 삭제합니다.
구문
DELETE /v20180820/configuration/publicAccessBlock HTTP/1.1 Host: s3-control.amazonaws.com x-amz-account-id: AccountId
요청 헤더
일반적인 요청 헤더에 대한 자세한 내용은 부록 B 의 S3 공통 요청 헤더를 참조하십시오.
응답
응답은 HTTP 200 응답이며 빈 HTTP 본문으로 반환됩니다.