AWS S3 Standard API vs. CB‐Spider S3 API - cloud-barista/cb-spider GitHub Wiki
AWS S3 표준 API vs CB-Spider S3 API 현황 비교
1. CB-Spider가 지원하는 AWS S3 표준 API ✅
| 카테고리 | API 이름 | AWS 표준 엔드포인트 | CB-Spider 엔드포인트 | 함수명 | 호환성 |
|---|---|---|---|---|---|
| 버킷 관리 | ListBuckets | GET / |
GET / |
ListS3Buckets | ✅ 완전 호환 |
| CreateBucket | PUT /{bucket} |
PUT /:Name |
CreateS3Bucket | ✅ 완전 호환 | |
| DeleteBucket | DELETE /{bucket} |
DELETE /:Name |
DeleteS3Bucket | ✅ 완전 호환 | |
| HeadBucket | HEAD /{bucket} |
HEAD /:Name |
GetS3Bucket | ✅ 완전 호환 | |
| GetBucketLocation | GET /{bucket}?location |
GET /:Name?location |
getBucketLocation | ✅ 완전 호환 | |
| 버킷 설정 | GetBucketVersioning | GET /{bucket}?versioning |
GET /:Name?versioning |
getBucketVersioning | ✅ 완전 호환 |
| PutBucketVersioning | PUT /{bucket}?versioning |
PUT /:Name?versioning |
putBucketVersioning | ✅ 완전 호환 | |
| GetBucketCors | GET /{bucket}?cors |
GET /:Name?cors |
getBucketCORS | ✅ 완전 호환 | |
| PutBucketCors | PUT /{bucket}?cors |
PUT /:Name?cors |
putBucketCORS | ✅ 완전 호환 | |
| DeleteBucketCors | DELETE /{bucket}?cors |
DELETE /:Name?cors |
deleteBucketCORS | ✅ 완전 호환 | |
| 객체 관리 | PutObject | PUT /{bucket}/{key} |
PUT /:BucketName/:ObjectKey+ |
PutS3ObjectFromFile | ✅ 완전 호환 |
| GetObject | GET /{bucket}/{key} |
GET /:BucketName/:ObjectKey+ |
DownloadS3Object | ✅ 완전 호환 | |
| DeleteObject | DELETE /{bucket}/{key} |
DELETE /:BucketName/:ObjectKey+ |
DeleteS3Object | ✅ 완전 호환 | |
| HeadObject | HEAD /{bucket}/{key} |
HEAD /:BucketName/:ObjectKey+ |
GetS3ObjectInfo | ✅ 완전 호환 | |
| ListObjects | GET /{bucket} |
GET /:Name |
ListS3Objects | ✅ 완전 호환 | |
| ListObjectsV2 | GET /{bucket}?list-type=2 |
GET /:Name |
ListS3Objects | ⚠️ V1으로 처리 | |
| 버전 관리 | ListObjectVersions | GET /{bucket}?versions |
GET /:Name?versions |
listObjectVersions | ✅ 완전 호환 |
| 멀티파트 업로드 | CreateMultipartUpload | POST /{bucket}/{key}?uploads |
POST /:Name?uploads |
initiateMultipartUpload | ✅ 완전 호환 |
| UploadPart | PUT /{bucket}/{key}?partNumber&uploadId |
PUT /:BucketName/:ObjectKey+?partNumber&uploadId |
uploadPart | ✅ 완전 호환 | |
| CompleteMultipartUpload | POST /{bucket}/{key}?uploadId |
POST /:Name?uploadId |
completeMultipartUpload | ✅ 완전 호환 | |
| 일괄 작업 | DeleteObjects | POST /{bucket}?delete |
POST /:Name?delete |
deleteMultipleObjects | ✅ 완전 호환 |
| 폼 업로드 | PostObject | POST /{bucket} |
POST /:Name |
postObject | ✅ 완전 호환 |
2. CB-Spider 특화 API (AWS 표준에 없음) 🚀
| 기능 | CB-Spider 엔드포인트 | 함수명 | 설명 | 고유 특징 |
|---|---|---|---|---|
| 강제 버킷 비우기 | DELETE /:Name?empty |
ForceEmptyS3Bucket | 버킷 내 모든 객체(버전 포함) 강제 삭제 | 🆕 운영 편의성 |
| 강제 버킷 삭제 | DELETE /:Name?force |
ForceDeleteS3Bucket | 비어있지 않은 버킷 강제 삭제 | 🆕 운영 편의성 |
| 다중 인증 지원 | 모든 엔드포인트 | getConnectionName | CB-Spider ConnectionName 방식 지원 | 🆕 CB-Spider 고유 |
| AdminWeb 헤더 | 모든 엔드포인트 | getConnectionName | X-Connection-Name 헤더 지원 | 🆕 관리 도구 연동 |
| JSON 객체 정보 | GET /:BucketName/:ObjectKey+ (GET 방식) |
GetS3ObjectInfo | 객체 메타데이터를 JSON으로 반환 | 🆕 개발 편의성 |
3. AWS S3 표준 API 중 CB-Spider가 지원하지 않는 API ❌
3.1 버킷 정책 및 ACL 관리
| AWS API | 표준 엔드포인트 | 미지원 이유 |
|---|---|---|
| PutBucketPolicy | PUT /{bucket}?policy |
❌ 구현되지 않음 |
| GetBucketPolicy | GET /{bucket}?policy |
❌ 구현되지 않음 |
| DeleteBucketPolicy | DELETE /{bucket}?policy |
❌ 구현되지 않음 |
| PutBucketAcl | PUT /{bucket}?acl |
❌ 구현되지 않음 |
| GetBucketAcl | GET /{bucket}?acl |
❌ 구현되지 않음 |
| PutObjectAcl | PUT /{bucket}/{key}?acl |
❌ 구현되지 않음 |
| GetObjectAcl | GET /{bucket}/{key}?acl |
❌ 구현되지 않음 |
3.2 고급 버킷 설정
| AWS API | 표준 엔드포인트 | 미지원 이유 |
|---|---|---|
| PutBucketLifecycleConfiguration | PUT /{bucket}?lifecycle |
❌ 구현되지 않음 |
| GetBucketLifecycleConfiguration | GET /{bucket}?lifecycle |
❌ 구현되지 않음 |
| DeleteBucketLifecycle | DELETE /{bucket}?lifecycle |
❌ 구현되지 않음 |
| PutBucketWebsite | PUT /{bucket}?website |
❌ 구현되지 않음 |
| GetBucketWebsite | GET /{bucket}?website |
❌ 구현되지 않음 |
| DeleteBucketWebsite | DELETE /{bucket}?website |
❌ 구현되지 않음 |
| PutBucketNotificationConfiguration | PUT /{bucket}?notification |
❌ 구현되지 않음 |
| GetBucketNotificationConfiguration | GET /{bucket}?notification |
❌ 구현되지 않음 |
3.3 객체 태깅 및 메타데이터
| AWS API | 표준 엔드포인트 | 미지원 이유 |
|---|---|---|
| PutBucketTagging | PUT /{bucket}?tagging |
❌ 구현되지 않음 |
| GetBucketTagging | GET /{bucket}?tagging |
❌ 구현되지 않음 |
| DeleteBucketTagging | DELETE /{bucket}?tagging |
❌ 구현되지 않음 |
| PutObjectTagging | PUT /{bucket}/{key}?tagging |
❌ 구현되지 않음 |
| GetObjectTagging | GET /{bucket}/{key}?tagging |
❌ 구현되지 않음 |
| DeleteObjectTagging | DELETE /{bucket}/{key}?tagging |
❌ 구현되지 않음 |
3.4 멀티파트 업로드 관리
| AWS API | 표준 엔드포인트 | 미지원 이유 |
|---|---|---|
| AbortMultipartUpload | DELETE /{bucket}/{key}?uploadId |
❌ 구현되지 않음 |
| ListParts | GET /{bucket}/{key}?uploadId |
❌ 구현되지 않음 |
| ListMultipartUploads | GET /{bucket}?uploads |
❌ 구현되지 않음 |
3.5 고급 기능
| AWS API | 표준 엔드포인트 | 미지원 이유 |
|---|---|---|
| CopyObject | PUT /{bucket}/{key} (x-amz-copy-source) |
❌ 구현되지 않음 |
| SelectObjectContent | POST /{bucket}/{key}?select |
❌ S3 Select 미지원 |
| RestoreObject | POST /{bucket}/{key}?restore |
❌ Glacier 복원 미지원 |
4. 호환성 요약
| 구분 | 지원 API 수 | 미지원 API 수 | 특화 API 수 | 호환률 |
|---|---|---|---|---|
| 버킷 관리 | 5개 | 0개 | 2개 | 100% |
| 버킷 설정 | 6개 | 9개 | 0개 | 40% |
| 객체 관리 | 6개 | 2개 | 1개 | 75% |
| 멀티파트 업로드 | 3개 | 3개 | 0개 | 50% |
| 기타 고급 기능 | 2개 | 4개 | 2개 | 33% |
| 전체 | 22개 | 18개 | 5개 | 55% |
5. CB-Spider의 주요 차별점
✅ 장점
- 운영 편의성: 강제 삭제/비우기 기능으로 운영 부담 감소
- 다중 인증: AWS 표준 + CB-Spider 고유 인증 방식 동시 지원
- 개발 친화적: JSON 응답 옵션으로 개발 편의성 향상
- 핵심 기능 완전 지원: 기본적인 S3 작업은 모두 지원
⚠️ 제한사항
- 고급 관리 기능 부족: ACL, 정책, 라이프사이클 등 엔터프라이즈 기능 미지원
- 태깅 시스템 미지원: 객체/버킷 태깅 기능 없음
- S3 Select 미지원: 객체 내용 쿼리 기능 없음
- 완전한 멀티파트 관리 부족: 중단/목록 조회 기능 없음