オブジェクトのアクセス制御リスト (ACL) は、バケットから継承された値、プライベート、パブリック読み取り、およびパブリック読み取り /書き込みのいずれかに設定できます。 このトピックでは、オブジェクトのACLを管理する方法について説明します。
使用上の注意
このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。
オブジェクトACL
ACL | 説明 | 値 |
バケットから継承 | オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。 | default |
プライベート | オブジェクトに対する読み取りおよび書き込み権限を持つのは、オブジェクト所有者と許可されたユーザーのみです。 | 非公開 |
一般公開 | オブジェクトに対する読み取りおよび書き込み権限を持つのは、オブジェクト所有者と許可されたユーザーのみです。 すべてのユーザーがオブジェクトの読み取り権限を持っています。 オブジェクトACLをこの値に設定する場合は注意してください。 | 公開読み取り |
パブリック読み取り /書き込み | すべてのユーザーがオブジェクトに対する読み取りおよび書き込み権限を持っています。 オブジェクトACLをこの値に設定する場合は注意してください。 | 公開読み取り/書き込み |
オブジェクトのACLは、オブジェクトが格納されているバケットのACLよりも優先されます。 たとえば、バケットのACLがプライベートで、バケット内のオブジェクトのACLがパブリック読み取り /書き込みの場合、すべてのユーザーにそのオブジェクトに対する読み取りおよび書き込み権限が付与されます。 オブジェクトのACLが設定されていない場合、オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じになります。
オブジェクトの ACL の設定
次のサンプルコードは、examplebucketという名前のバケット内のexampleobject.txtオブジェクトのACLをprivateに設定する方法の例を示しています。
OSSPutObjectACLRequest *request = [OSSPutObjectACLRequest new];
// Specify the name of the bucket. Example: examplebucket.
request.bucketName = @"examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampleobject.txt.
request.objectKey = @"exampleobject.txt";
/**
* Configure the object ACL.
* public-read
* private
* public-read-write
* default
*/
request.acl = @"private";
OSSTask * putObjectACLTask = [client putObjectACL:request];
[putObjectACLTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"put object ACL success!");
} else {
NSLog(@"put object ACL failed, error: %@", task.error);
}
return nil;
}];
// Implement synchronous blocking to wait for the task to complete.
// [putObjectACLTask waitUntilFinished];
オブジェクトのACLを照会する
次のサンプルコードは、examplebucketという名前のバケット内のexampleobject.txtという名前のオブジェクトのACLを照会する方法の例を示しています。
OSSGetObjectACLRequest *request = [OSSGetObjectACLRequest new];
// Specify the name of the bucket. Example: examplebucket.
request.bucketName = @"examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampleobject.txt.
request.objectName = @"exampleobject.txt";
OSSTask * getObjectACLTask = [client getObjectACL:request];
[getObjectACLTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetObjectACLResult *result = task.result;
NSLog(@"objectACL: %@", result.grant);
} else {
NSLog(@"get object ACL failed, error: %@", task.error);
}
return nil;
}];
// Implement synchronous blocking to wait for the task to complete.
// [putObjectACLTask waitUntilFinished];
関連ドキュメント
オブジェクトのACLを設定するために呼び出すAPI操作の詳細については、「PutObjectACL」をご参照ください。
オブジェクトのACLを照会するために呼び出すAPI操作の詳細については、「GetObjectACL」をご参照ください。
OSSClientインスタンスを初期化する方法の詳細については、「初期化」をご参照ください。