バケットとオブジェクトにACLを設定して、リソースへのアクセスを制御できます。
ACLの詳細については、「概要」をご参照ください。
バケットACL
バケットには、次の3つのACLのいずれかを設定できます。
- Public Read/Write: All users, including anonymous users, can read and write objects in the bucket.
- 公開読み取り: バケット所有者のみが、バケット内のオブジェクトに対して書き込み操作を実行できます。 匿名ユーザーを含む他のユーザーは、バケット内のオブジェクトに対してのみ読み取り操作を実行できます。
- 非公開: このバケットの所有者または許可されたユーザーのみが、バケット内のオブジェクトを読み書きできます。 Other users, including anonymous users cannot access the objects in the bucket without authorization.
By default, the ACL of a bucket is set to private when the bucket is created. バケットを作成したら、
putBucketACL
を使用してバケットのACLを設定するか、getBucketACL
を使用してバケットのACLを照会します。 let OSS = require('ali-OSS ')
let client = new OSS({
region: '<お住まいの地域>'
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<AccessKeySecret>' 、
bucket: '<Your bucket name>'
});
async function bucketACL () {
try {
let result = await client.getBucketACL('bucket-name');
console.log (結果);
let result = await client.putBucketACL('bucket-name', 'acl');
console.log(result);
} catch (e) {
console.log(e);
}
}
bucketACL();
オブジェクトACL
オブジェクトには、次の4つのACLのいずれかを設定できます。
- デフォルト: オブジェクトはバケットのACLを継承します。つまり、オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。
- Public Read/Write: All users, including anonymous users, can read and write the object.
- 公開読み取り: オブジェクトの所有者のみが、オブジェクトに対して書き込み操作を実行できます。 匿名ユーザーを含む他のユーザーは、オブジェクトに対して読み取り操作のみを実行できます。
- 非公開: このオブジェクトの所有者または許可されたユーザーのみが、オブジェクトを読み書きできます。 Other users, including anonymous users cannot access the object without authorization.
デフォルトでは、オブジェクトのACLは、オブジェクトがアップロードされたときにオブジェクトが格納されるバケットのACLと同じです。 After you upload an object, you call use
putACL
to set an ACL for the object. let OSS = require('ali-oss')
let client = new OSS({
region: '<お住まいの地域>'
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<AccessKeySecret>' 、
bucket: '<Your bucket name>'
});
async function bucketACL () {
try {
let result = await client.getACL('my-object ');
console.log(result.acl); // デフォルト
client.putACL('my-object '、'public-read') を待ちます。
result = await client.getACL('my-object ');
console.log(result.acl); // public-read
} catch (e) {
console.log(e);
}
}
重要
- オブジェクトをアップロードするときにオブジェクトにACLを設定しない場合、オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じになります。
- オブジェクトのACLがデフォルトでない場合、オブジェクトにアクセスするときにオブジェクトACLがバケットACLよりも優先されます。
- オブジェクトのACLがPublic ReadまたはPublic Read/Writeの場合、ブラウザでオブジェクトのURLを入力してオブジェクトにアクセスできます。 例:
http://bucket-name.oss-cn-hangzhou.aliyuncs.com/object.jpg
。