Data & Analytics > Data Lake Storage > Amazon S3 호환 API 가이드 > Bucket
버킷을 생성합니다. Data Lake Storage 서비스의 버킷 이름은 리전에서 고유합니다.
PUT /{bucket} HTTP/1.1
<?xml version="1.0" encoding="UTF-8"?>
<CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<LocationConstraint>KR3</LocationConstraint>
</CreateBucketConfiguration>
Data Lake Storage API에서 공통으로 사용하는 헤더 정보는 Data Lake Storage API 요청 헤더 가이드를 참고하세요.
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| bucket | Path | String | Y | 버킷 이름 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| CreateBucketConfiguration | Object | Y | 생성할 버킷 정보 |
| CreateBucketConfiguration.LocationConstraint | String | Conditional | 리전 코드, 미입력 시 엔드포인트에 맞는 리전 정보 적용 |
HTTP/1.1 200 OK
Location: "/{bucket}"
버킷을 삭제합니다.
DELETE /{bucket} HTTP/1.1
Data Lake Storage API에서 공통으로 사용하는 헤더 정보는 Data Lake Storage API 요청 헤더 가이드를 참고하세요.
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| bucket | Path | String | Y | 버킷 이름 |
HTTP/1.1 204 No Content
버킷에 등록된 정책(Bucket Policy)을 삭제합니다.
DELETE /{bucket}?policy HTTP/1.1
Data Lake Storage API에서 공통으로 사용하는 헤더 정보는 Data Lake Storage API 요청 헤더 가이드를 참고하세요.
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| bucket | Path | String | Y | 버킷 이름 |
HTTP/1.1 204 No Content
버킷의 액세스 제어 목록(ACL)을 조회합니다.
GET /{bucket}?acl HTTP/1.1
Data Lake Storage API에서 공통으로 사용하는 헤더 정보는 Data Lake Storage API 요청 헤더 가이드를 참고하세요.
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| bucket | Path | String | Y | 버킷 이름 |
HTTP/1.1 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlPolicy>
<Owner>
<DisplayName>String</DisplayName>
<ID>String</ID>
</Owner>
<AccessControlList>
<Grant>
<Grantee>
<xsi:type>string</xsi:type>
<DisplayName>String</DisplayName>
<ID>String</ID>
</Grantee>
<Permission>String</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
| 이름 | 타입 | 설명 |
|---|---|---|
| AccessControlPolicy | Object | 버킷 ACL 조회 결과의 루트 요소 |
| AccessControlPolicy.Owner | Object | 버킷 소유자 정보 |
| AccessControlPolicy.Owner.DisplayName | String | 버킷 소유자 이름 |
| AccessControlPolicy.Owner.ID | String | 버킷 소유자 ID |
| AccessControlPolicy.AccessControlList | Object | 권한 부여 목록 |
| AccessControlPolicy.AccessControlList.Grant | Array | 개별 권한 부여 항목 |
| AccessControlPolicy.AccessControlList.Grant.Grantee | Object | 권한을 부여받은 대상 정보 |
| AccessControlPolicy.AccessControlList.Grant.Grantee.xsi:type | String | 권한을 부여받은 대상 유형. CanonicalUser만 지원 |
| AccessControlPolicy.AccessControlList.Grant.Grantee.DisplayName | String | 권한을 부여받은 대상 이름 |
| AccessControlPolicy.AccessControlList.Grant.Grantee.ID | String | 권한을 부여받은 대상 ID |
| AccessControlPolicy.AccessControlList.Grant.Permission | String | 부여된 권한. FULL_CONTROL만 지원 |
버킷에 등록된 정책(Bucket Policy)을 조회합니다. 정책 문서가 JSON 형식의 응답 본문으로 그대로 반환됩니다.
GET /{bucket}?policy HTTP/1.1
Data Lake Storage API에서 공통으로 사용하는 헤더 정보는 Data Lake Storage API 요청 헤더 가이드를 참고하세요.
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| bucket | Path | String | Y | 버킷 이름 |
등록된 정책 문서가 JSON 본문으로 반환됩니다. 정책 문서의 각 필드에 대한 설명은 PutBucketPolicy를 참고하세요.
HTTP/1.1 200 OK
Content-Type: application/json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProjectMembersFullObjectAccess",
"Effect": "Allow",
"Principal": { "NHN": "arn:nhn:cloud:iam:{appKey}:user/*" },
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket"],
"Resource": ["*"]
}
]
}
알아두기
버킷에 정책이 등록되어 있지 않으면 404 NoSuchBucketPolicy 오류가 반환됩니다.
버킷 목록을 조회합니다.
GET /?max-buckets=20 HTTP/1.1
Data Lake Storage API에서 공통으로 사용하는 헤더 정보는 Data Lake Storage API 요청 헤더 가이드를 참고하세요.
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| continuation-token | Parameter | String | N | 다음 페이지 조회를 위한 연속 토큰 |
| max-buckets | Parameter | Integer | N | 반환할 최대 버킷 수 |
| prefix | Parameter | String | N | 버킷 이름 필터링 접두어 |
HTTP/1.1 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult>
<Buckets>
<Bucket>
<BucketRegion>string</BucketRegion>
<CreationDate>timestamp</CreationDate>
<Name>string</Name>
</Bucket>
</Buckets>
<Owner>
<DisplayName>string</DisplayName>
<ID>string</ID>
</Owner>
<ContinuationToken>string</ContinuationToken>
<Prefix></Prefix>
</ListAllMyBucketsResult>
| 이름 | 타입 | 설명 |
|---|---|---|
| ListAllMyBucketsResult | Object | 버킷 목록 조회 결과 |
| ListAllMyBucketsResult.Buckets | Object | 버킷 정보 |
| ListAllMyBucketsResult.Buckets.BucketRegion | String | 버킷이 위치한 리전 |
| ListAllMyBucketsResult.Buckets.CreationDate | Timestamp | 버킷 생성 일시 (ISO 8601) |
| ListAllMyBucketsResult.Buckets.Name | String | 버킷 이름 |
| ListAllMyBucketsResult.Owner | Object | 버킷 소유자 정보 |
| ListAllMyBucketsResult.Owner.DisplayName | String | 소유자 표시 이름 |
| ListAllMyBucketsResult.Owner.ID | String | 소유자 ID |
| ListAllMyBucketsResult.ContinuationToken | String | 다음 페이지 조회용 연속 토큰 (마지막 페이지면 미포함) |
| ListAllMyBucketsResult.Prefix | String | 요청에 사용된 접두어 필터 |
버킷에 정책(Bucket Policy)을 등록하거나 기존 정책을 교체합니다. 버킷 정책은 JSON 형식의 정책 문서로, 어떤 주체(Principal)가 어떤 리소스(Resource)의 어떤 작업(Action)을 허용 또는 거부할지 정의합니다.
PUT /{bucket}?policy HTTP/1.1
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStatement",
"Effect": "Allow",
"Principal": { "NHN": "arn:nhn:cloud:iam:{appKey}:user/{memberUuid}" },
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": ["*"]
}
]
}
Data Lake Storage API에서 공통으로 사용하는 헤더 정보는 Data Lake Storage API 요청 헤더 가이드를 참고하세요.
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| bucket | Path | String | Y | 버킷 이름 |
요청 본문은 정책 문서 전체를 담은 JSON입니다.
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| Version | String | Y | 정책 언어 버전. 2012-10-17을 사용합니다. |
| Id | String | N | 정책 식별자 |
| Statement | Array | Y | 정책 구문 목록. 최소 1개 이상이어야 합니다. |
| Statement.Sid | String | N | 정책 구문 식별자 |
| Statement.Effect | String | Y | 권한 적용 방식. Allow 또는 Deny |
| Statement.Principal | Object | Y | 권한을 적용할 주체. NotPrincipal과 함께 사용할 수 없습니다. |
| Statement.NotPrincipal | Object | N | 권한 적용에서 제외할 주체. Principal과 함께 사용할 수 없습니다. |
| Statement.Action | Array | Y | 적용할 작업 목록. NotAction과 함께 사용할 수 없습니다. |
| Statement.NotAction | Array | N | 적용에서 제외할 작업 목록. Action과 함께 사용할 수 없습니다. |
| Statement.Resource | Array | Y | 작업 대상 리소스 목록. NotResource와 함께 사용할 수 없습니다. |
| Statement.NotResource | Array | N | 적용에서 제외할 리소스 목록. Resource와 함께 사용할 수 없습니다. |
| Statement.Condition | Object | N | 정책 구문이 적용되는 조건 |
권한을 적용할 주체를 지정합니다.
| 형식 | 설명 |
|---|---|
"*" |
모든 사용자(익명 포함) |
{ "NHN": "arn:nhn:cloud:iam:{appKey}:user/{memberUuid}" } |
특정 NHN Cloud IAM 사용자. appKey는 16자리 영숫자, memberUuid는 UUID 형식입니다. |
{ "NHN": "arn:nhn:cloud:iam:{appKey}:user/*" } |
프로젝트(appKey)에 속한 모든 사용자 |
알아두기
Principal에는 단일 문자열 또는 문자열 배열을 모두 사용할 수 있습니다.
정책에서 사용할 수 있는 작업은 다음과 같습니다.
| 작업 | 설명 |
|---|---|
| s3:GetObject | 객체 조회 |
| s3:PutObject | 객체 업로드 |
| s3:DeleteObject | 객체 삭제 |
| s3:GetObjectAcl | 객체 ACL 조회 |
| s3:PutObjectAcl | 객체 ACL 설정 |
| s3:ListBucket | 버킷 내 객체 목록 조회 |
| s3:ListBucketMultipartUploads | 진행 중인 멀티파트 업로드 목록 조회 |
| s3:ListMultipartUploadParts | 멀티파트 업로드의 파트 목록 조회 |
| s3:AbortMultipartUpload | 멀티파트 업로드 중단 |
| s3:* | 위 작업을 포함한 모든 작업 |
주의
버킷 생성/삭제, 버킷 정책 및 ACL 관리 등 버킷 관리(Bucket Administration) 작업은 버킷 정책으로 부여할 수 없습니다. 해당 권한은 프로젝트/버킷 소유자 역할로만 수행할 수 있습니다.
리소스는 ARN이 아닌 버킷 내 경로 형식으로 지정합니다.
| 형식 | 설명 |
|---|---|
* |
버킷 내 모든 객체 |
curated/* |
curated/ 접두사를 가진 모든 객체 |
report.csv |
특정 객체 키 |
주의
리소스는 arn:으로 시작하거나 /로 시작할 수 없습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProjectMembersFullObjectAccess",
"Effect": "Allow",
"Principal": { "NHN": "arn:nhn:cloud:iam:{appKey}:user/*" },
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket"],
"Resource": ["*"]
}
]
}
HTTP/1.1 204 No Content