--- title: "Object Storage 개요" slug: "storage-objectstorage" tags: ["Object Storage", "overview"] updated: 2026-10-20T01:48:58Z published: 2026-10-20T03:00:25Z canonical: "api.ncloud-docs.com/storage-objectstorage" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Object Storage 개요 ## 개요 네이버 클라우드 플랫폼 Object Storage 는 스토리지 관리와 사용에 필요한 S3 API를 제공합니다. - 버전: Amazon S3 v2006-03-01 ### 호출 도메인(Endpoint) HTTP/HTTPS 프로토콜을 모두 지원하지만 데이터 보호를 위해 HTTPS 사용을 권장합니다. 리전 별 호출 도메인 | 리전 | 리전 이름 | 호출 도메인 | | --- | --- | --- | | 한국 | kr-standard | https://kr.object.ncloudstorage.com | | 미국서부(New) | us-standard | https://us.object.ncloudstorage.com | | 싱가포르(New) | sg-standard | https://sg.object.ncloudstorage.com | | 일본(New) | jp-standard | https://jp.object.ncpstorage.com | | 독일(New) | de-standard | https://de.object.ncloudstorage.com | 참고 제공 리전은 지속적으로 확대해갈 예정입니다. ### 인증키(Credential) [Ncloud API](https://api.ncloud-docs.com/release-20260917/docs/common-ncpapi)를 참조하여 생성한 API 인증키를 사용합니다. 아래는 S3 API를 사용하여 네이버 클라우드 플랫폼 Object Storage에 접근할 때 사용할 수 있는 모든 오퍼레이션을 설명합니다. 예를 포함하여 오퍼레이션 사용법에 대한 추가 정보를 확인하려면 버킷 오퍼레이션, 오브젝트 오퍼레이션 페이지를 참조해 주십시오. ### 계정 관련 오퍼레이션 계정 레벨에서는 해당 계정에 속한 버킷 목록을 조회하는 오퍼레이션만 지원합니다. 계정의 버킷 개수는 1,000 개로 제한됩니다. | 오퍼레이션 | 설명 | | --- | --- | | [GET Account(List Buckets)](/docs/storage-objectstorage-listbuckets) | 계정에 속한 버킷 목록 조회 | ### 버킷 오퍼레이션 버킷을 생성, 삭제, 조회, 제어하는 오퍼레이션을 설명합니다. *버킷 내의 오브젝트 목록 조회 GET Bucket (List Objects) Version 2 는 지원하지 않습니다.* | 오퍼레이션 | 설명 | | --- | --- | | [PUT Bucket](/docs/storage-objectstorage-putbucket) | 버킷 생성 계정의 버킷 개수는 1,000 개로 제한됨 | | [GET Bucket(List Objects)](/docs/storage-objectstorage-listobjects) | 버킷에 포함된 오브젝트 조회 한 번에 최대 1,000 개의 오브젝트 나열 | | [HEAD Bucket](/docs/storage-objectstorage-headbucket) | 버킷 헤더 조회 | | [DELETE Bucket](/docs/storage-objectstorage-deletebucket) | 빈 버킷 삭제 | | [PUT Bucket ACL](/docs/storage-objectstorage-putbucketacl) | 버킷에 적용할 접근 제어 목록(ACL) 생성 | | [GET Bucket ACL](/docs/storage-objectstorage-getbucketacl) | 버킷에 적용된 접근 제어 목록(ACL) 조회 | | [PUT Bucket CORS](/docs/storage-objectstorage-putbucketcors) | 버킷에 적용할 CORS 설정 생성 | | [GET Bucket CORS](/docs/storage-objectstorage-getbucketcors) | 버킷에 적용된 CORS 설정 조회 | | [DELETE Bucket CORS](/docs/storage-objectstorage-deletebucketcors) | 버킷에 적용된 CORS 설정 삭제 | | [List Multipart Uploads](/docs/storage-objectstorage-listmultipartuploads) | 완료되지 않았거나 취소된 멀티파트 업로드 조회 | ### 오브젝트 오퍼레이션 오브젝트를 생성, 삭제, 조회, 제어하는 오퍼레이션을 설명합니다. | 오퍼레이션 | 설명 | | --- | --- | | [PUT Object](/docs/storage-objectstorage-putobject) | 버킷에 오브젝트 추가(업로드) | | [PUT Object (Copy)](/docs/storage-objectstorage-copyobject) | 오브젝트 복사본 생성 | | [GET Object](/docs/storage-objectstorage-getobject) | 오브젝트 조회(다운로드) | | [HEAD Object](/docs/storage-objectstorage-headobject) | 오브젝트 헤더 조회 | | [DELETE Object](/docs/storage-objectstorage-deleteobject) | 버킷에서 오브젝트 삭제 | | [DELETE Multiple Objects](/docs/storage-objectstorage-deletemultipleobjects) | 버킷에서 멀티파트 오브젝트 삭제 | | [PUT Object ACL](/docs/storage-objectstorage-putobjectacl) | 오브젝트에 적용할 접근 제어 목록(ACL) 생성 | | [GET Object ACL](/docs/storage-objectstorage-getobjectacl) | 오브젝트에 적용된 접근 제어 목록(ACL) 조회 | | [OPTIONS Object](/docs/storage-objectstorage-optionsobjectcors) | CORS 설정을 확인하여 특정 요청을 전송할 수 있는지 조회 | | [Initiate Multipart Upload](/docs/storage-objectstorage-initiatemultipartupload) | 업로드할 파트 집합에 지정할 업로드 ID 생성 | | [Upload Part](/docs/storage-objectstorage-uploadpart) | 업로드 ID와 연관된 오브젝트의 파트 업로드 | | [Complete Multipart Upload](/docs/storage-objectstorage-completemultipartupload) | 업로드 ID와 연관된 파트로 분리된 오브젝트 결합 | | [Abort Multipart Upload](/docs/storage-objectstorage-abortmultipartupload) | 업로드를 중단하고 업로드 ID와 연관된 파트 삭제 | ## 공통 헤더 ### 공통 요청 헤더 다음 표는 네이버 클라우드 플랫폼 Object Storage에서 지원하는 공통 요청 헤더를 설명합니다. 네이버 클라우드 플랫폼 Object Storage 는 다음 표에 나열되지 않은 공통 헤더는 요청이 전송됐더라도 무시합니다. 단, 요청 중 일부는 이 문서에 정의된 바와 같이 다른 헤더를 지원할 수 있습니다. 인증 헤더 생성에 대한 자세한 내용은 "인증 관리" 페이지에서 확인할 수 있습니다. | 헤더 | 설명 | | --- | --- | | Authorization | 필수(AWS Signature Version 4) | | Host | 필수 | | x-amz-date | 필수, Date로 지정될 수 있음 | | x-amz-content-sha256 | 필수 단, 오브젝트 업로드 시 또는 본문에 요청 정보가 포함된 경우에 해당 | | Content-Length | 필수 단, 오브젝트 업로드 시에 해당 청크 인코딩(chunked encoding)이 지원됨 | | Content-MD5 | 전송 중인 요청 본문의 128 비트 MD5 해시값 | | Expect | 100-continue인 경우 요청 본문 전송 전에 헤더가 승인될 때까지 대기 | ### 공통 응답 헤더 다음 표는 공통 응답 헤더를 설명합니다. | 헤더 | 설명 | | --- | --- | | Content-Length | 요청 본문의 길이(단위: 바이트) | | Connection | 연결됐는지 여부 | | Date | 요청 메시지의 타임스탬프 | | ETag | 요청 메시지의 MD5 해시값 | | x-amz-request-id | 요청 시 생성된 고유 식별자 | ## 응답 상태 코드 | 오류 코드 | 설명 | HTTP 상태 코드 | | --- | --- | --- | | AccessDenied | 접근이 거부됨 | 403 Forbidden | | BadDigest | 지정한 Content-MD5가 수신한 내용과 일치하지 않음 | 400 Bad Request | | BucketAlreadyExists | 요청한 버킷 이름 사용 불가 해당 버킷의 네임스페이스는 시스템을 이용하는 모든 사용자가 공유함 다른 이름을 선택한 후 다시 시도 필요 | 409 Conflict | | BucketNotEmpty | 삭제하려는 버킷이 비어 있지 않음 | 409 Conflict | | CredentialsNotSupported | 해당 요청은 Credentials을 지원하지 않음 | 400 Bad Request | | EntityTooSmall | 업로드하려는 오브젝트의 크기가 허용되는 최소 크기보다 작음 | 400 Bad Request | | EntityTooLarge | 업로드하려는 오브젝트의 크기가 허용되는 최대 크기 초과 | 400 Bad Request | | IncompleteBody | Content-Length HTTP 헤더에 값을 지정하지 않음 | 400 Bad Request | | IncorrectNumberOfFilesInPostRequest | POST 요청으로는 파일을 하나만 업로드 가능 | 400 Bad Request | | InlineDataTooLarge | 인라인 데이터의 크기가 허용된 최대 크기를 초과 | 400 Bad Request | | InternalError | 내부 오류 발생 재시도 필요 | 500 Internal Server Error | | InvalidAccessKeyId | 입력한 AWS 액세스 키 아이디가 데이터베이스에 존재하지 않음 | 403 Forbidden | | InvalidArgument | 유효하지 않은 파라미터 | 400 Bad Request | | InvalidArgument | 시크릿 키의 MD5 해시값이 잘못됨 MD5 해시는 Base64 인코딩되어야 함 | 400 Bad Request | | InvalidArgument | MD5 해시값이 입력값과 일치하지 않음 | 400 Bad Request | | InvalidBucketName | 지정한 버킷이 유효하지 않음 | 400 Bad Request | | InvalidBucketState | 해당 요청은 현재의 버킷 상태로는 유효하지 않음 | 409 Conflict | | InvalidDigest | 지정한 Content-MD5가 유효하지 않음 | 400 Bad Request | | InvalidEncryptionAlgorithmError | 지정한 Encryption 요청이 유효하지 않음 지원되는 값은 AES256 | 400 Bad Request | | InvalidLocationConstraint | 지역 제약 조건이 유효하지 않음 | 400 Bad Request | | InvalidObjectState | 현재의 오브젝트 상태에서는 해당 오퍼레이션이 유효하지 않음 | 403 Forbidden | | InvalidPart | 지정된 파트 중 하나 이상을 찾을 수 없음 해당 파트가 업로드되지 않았거나 지정된 엔티티 태그가 파트의 엔티티 태그와 일치하지 않을 수 있음 | 400 Bad Request | | InvalidPartOrder | 파트 목록이 오름차순으로 정렬되지 않았음 파트 번호순으로 정렬되어야 함 | 400 Bad Request | | InvalidRange | 요청한 범위를 충족시킬 수 없음 | 416 Requested Range Not Satisfiable | | InvalidRequest | AWS4-HMAC-SHA256 알고리즘 사용 필요 | 400 Bad Request | | InvalidSecurity | 입력한 보안 Credentials 이 유효하지 않음 | 403 Forbidden | | InvalidURI | 지정된 URI의 구문을 분석할 수 없음 | 400 Bad Request | | KeyTooLong | 키가 너무 김 | 400 Bad Request | | MalformedACLError | 입력한 XML 형식이 올바르지 않거나, 게시된 스키마의 유효성을 검사하지 않았음 | 400 Bad Request | | MalformedPOSTRequest | POST 요청 본문의 multipart/form-data 속성값이 올바르지 않음 | 400 Bad Request | | MalformedXML | 설정이 잘못된 XML(XSD 규정을 따르지 않는 XML)을 전송할 때 발생하는 오류 오류 메시지: "The XML you provided was not well-formed or did not validate against our published schema." | 400 Bad Request | | MaxMessageLengthExceeded | 요청이 너무 김 | 400 Bad Request | | MaxPostPreDataLengthExceededError | 업로드 파일 앞의 POST 요청 필드가 너무 큼 | 400 Bad Request | | MetadataTooLarge | 메타데이터의 헤더 크기가 허용된 최대 크기 초과 | 400 Bad Request | | MethodNotAllowed | 지정한 메서드는 이 리소스에 사용 불가 | 405 Method Not Allowed | | MissingContentLength | Content-Length HTTP 헤더 제공 필요 | 411 Length Required | | MissingRequestBodyError | 빈 XML 문서를 전송할 때 발생하는 오류 오류 메시지: "Request body is empty." | 400 Bad Request | | NoSuchBucket | 지정한 버킷이 존재하지 않음 | 404 Not Found | | NoSuchKey | 지정한 키가 존재하지 않음 | 404 Not Found | | NoSuchUpload | 지정한 멀티파트 업로드가 존재하지 않음 업로드 ID가 유효하지 않거나, 멀티파트 업로드가 중단 또는 완료되었을 수 있음 | 404 Not Found | | NotImplemented | 입력한 헤더는 구현되지 않은 기능 의미 | 501 Not Implemented | | OperationAborted | 조건부 연산이 이 리소스와 충돌하여 재시도 필요 | 409 Conflict | | PreconditionFailed | 지정한 전제 조건 중 하나 이상이 수행되지 않음 | 412 Precondition Failed | | Redirect | 임시로 새 위치로 리디렉션함 | 307 Moved Temporarily | | RequestIsNotMultiPartContent | 버킷 POST 요청에는 enclosure-type multipart/form-data 속성값을 지정해야 함 | 400 Bad Request | | RequestTimeout | 소켓 연결이 제한 시간 내에 서버에 도달하지 못했음 | 400 Bad Request | | RequestTimeTooSkewed | 요청 시간과 서버 시간 간의 차이가 너무 큼 | 403 Forbidden | | SignatureDoesNotMatch | 입력한 서명값이 측정된 서명값과 일치하지 않음 AWS 시크릿 키와 서명 방식 확인 필요 | 403 Forbidden | | ServiceUnavailable | 요청 빈도 줄여야 함 | 503 Service Unavailable | | SlowDown | 요청 빈도 줄여야 함 | 503 Slow Down | | TemporaryRedirect | DNS를 업데이트하는 동안 버킷으로 리디렉션 | 307 Moved Temporarily | | TooManyBuckets | 버킷 생성 허용 개수 초과 | 400 Bad Request | | UnexpectedContent | 해당 요청은 콘텐츠를 지원하지 않음 | 400 Bad Request | | UnresolvableGrantByEmailAddress | 입력하신 메일 주소와 일치하는 계정이 데이터베이스에 존재하지 않음 | 400 Bad Request | | UserKeyMustBeSpecified | 버킷 POST 요청은 지정된 필드 이름을 포함해야 함 필드 이름이 지정돼 있다면 필드 순서 확인 필요 | 400 Bad Request | ## 인증 네이버 클라우드 플랫폼 Object Storage API의 인증은 Authorization 헤더를 통해 이루어지고, 인증 방법은 [Object Storage API 사용 가이드](/docs/common-objectstorageapi-objectstorageapi)에서 확인하실 수 있습니다. ## 접근 제어 목록(ACL) 네이버 클라우드 플랫폼 Object Storage 서비스를 이용 중인 회원을 대상으로 버킷과 오브젝트에 접근 권한을 부여할 수 있습니다. 네이버 클라우드 플랫폼 Object Storage 이용신청을 완료한 회원은 Object Storage에서 사용할 수 있는 ID가 발급됩니다. 이 ID는 버킷과 오브젝트의 접근 권한을 설정할 때 사용됩니다. 또한 인증 없이 접근 가능하도록 public-read, public-write 권한 설정도 가능합니다. 다음 표는 권한 종류와 해당 권한이 부여된 경우 가능한 오퍼레이션을 설명합니다. | 권한 | 버킷에 부여된 경우 | 오브젝트에 부여된 경우 | | --- | --- | --- | | READ | 버킷에 속한 오브젝트 목록 조회 가능 | 오브젝트 데이터와 메타데이터의 읽기가 가능 | | WRITE | 새 오브젝트를 생성하거나 기존 오브젝트의 덮어쓰기 또는 삭제 가능 | N/A | | READ_ACP | 버킷의 ACL 조회 가능 | 오브젝트의 ACL 조회 가능 | | WRITE_ACP | 버킷의 ACL 설정 가능 | 오브젝트의 ACL 설정 가능 | | FULL_CONTROL | READ, WRITE, READ_ACP, WRITE_ACP 권한으로 가능한 모든 오퍼레이션 수행 가능 | READ, READ_ACP, WRITE_ACP 권한으로 가능한 모든 오퍼레이션 수행 가능 | 다음 표는 NCP 오브젝트 스토리지에서 지원하는 기본 ACL을 설명합니다. 이 표에 언급되지 않은 값은 지원되지 않습니다. | 기본 ACL | 적용 대상 | 설명 | | --- | --- | --- | | private | 버킷, 오브젝트 | 소유자에게 FULL_CONTROL 권한 부여 (default) | | public-read | 버킷, 오브젝트 | 소유자에게 FULL_CONTROL 권한을 부여하고, 모든 사용자에게 READ 권한 부여 | | public-read-write | 버킷, 오브젝트 | 소유자에게 FULL_CONTROL 권한을 부여하고, 모든 사용자에게 READ와 WRITE 권한 부여 | | authenticated-read | 버킷, 오브젝트 | 소유자에게 FULL_CONTROL 권한을 부여하고, 인증된 사용자에게 READ 권한 부여 | public-read를 포함하여 READ 권한이 버킷에 적용된 경우에는 오브젝트를 조회만 할 수 있을 뿐 오브젝트 자체에는 접근할 수 없습니다.