この操作では、オブジェクトのアクセス制御リスト (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) 。 有効な値:
詳細については、「オブジェクト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を変更するオブジェクトは、階層的な名前空間機能が有効になっているバケット内のディレクトリです。 |