オブジェクトのアクセス制御リスト (ACL) は、バケットから継承、非公開、公開読み取り、公開読み書きのいずれかの値に設定できます。このトピックでは、オブジェクトの ACL を管理する方法について説明します。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名の使用や Security Token Service (STS) などの方法で OSSClient インスタンスを作成する必要があります。詳細については、「初期化」をご参照ください。
オブジェクトの ACL
アクセス権限 | 説明 | アクセス権限 |
バケットから継承 | ファイルはバケットのアクセス権限を継承します。 | default |
非公開 | オブジェクト所有者と認可されたユーザーのみが、オブジェクトに対する読み取りおよび書き込み権限を持ちます。 | private |
公開読み取り | オブジェクト所有者と認可されたユーザーのみが、オブジェクトに対する読み取りおよび書き込み権限を持ちます。すべてのユーザーがオブジェクトに対する読み取り権限を持ちます。オブジェクトの ACL をこの値に設定する場合は注意が必要です。 | public-read |
公開読み書き | すべてのユーザーがオブジェクトに対する読み取りおよび書き込み権限を持ちます。オブジェクトの ACL をこの値に設定する場合は注意が必要です。 | public-read-write |
オブジェクトの ACL は、そのオブジェクトが格納されているバケットの ACL よりも優先されます。たとえば、バケットの ACL が非公開で、バケット内のオブジェクトの ACL が公開読み書きの場合、すべてのユーザーにそのオブジェクトに対する読み取りおよび書き込み権限が付与されます。オブジェクトの ACL が設定されていない場合、オブジェクトの ACL は、そのオブジェクトが格納されているバケットの ACL と同じになります。
オブジェクトの ACL の設定
次のサンプルコードは、examplebucket という名前のバケット内の exampleobject.txt オブジェクトの ACL を非公開に設定する方法の例を示しています:
OSSPutObjectACLRequest *request = [OSSPutObjectACLRequest new];
// バケットの名前を指定します。例:examplebucket
request.bucketName = @"examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例:exampleobject.txt
request.objectKey = @"exampleobject.txt";
/**
* オブジェクトの 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;
}];
// 同期ブロッキングを実装して、タスクが完了するのを待ちます。
// [putObjectACLTask waitUntilFinished];ファイルのアクセス権限の取得
次のサンプルコードは、examplebucket という名前のバケット内の exampleobject.txt という名前のオブジェクトの ACL をクエリする方法の例を示しています:
OSSGetObjectACLRequest *request = [OSSGetObjectACLRequest new];
// バケットの名前を指定します。例:examplebucket
request.bucketName = @"examplebucket";
// オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: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;
}];
// 同期ブロッキングを実装して、タスクが完了するのを待ちます。
// [putObjectACLTask waitUntilFinished];関連ドキュメント
オブジェクトの ACL を設定するために呼び出すことができる API 操作の詳細については、「PutObjectACL」をご参照ください。
オブジェクトの ACL をクエリするために呼び出すことができる API 操作の詳細については、「GetObjectACL」をご参照ください。
OSSClient インスタンスを初期化する方法の詳細については、「初期化」をご参照ください。