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

Object Storage Service:PutObjectACL

最終更新日:Feb 21, 2025

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

バージョン管理

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

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

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

ACL の概要

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

ACL

説明

非公開

オブジェクトは非公開リソースです。オブジェクトのオーナーだけが、オブジェクトの読み取りおよび書き込み権限を持ちます。他のユーザーはオブジェクトにアクセスできません。

公開読み取り

オブジェクトは公開読み取りリソースです。オブジェクトのオーナーだけが、このオブジェクトの読み取りおよび書き込み権限を持ちます。他のユーザーはオブジェクトを読み取ることしかできません。

公開読み書き

オブジェクトは公開読み書きリソースです。すべてのユーザーが、オブジェクトの読み取りおよび書き込み権限を持ちます。

デフォルト

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

説明
  • オブジェクトの ACL は、オブジェクトが格納されているバケットの ACL よりも優先されます。たとえば、ACL が公開読み書きのオブジェクトが、ACL が非公開のバケットに格納されている場合、すべてのユーザーがオブジェクトの読み取りおよび書き込みを実行できます。デフォルトでは、オブジェクトの ACL を設定しない場合、オブジェクトの ACL は、オブジェクトが格納されているバケットの ACL と同じになります。

  • オブジェクトを読み取る操作には、GetObject、HeadObject、CopyObject、および UploadPartCopy が含まれます。CopyObject および UploadPartCopy はソースオブジェクトを読み取ります。オブジェクトを書き込む操作には、PutObject、PostObject、AppendObject、DeleteObject、DeleteMultipleObjects、CompleteMultipartUpload、および CopyObject が含まれます。CopyObject はデスティネーションオブジェクトに書き込みます。

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

構文

PUT /ObjectName?acl HTTP/1.1
x-oss-object-acl: Permission
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

リクエストヘッダー

ヘッダー

タイプ

必須

説明

x-oss-object-acl

String

はい

public-read

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

有効な値:

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

  • private: オブジェクトの ACL は非公開です。オブジェクトのオーナーと承認されたユーザーのみが、オブジェクトに対する読み取りおよび書き込み権限を持ちます。

  • public-read: オブジェクトの ACL は公開読み取りです。オブジェクトのオーナーと承認されたユーザーのみが、オブジェクトに対する読み取りおよび書き込み権限を持ちます。他のユーザーは、オブジェクトに対する読み取り権限のみを持ちます。この ACL を使用する場合は注意してください。

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

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

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

レスポンスヘッダー

PutObjectACL リクエストへのレスポンスのすべてのヘッダーは、共通レスポンスヘッダーです。詳細については、「共通レスポンスヘッダー」をご参照ください。

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

    リクエストの例

    PUT /test-object?acl HTTP/1.1
    x-oss-object-acl: public-read
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Wed, 29 Apr 2015 05:21:12 GMT
    Authorization: OSS qn6q**************:77Dv****************

    レスポンスの例

    HTTP/1.1 200 OK
    x-oss-request-id: 559CC9BDC755F95A64485981
    Date: Wed, 29 Apr 2015 05:21:12 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS
  • バージョン管理されたバケット内のオブジェクトの ACL を変更する

    リクエストの例

    PUT /example?acl&versionId=CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0**** HTTP/1.1
    x-oss-object-acl: public-read
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 06:30:11 GMT
    Authorization: OSS qn6q**************:77Dv****************

    レスポンスの例

    HTTP/1.1 200 OK
    x-oss-version-id: CAEQMhiBgIC3rpSD0BYiIDBjYTk5MmIzN2JlNjQxZTFiNGIzM2E3OTliODA0****
    x-oss-request-id: 5CAC3BF3B7AEADE017000624
    Date: Tue, 09 Apr 2019 06:30:11 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS

OSS SDK

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

ossutil

PutObjectACL 操作に対応する ossutil コマンドについては、「put-object-acl」をご参照ください。

エラーコード

エラーコード

HTTP ステータスコード

説明

AccessDenied

403

バケットオーナーではないか、ACL を変更するオブジェクトの読み取りおよび書き込み権限がありません。

InvalidArgument

400

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

FileAlreadyExists

409

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