PutObjectACL 操作は、オブジェクトのアクセス制御リスト (ACL) を変更します。この操作を実行するには、バケットの所有者であり、オブジェクトに対する読み取りおよび書き込み権限を持っている必要があります。
バージョニング
デフォルトでは、PutObjectACL 操作はオブジェクトの現在のバージョンの ACL を設定します。特定のバージョンの ACL を設定するには、リクエストに versionId パラメーターを含めます。
削除マーカーであるオブジェクトバージョンに versionId を指定すると、OSS は 405 Method Not Allowed エラーを返します。
versionId を指定せず、オブジェクトの最新バージョンが削除マーカーである場合、OSS は 404 NoSuchKey エラーを返します。
ACL
PutObjectACL 操作では、PUT リクエストの x-oss-object-acl リクエストヘッダーを使用して、オブジェクトの ACL を設定します。オブジェクトには、次のアクセス権限が利用可能です。
ACL | 説明 |
private | オブジェクトは非公開リソースです。オブジェクトの所有者のみが読み取りおよび書き込み権限を持ちます。他のユーザーはオブジェクトにアクセスできません。 |
public-read | オブジェクトは公開読み取りリソースです。オブジェクトの所有者は読み取りおよび書き込み権限を持ちます。他のすべてのユーザーは読み取り専用権限を持ちます。 |
public-read-write | オブジェクトは公開読み書きリソースです。すべてのユーザーがオブジェクトに対する読み取りおよび書き込み権限を持ちます。 |
default | オブジェクトは、格納されているバケットの権限を継承します。 |
オブジェクト ACL はバケット ACL よりも優先されます。たとえば、オブジェクトの ACL が公開読み書きであっても、非公開バケット内にある場合、すべてのユーザーがそのオブジェクトにアクセスできます。オブジェクトに特定の ACL がない場合、そのバケットの ACL を継承します。
読み取り操作には、GetObject、HeadObject、および CopyObject と UploadPartCopy 操作でのソースオブジェクトの読み取りが含まれます。書き込み操作には、PutObject、PostObject、AppendObject、DeleteObject、DeleteMultipleObjects、CompleteMultipartUpload、および CopyObject 操作での送信先オブジェクトへの書き込みが含まれます。
書き込みリクエストに x-oss-object-acl ヘッダーを含めることでもオブジェクトの ACL を設定できます。これは PutObjectACL 操作の呼び出しに相当します。たとえば、PutObject リクエストに x-oss-object-acl ヘッダーを含めることで、オブジェクトのアップロード時にその ACL を設定できます。
バケットでバケットレベルの保持ポリシー (BucketWorm) または オブジェクトレベルの保持ポリシー (ObjectWorm) が有効になっている場合、保持期間中のオブジェクトの ACL を設定または変更することはできません。
権限
デフォルトでは、Alibaba Cloud アカウント (root ユーザー) は完全な権限を持っています。Alibaba Cloud アカウント (root ユーザー) 配下の RAM ユーザーまたは RAM ロールは、デフォルトでは何の権限も持っていません。Alibaba Cloud アカウント (root ユーザー) またはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
|
API |
アクション |
説明 |
|
PutObjectACL |
|
バケット内のオブジェクトの 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 を指定します。 有効な値:
アクセス権限の詳細については、「オブジェクト ACL」をご参照ください。 |
この操作には、Host や Date などの共通リクエストヘッダーも含まれます。詳細については、「共通リクエストヘッダー」をご参照ください。
レスポンスヘッダー
DescribeRegions リクエストへの応答に含まれるすべてのヘッダーは、共通の応答ヘッダーです。詳細については、「共通の応答ヘッダー」をご参照ください。
例
バージョニングが無効なバケット内のオブジェクトの 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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218eレスポンス例
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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218eレスポンス例
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
SDK
以下のプログラミング言語の OSS SDK を使用して、この操作を呼び出すことができます:
ossutil CLI
ossutil での対応するコマンドは put-object-acl です。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
AccessDenied | 403 | お客様がバケットの所有者でないか、オブジェクトに対する読み取りおよび書き込み権限がありません。 |
InvalidArgument | 400 | 指定された x-oss-object-acl の値が無効です。 |
FileAlreadyExists | 409 | バケットで階層型名前空間が有効になっている場合、ディレクトリの ACL を変更しようとすると、このエラーが返されます。 |