In order to provide detailed descriptions of the various NAVER CLOUD PLATFORM services, and to facilitate use of various APIs, we offer [Manual] and [API reference] separately.
Go to Object Storage API Reference >>
Go to Object Storage User Guide >>
バケットオペレーション
バケットリストの照会
エンドポイントでGETリクエストを送信すると送信したアカウントに属するバケットリストを返します。オペレーションで使用されるパラメータ、ペイロードはありません。
構文
GET https://{endpoint}/
リクエストの例
GET / HTTP/1.1
Content-Type: text/plain
Host: kr.object.ncloudstorage.com
X-Amz-Date: 20160822T030815Z
Authorization: {authorization-string}
レスポンスの例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>{access-key}</ID>
<DisplayName>{access-key}</DisplayName>
</Owner>
<Buckets>
<Bucket>
<Name>bucket-27200-lwx4cfvcue</Name>
<CreationDate>2016-08-18T14:21:36.593Z</CreationDate>
</Bucket>
<Bucket>
<Name>bucket-27590-drqmydpfdv</Name>
<CreationDate>2016-08-18T14:22:32.366Z</CreationDate>
</Bucket>
<Bucket>
<Name>bucket-27852-290jtb0n2y</Name>
<CreationDate>2016-08-18T14:23:03.141Z</CreationDate>
</Bucket>
<Bucket>
<Name>bucket-28731-k0o1gde2rm</Name>
<CreationDate>2016-08-18T14:25:09.599Z</CreationDate>
</Bucket>
</Buckets>
</ListAllMyBucketsResult>
バケットの生成
エンドポイントにPUTリクエストを送信するとリクエストの後に入力された文字列を名前に持つバケットを生成します。バケット名は一意でなければならず、バケット数は1,000個に制限されます。バケット名は、DNS規則を遵守し、長さは3〜63文字でなければなりません。さらにアルファベット小文字、数字、ダッシュで構成しなければなりません。バケット名の始めと終りはアルファベット小文字や数字でなければなりません。ドット文字 (.)を許容しますが、IPアドレス型の名前は許容されません。オペレーションに使用されるパラメータ、ペイロードはありません。
構文
PUT https://{endpoint}/{bucket-name} # path style
PUT https://{bucket-name}.{endpoint} # virtual host style
リクエストの例
以下は、名前が「images」であるバケット生成をリクエストする例です。
PUT /images HTTP/1.1
Content-Type: text/plain
Host: kr.object.ncloudstorage.com
X-Amz-Date: 20160821T052842Z
Authorization:{authorization-string}
レスポンスの例
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:45:25 GMT
Accept-Ranges: bytes
x-amz-request-id: dca204eb-72b5-4e2a-a142-808d2a5c2a87
Content-Length: 0
バケットヘッダーの照会
バケットにHEADリクエストを送信すると、リクエストしたバケットのヘッダを返します。オペレーションに使用されるパラメータ、ペイロードはありません。
構文
HEAD https://{endpoint}/{bucket-name} # path style
HEAD https://{bucket-name}.{endpoint} # virtual host style
リクエストの例
以下は、名前が「images」であるバケットヘッダーの照会をリクエストする例です。
HEAD /images HTTP/1.1
Content-Type: text/plain
Host: kr.object.ncloudstorage.com
X-Amz-Date: 20160821T052842Z
Authorization:{authorization-string}
レスポンスの例
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:46:35 GMT
Accept-Ranges: bytes
x-amz-request-id: 0c2832e3-3c51-4ea6-96a3-cd8482aca08a
Content-Length: 0
オブジェクトリストの照会
バケットにGETリクエストを送信するとオブジェクトのリストを返します。このとき、一度に返されるオブジェクトの数は1,000個に限られます。また、返される順番はランダムになります。ストレージクラスオペレーションがNAVERクラウドプラットフォームObject Storageに実装されていない場合は、レスポンスコードから返されたStorageClassの値はデフォルト値です。オペレーションに使用されるヘッダ、ペイロードはありません。
構文
バケット内のオブジェクトのリストから「version2」メソッドは、サポートしません。「version1」メソッドのみをサポートします。
GET https://{endpoint}/{bucket-name} # path style
GET https://{bucket-name}.{endpoint} # virtual host style
パラメータ (オプション)
名前 | タイプ | 説明 |
---|---|---|
prefix | string | prefixで始まるオブジェクト名のみレスポンスするように制限します。 |
delimiter | string | prefixとdelimiterの間にあるオブジェクトをグループ化しました。 |
encoding-type | string | XMLでサポートされないUnicode文字がオブジェクト名に使用された場合、パラメータをurlに設定すると、エンコーディングの問題を解決することができます。 |
max-keys | string | レスポンスに表示するオブジェクトの数を制限します。デフォルトであり、最大値は1000です。 |
marker | string | UTF-8 バイナリ順でリストが始まる位置からオブジェクトを指定します。 |
リクエストの例
以下は、名前が「apiary」であるバケットに属するオブジェクト参照をリクエストする例です。
GET /apiary HTTP/1.1
Content-Type: text/plain
Host: kr.object.ncloudstorage.com
X-Amz-Date: 20160822T225156Z
Authorization: {authorization-string}
レスポンスの例
HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:36:24 GMT
Accept-Ranges: bytes
x-amz-request-id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Content-Type: application/xml
Content-Length: 909
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>apiary</Name>
<Prefix/>
<Marker/>
<MaxKeys>1000</MaxKeys>
<Delimiter/>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>drone-bee</Key>
<LastModified>2016-08-25T17:38:38.549Z</LastModified>
<ETag>"0cbc6611f5540bd0809a388dc95a615b"</ETag>
<Size>4</Size>
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>soldier-bee</Key>
<LastModified>2016-08-25T17:49:06.006Z</LastModified>
<ETag>"37d4c94839ee181a2224d6242176c4b5"</ETag>
<Size>11</Size>
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>worker-bee</Key>
<LastModified>2016-08-25T17:46:53.288Z</LastModified>
<ETag>"d34d8aada2996fc42e6948b926513907"</ETag>
<Size>467</Size>
<Owner>
<ID>{account-id}</ID>
<DisplayName>{account-id}</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>
バケットの削除
空のバケットにDELETEリクエストを送信すると、空のバケットを削除します。ユーザーがバケットを削除した後、10分後には、バケットの名前がシステムから削除されます。空のバケットだけを削除することができます。オペレーションに使用されるパラメータ、ペイロードはありません。
構文
DELETE https://{endpoint}/{bucket-name} # path style
DELETE https://{bucket-name}.{endpoint} # virtual host style
リクエストの例
DELETE /images HTTP/1.1
Host: kr.object.ncloudstorage.com
x-amz-date: 20160822T064812Z
Authorization: {authorization-string}
サーバから204 No Contentに応答します。 削除するバケットが空バケットでない場合は、サーバから409 Conflictに応答します。
リクエストの例
DELETE /apiary HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20160825T174049Z
Host: kr.object.ncloudstorage.com
レスポンスの例
<Error>
<Code>BucketNotEmpty</Code>
<Message>The bucket you tried to delete is not empty.</Message>
<Resource>/apiary/</Resource>
<RequestId>9d2bbc00-2827-4210-b40a-8107863f4386</RequestId>
<httpStatusCode>409</httpStatusCode>
</Error>
バケットに適用するアクセス制御リスト(ACL)を作成
提供されるパラメータと一緒にバケットにPUTリクエストを送信すると、リクエストしたバケットに適用するアクセス制御リスト(ACL)を作成したり、既存のACLを修正します。 ACLを適用すると、アカウントのIDや、あらかじめ作られたACL(デフォルトの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の権限を与えます。すべてのユーザーにREAD権限を付与します。 |
public-read | バケット、オブジェクト | 所有者にFULL_CONTROL権限を与え、すべてのユーザーにREAD権限を付与します。 |
public-read-write | バケット、オブジェクト | 所有者にFULL_CONTROL権限を与え、すべてのユーザーにREADとWRITE権限を付与します。 |
authenticated-read | バケット、オブジェクト | 所有者にFULL_CONTROL権限を与え、認証されたユーザーにREAD権限を付与します。 |
public-readを含むREAD権限がバケットに適用された場合には、オブジェクトの照会のみができるだけで、オブジェクト自体にはアクセスすることはできません。
構文
PUT https://{endpoint}/{bucket-name}?acl= # path style
PUT https://{bucket-name}.{endpoint}?acl= # virtual host style
リクエストの例(デフォルトACL)
以下は、名前が「apiary」であるバケットにpublic-read権限付与をリクエストする例です。該当の権限が付与されると、ストレージアカウントを使用するすべてのユーザーが、該当のバケットの内容とACLの詳細情報を確認することができます。
PUT /apiary?acl= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161011T190354Z
x-amz-acl: public-read
Host: kr.object.ncloudstorage.com
レスポンスの例
HTTP/1.1 200 OK
Date: Tue, 4 Oct 2016 19:03:55 GMT
Accept-Ranges: bytes
x-amz-request-id: 73d3cd4a-ff1d-4ac9-b9bb-43529b11356a
Content-Length: 0
リクエストの例(ユーザー定義のACL)
次は、他のアカウントを使用したときの名前が「apiary」であるバケットに適用されたACLを確認することができるが、バケットに格納されたオブジェクトは、照会することができないようにリクエストする例です。参考までに第三番目のアカウントには、すべての権限が付与されているので、同じバケット内では、すべてのオペレーションを実行することができます。システムに認証されたユーザーは、すべてのバケットにあるオブジェクトを照会することができます。
PUT /apiary?acl= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161011T190354Z
Host: kr.object.ncloudstorage.com
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>{owner-user-id}</ID>
<DisplayName>{owner-user-id}</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>{first-grantee-user-id}</ID>
<DisplayName>{first-grantee-user-id}</DisplayName>
</Grantee>
<Permission>READ_ACP</Permission>
</Grant>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>{second-grantee-user-id}</ID>
<DisplayName>{second-grantee-user-id}</DisplayName>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
レスポンスの例
HTTP/1.1 200 OK
Date: Tue, 4 Oct 2016 19:03:55 GMT
Accept-Ranges: bytes
x-amz-request-id: 73d3cd4a-ff1d-4ac9-b9bb-43529b11356a
バケットに適用されるアクセス制御リスト(ACL)の照会
提供されるパラメータと一緒にバケットにGETリクエストを送信すると、リクエストしたバケットに適用されたACLを照会します。
構文
GET https://{endpoint}/{bucket-name}?acl= # path style
GET https://{bucket-name}.{endpoint}?acl= # virtual host style
リクエストの例
以下は、バケットに適用されたACLの照会をリクエストする例です。
GET /apiary?acl= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161011T190354Z
Host: kr.object.ncloudstorage.com
レスポンスの例
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2016 14:14:34 GMT
Accept-Ranges: bytes
x-amz-request-id: eb57e60e-d84e-4237-b18a-be9c2bb0deb8
Content-Type: application/xml
Content-Length: 550
<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>{owner-user-id}</ID>
<DisplayName>{owner-user-id}</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>{owner-user-id}</ID>
<DisplayName>{owner-user-id}</DisplayName>
</Grantee>
<Permission>FULL_CONTROL</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
一度に複数のオブジェクトを削除
バケット及び該当のパラメータのパスが指定されたPOSTリクエストを送信すると、指定されたオブジェクトの集合を削除します。x-amz-content-sha256ヘッダーに追加でContent-MD5ヘッダーが必要です。オペレーションに使用されるパラメータ、ペイロードはありません。
構文
POST https://{endpoint}/{bucket-name}/?delete= # path style
POST https://{bucket-name}.{endpoint}/?delete= # virtual host style
リクエストの例
POST /example?delete= HTTP/1.1
Authorization: {authorization-string}
Host: kr.object.ncloudstorage.com
x-amz-date: 20161205T231624Z
x-amz-content-sha256: 3ade096cd9471017539ede10c4d8aa05a1ecd015a16f4f090e9fcee92a816cf4
Content-MD5: zhi+TmIAhD2U3GfoYayyTQ==
Content-Type: text/plain; charset=utf-8
<?xml version="1.0" encoding="UTF-8"?>
<Delete>
<Object>
<Key>surplus-bee</Key>
</Object>
<Object>
<Key>unnecessary-bee</Key>
</Object>
</Delete>
レスポンスの例
HTTP/1.1 200 OK
Date: Wed, 30 Nov 2016 18:54:53 GMT
Accept-Ranges: bytes
x-amz-request-id: a6232735-c3b7-4c13-a7b2-cd40c4728d51
Content-Type: application/xml
Content-Length: 207
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Deleted>
<Key>surplus-bee</Key>
</Deleted>
<Deleted>
<Key>unnecessary-bee</Key>
</Deleted>
</DeleteResult>
バケットでキャンセルまたは未完了のマルチパートのアップロードの照会
提供されるパラメータと一緒にバケットにGETリクエストを送信すると、キャンセルまたは未完了のマルチパートアップロード情報を照会します。
構文
GET https://{endpoint}/{bucket-name}?uploads= # path style
GET https://{bucket-name}.{endpoint}?uploads= # virtual host style
パラメータ
名前 | タイプ | 説明 |
---|---|---|
prefix | string | {prefix}で始まるオブジェクト名のみレスポンスするように制限します。 |
delimiter | string | prefixとdelimiterの間にあるオブジェクトをグループ化しました。 |
encoding-type | string | XMLでサポートしないUnicode文字がオブジェクト名に使用された場合、パラメータをurlに設定すると、エンコーディングの問題を解決することができます。 |
max-uploads | integer | レスポンスに表示するオブジェクトの数を制限します。デフォルトであり、最大値は1000です。 |
key-marker | string | リストが始まるべきの位置からオブジェクトを指定します。 |
upload-id-marker | string | key-markerrが指定されない場合は無視して、指定された場合には、upload-id-markerの上にパートリストが始まるところを設定します。 |
リクエストの例
以下は、キャンセルされたか、未完了のすべてのマルチパートアップロードの照会をリクエストする例です。
GET /apiary?uploads= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161011T190354Z
Host: kr.object.ncloudstorage.com
レスポンスの例(進行中のマルチパートアップロードがない場合)
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2016 15:22:27 GMT
Accept-Ranges: bytes
x-amz-request-id: 9fa96daa-9f37-42ee-ab79-0bcda049c671
Content-Type: application/xml
Content-Length: 374
<ListMultipartUploadsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Bucket>apiary</Bucket>
<KeyMarker/>
<UploadIdMarker/>
<NextKeyMarker>multipart-object-123</NextKeyMarker>
<NextUploadIdMarker>0000015a-df89-51d0-2790-dee1ac994053</NextUploadIdMarker>
<MaxUploads>1000</MaxUploads>
<IsTruncated>false</IsTruncated>
<Upload>
<Key>file</Key>
<UploadId>0000015a-d92a-bc4a-c312-8c1c2a0e89db</UploadId>
<Initiator>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Initiator>
<Owner>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
<Initiated>2017-03-16T22:09:01.002Z</Initiated>
</Upload>
<Upload>
<Key>multipart-object-123</Key>
<UploadId>0000015a-df89-51d0-2790-dee1ac994053</UploadId>
<Initiator>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Initiator>
<Owner>
<ID>d4d11b981e6e489486a945d640d41c4d</ID>
<DisplayName>d4d11b981e6e489486a945d640d41c4d</DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
<Initiated>2017-03-18T03:50:02.960Z</Initiated>
</Upload>
</ListMultipartUploadsResult>
バケットに適用されたCORS(cross-origin resource sharing)設定の照会
提供されるパラメータと一緒にバケットにGETリクエストを送信すると、リクエストしたバケットに適用されたCORS(cross-origin resource sharing)の設定情報を照会します。
構文
GET https://{endpoint}/{bucket-name}?cors= # path style
GET https://{bucket-name}.{endpoint}?cors= # virtual host style
リクエストの例
以下は、名前が「apiary」であるバケットに適用されたCORS設定の照会をリクエストする例です。
GET /apiary?cors= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161011T190354Z
Host: kr.object.ncloudstorage.com
レスポンスの例 (適用されたCORS設定がない場合)
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2016 15:20:30 GMT
Accept-Ranges: bytes
x-amz-request-id: 0b69bce1-8420-4f93-a04a-35d7542799e6
Content-Type: application/xml
Content-Length: 123
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"/>
バケットに適用するCORS(cross-origin resource sharing)設定の生成
提供されるパラメータと一緒にバケットにPUTリクエストを送信すると、新しいCORS(cross-origin resource sharing)設定を生成したり、既存の設定を修正します。参考までに本文にあるSHA256ハッシュに追加でContent-MD5ヘッダーが必要です。
構文
PUT https://{endpoint}/{bucket-name}?cors= # path style
PUT https://{bucket-name}.{endpoint}?cors= # virtual host style
ペイロードの要素 (オプション)
CORSのピュアな要素(AllowedOrigin、AllowedMethod)を定義するXMLブロックには、2つのペイロードの要素があります。
要素 | 説明 |
---|---|
MaxAgeSeconds | 指定したリソースに該当するプリフライト(pre-flight)のOPTIONSリクエストに対する最大レスポンス時間を意味します(単位:秒)。 |
ExposeHeader | 外部のアプリケーションに公開されるヘッダーを定義します。 |
リクエストの例
以下は、GET、PUT、POSTのリクエストをバケットに送信できるようにwww.example.comからのリクエストを許可するCORS設定の追加をリクエストする例です。
GET /apiary?cors= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161011T190354Z
x-amz-content-sha256: 2938f51643d63c864fdbea618fe71b13579570a86f39da2837c922bae68d72df
Content-MD5: GQmpTNpruOyK6YrxHnpj7g==
Content-Type: text/plain
Host: kr.object.ncloudstorage.com
Content-Length: 237
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http:www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
</CORSRule>
</CORSConfiguration>
レスポンスの例
HTTP/1.1 200 OK
Date: Wed, 5 Oct 2016 15:39:38 GMT
Accept-Ranges: bytes
x-amz-request-id: 7afca6d8-e209-4519-8f2c-1af3f1540b42
Content-Length: 0
バケットに適用されたCORS(cross-origin resource sharing)設定の削除
提供されるパラメータと一緒にバケットにDELETEリクエストを送信すると、リクエストされたバケットに適用されたCORS(cross-origin resource sharing) 設定を削除します。
構文
DELETE https://{endpoint}/{bucket-name}?cors= # path style
DELETE https://{bucket-name}.{endpoint}?cors= # virtual host style
リクエストの例
以下は、バケットに適用されたCORS設定の削除をリクエストする例です。
GET /apiary?cors= HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20161011T190354Z
Host: kr.object.ncloudstorage.com
サーバから204 No Contentで応答します。