概要
NAVERクラウドプラットフォーム 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)
ポータルのマイページ > アカウント管理 > 認証キー管理で作成した API認証キーを使用します。
以下、S3 APIを利用して NAVERクラウドプラットフォーム Object Storageにアクセスする際に使用できるすべてのオペレーションを説明します。
サンプルコードを含むオペレーション使用方法の詳細は、バケットのオペレーション、オブジェクトのオペレーションページをご参照ください。
アカウント関連のオペレーション
アカウントレベルでは、そのアカウントに属するバケットリストを照会するオペレーションのみサポートしています。アカウントのバケット数は1,000個に制限されます。
| オペレーション | 説明 |
|---|---|
| GET Account(List Buckets) | アカウントに属するバケットリストを照会 |
バケットのオペレーション
バケットを作成、削除、照会、制御するオペレーションを説明します。
_バケット内のオブジェクトリストの照会 GET Bucket (List Objects) Version 2はサポートしていません。
| オペレーション | 説明 |
|---|---|
| PUT Bucket | バケットを作成 アカウントのバケット数は1,000個に制限される |
| GET Bucket(List Objects) | バケットに含まれているオブジェクトを照会 一度に最大1,000個のオブジェクトを並べる |
| HEAD Bucket | バケットヘッダを照会 |
| DELETE Bucket | 空のバケットを削除 |
| PUT Bucket ACL | バケットに適用するアクセス制御リスト(ACL)を作成 |
| GET Bucket ACL | バケットに適用されたアクセス制御リスト(ACL)を照会 |
| PUT Bucket CORS | バケットに適用する CORS設定を作成 |
| GET Bucket CORS | バケットに適用された CORS設定を照会 |
| DELETE Bucket CORS | バケットに適用された CORS設定を削除 |
| List Multipart Uploads | 完了していないか、キャンセルされたマルチパートアップロードを照会 |
オブジェクトのオペレーション
オブジェクトを作成、削除、照会、制御するオペレーションを説明します。
| オペレーション | 説明 |
|---|---|
| PUT Object | バケットにオブジェクトを追加(アップロード) |
| PUT Object (Copy) | オブジェクトのコピーを作成 |
| GET Object | オブジェクトを照会(ダウンロード) |
| HEAD Object | オブジェクトヘッダを照会 |
| DELETE Object | バケットからオブジェクトを削除 |
| DELETE Multiple Objects | バケットからマルチパートオブジェクトを削除 |
| PUT Object ACL | オブジェクトに適用するアクセス制御リスト(ACL)を作成 |
| GET Object ACL | オブジェクトに適用されたアクセス制御リスト(ACL)を照会 |
| OPTIONS Object | CORS設定を確認して、特定のリクエストを転送できるか照会 |
| Initiate Multipart Upload | アップロードするパートの集合に指定するアップロード IDを作成 |
| Upload Part | アップロード ID関連のオブジェクトのパートをアップロード |
| Complete Multipart Upload | アップロード ID関連のパートに分離されたオブジェクトを結合 |
| Abort Multipart Upload | アップロードを中断し、アップロード ID関連のパートを削除 |
共通ヘッダ
共通リクエストヘッダ
次の表で、NAVERクラウドプラットフォーム Object Storageでサポートしている共通リクエストヘッダを説明します。
NAVERクラウドプラットフォーム 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 | リクエストボディの長さ(単位: Byte) |
| Connection | 接続されたかどうか |
| Date | リクエストメッセージのタイムスタンプ |
| ETag | リクエストメッセージの MD5ハッシュ値 |
| x-amz-request-id | リクエスト時に作成された固有 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リクエストではファイルを1個だけアップロードできる | 400 Bad Request |
| InlineDataTooLarge | インラインデータの容量が最大容量を超過 | 400 Bad Request |
| InternalError | 内部エラー発生 再試行が必要 |
500 Internal Server Error |
| InvalidAccessKeyId | 入力した AWSアクセスキー IDがデータベースに存在しない | 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 | 指定されたパートのうち、1つ以上見つからない パートがアップロードされていないか、指定されたエンティティタグがパートのエンティティタグと一致しない可能性がある |
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 | 指定した前提条件のうち、1つ以上実行されていない | 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 |
認証
NAVERクラウドプラットフォーム Object Storage APIの認証は Authorizationヘッダを通じて行われます。認証方法の詳細は、Object Storage APIご利用ガイドで確認できます。
アクセス制御リスト(ACL)
NAVERクラウドプラットフォーム Object Storageサービスを利用中の会員を対象に、バケットとオブジェクトへのアクセス権限を付与できます。
NAVERクラウドプラットフォーム 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権限に許されているすべてのオペレーションが実行可能 |
次の表で、NAVERクラウドプラットフォーム Object Storageでサポートしている基本 ACLを説明します。この表に明示されていない値はサポートしていません。
| 基本 ACL | 適用対象 | 説明 |
|---|---|---|
| private | バケット、オブジェクト | 所有者に FULL_CONTROL権限を付与(デフォルト) |
| public-read | バケット、オブジェクト | 所有者に FULL_CONTROL権限を、すべてのユーザーに READ権限を付与 |
| public-read-write | バケット、オブジェクト | 所有者に FULL_CONTROL権限を、すべてのユーザーに READと WRITE権限を付与 |
| authenticated-read | バケット、オブジェクト | 所有者に FULL_CONTROL権限を、認証済みのユーザーに READ権限を付与 |
public-readを含む READ権限がバケットに適用された場合、オブジェクトは照会のみ行えます。オブジェクト自体にはアクセスできません。