すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:PutObjectACL

最終更新日:Feb 23, 2024

この操作では、オブジェクトのアクセス制御リスト (ACL) を変更します。 バケット内のオブジェクトの読み取りおよび書き込み権限を持つバケット所有者のみが、この操作を呼び出してオブジェクトACLを変更できます。

バージョン管理

既定では、PutObjectACL操作が呼び出され、現在のバージョンのオブジェクトのACLが設定されます。 リクエストでバージョンIDを指定して、指定したバージョンのオブジェクトのACLを設定できます。

  • リクエストにバージョンIDを指定し、関連付けられたオブジェクトのバージョンが削除マーカーである場合、OSSは405 MethodNotAllowedエラーを返します。

  • リクエストにバージョンIDを指定せず、関連するオブジェクトの最新バージョンが削除マーカーである場合、OSSは404 NoSuchKeyエラーを返します。

ACL の概要

PutObjectACL操作を呼び出すと、リクエストにx-oss-object-aclヘッダーを設定して、オブジェクトのACLを設定できます。 次の表に、オブジェクトに対して構成できるACLを示します。

ACL

説明

プライベート

オブジェクトはプライベートリソースです。 オブジェクトを読み書きする権限を持つのは、オブジェクトの所有者だけです。 他のユーザーはオブジェクトにアクセスできません。

パブリック読み取り

オブジェクトはパブリック読み取りリソースです。 オブジェクトの所有者だけが、このオブジェクトを読み書きする権限を持っています。 他のユーザーはオブジェクトを読むことしかできません。

public-read-write

オブジェクトはパブリック読み書きリソースです。 すべてのユーザーには、オブジェクトの読み書き権限があります。

default

オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。

説明
  • オブジェクトのACLは、オブジェクトが格納されているバケットのACLよりも優先されます。 たとえば、ACLがpublic-read-writeであるオブジェクトが、ACLがprivateであるバケットに格納されている場合、すべてのユーザーがオブジェクトを読み書きできます。 デフォルトでは、オブジェクトのACLを設定しない場合、オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じになります。

  • オブジェクトを読み取る操作には、GetObject、HeadObject、CopyObject、およびUploadPartCopyがあり、CopyObjectとUploadPartCopyがソースオブジェクトを読み取ります。 オブジェクトを書き込む操作は、PutObject、PostObject、AppendObject、DeleteObject、DeleteMultipleObjects、CompleteMultipartUpload、およびCopyObjectを含み、CopyObjectは、コピー先オブジェクトを書き込む。

  • オブジェクトを書き込むための操作を呼び出すときに、x-oss-object-aclヘッダーをリクエストに含めて、オブジェクトのACLを設定することもできます。 たとえば、x-oss-object-aclヘッダーをPutObjectリクエストに含めて、アップロードするオブジェクトのACLを設定できます。

リクエストの構造

PUT /ObjectName?acl HTTP/1.1
x-oss-object-acl: 権限
ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com
日付: GMT日付
権限付与: SignatureValue 

リクエストヘッダー

ヘッダー

データ型

必須

説明

x-oss-object-acl

String

必須

公開読み取り

オブジェクトのアクセス制御リスト (ACL) 。

有効な値:

  • default (デフォルト): オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。

  • private: オブジェクトのACLがprivateです。 オブジェクトの読み取りおよび書き込み権限を持つのは、オブジェクトの所有者および許可されたユーザーのみです。

  • public-read: オブジェクトのACLはpublic-readです。 オブジェクトの読み取りおよび書き込み権限を持つのは、オブジェクトの所有者および許可されたユーザーのみです。 他のユーザーには、オブジェクトに対する読み取り権限のみがあります。 このACLを使用するときは注意してください。

  • public-read-write: オブジェクトのACLはpublic-read-writeです。 すべてのユーザーは、オブジェクトに対する読み取りおよび書き込み権限を持っています。 このACLを使用するときは注意してください。

詳細については、「オブジェクトACL」をご参照ください。

HostやDateなど、PutObjectACLリクエストの共通リクエストヘッダーの詳細については、「共通リクエストヘッダー」をご参照ください。

レスポンスヘッダー

このリクエストには、共通のレスポンスヘッダーのみが含まれます。 詳細については、「共通HTTPヘッダー」をご参照ください。

  • バージョン化されていないバケット内のオブジェクトのACLを変更する

    リクエストの例

    PUT /test-object?acl HTTP/1.1
    x-oss-object-acl: public-read
    ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
    日付: 4月29日水曜日05:21:12 GMT 2015
    権限付与: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZ **** 

    レスポンスの例

    HTTP/1.1 200 OK
    x-oss-request-id: 559CC9BDC755F95A64485981
    日付: 4月29日水曜日05:21:12 GMT 2015
    コンテンツ長: 0
    接続: キープアライブ
    サーバー: AliyunOSS 
  • バージョン管理されたバケット内のオブジェクトのACLの変更

    リクエストの例

    PUT /example?acl&versionId=CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0 **** HTTP/1.1
    x-oss-object-acl: public-read
    ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
    日付: 4月2019日火曜日06:30:11 GMT
    承認: OSS qctg2ns3l8u51iu:UTsv3F7L34v + ECq52vURdCSv **** 

    レスポンスの例

    HTTP/1.1 200 OK
    x-oss-version-id: CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0 ****
    x-oss-request-id: 5CAC3BF3B7AEADE017000624
    日付: 4月2019日火曜日06:30:11 GMT
    コンテンツ長: 0
    接続: キープアライブ
    サーバー: AliyunOSS 

SDK

次のプログラミング言語のOSS SDKを使用して、PutObjectACLoperationを呼び出すことができます。

エラーコード

エラーコード

HTTPステータスコード

説明

AccessDenied

403

バケットの所有者ではないか、ACLを変更するオブジェクトを読み書きする権限がありません。

InvalidArgument

400

指定されたx-oss-object-aclの値は無効です。

FileAlreadyExists

409

ACLを変更するオブジェクトは、階層的な名前空間機能が有効になっているバケット内のディレクトリです。