バケット
OSS はユーザーファイルのネームスペースとしておよび課金、権限制御、ログ機能などの高度な機能の管理エンティティとしてもバケットを使用します。バケット名は OSS 全体でグローバルに一意である必要があり、変更することはできません。OSS に格納されているすべてのオブジェクトはバケットに含める必要があります。イメージ共有 Web サイトなどの 1 つのアプリケーションは、1 つまたは複数のバケットに対応します。最大 10 個のバケットを作成できますが、各バケット内のオブジェクト数には制限がありません。各バケットには最大 2 PB のデータを格納できます。
命名規則
バケットの命名規則は次のとおりです。
- 小文字のアルファベット、数字、ハイフン (-) のみを使用できます。
- 先頭の文字は小文字のアルファベットまたは数字である必要があります。
- 長さは 3 ~ 63 バイトでなければなりません。
バケットの作成
以下のコードを使用してバケットを作成できます。
String bucketName = "my-bucket-name";
// Initialize OSSClient
var client = new OssClient(endpoint, accessId, accessKey);
// Creates a Bucket
client.CreateBucket(bucketName);
バケット名はグローバルに一意であるため、他のユーザーのバケット名と同じにならないように注意する必要があります。
ユーザーのすべてのバケットのリスト
以下のコードで、ユーザーのすべてのバケットがリストされます。
// Initialize OSSClient
var client = new OssClient(endpoint, accessId, accessKey);
var buckets = client.ListBuckets();
foreach (var bucket in buckets)
{
Console.WriteLine(bucket.Name + ", " + bucket.Location + ", " + bucket.Owner);
}
CNAME アクセス
独自のドメイン名の CNAME をバケットのドメイン名に対応付けた後、ドメイン名を通じて OSS にアクセスできます。
// For example, your domain name is "http://my-cname.com" and you direct the CNAME to your bucket domain name "mybucket.oss-cn-hangzhou.aliyuncs.com"
OssClient client = new OssClient("http://my-cname.com/", /* accessKeyId */, /* accessKeySecret */);
PutObjectResult result = client.putObject("mybucket", /* key */, /* input */, /* metadata */);
OSSClient クラスインスタンスを作成し、バケットへのアクセスに使用されていたエンドポイントを post-CNAME ドメイン名に変更するだけです。同時に、その後の操作でこの OSSClient インスタンスを使用するときにバケット名に入力できるのは、指定されたバケット名のみです。
バケットの有無の確認
バケットの有無を確認するには、次のコードを使用できます。
// Initialize OSSClient
var client = new OssClient(endpoint, accessId, accessKey);
String bucketName = "your-bucket";
var exist = client.DoesBucketExist(bucketName);
Console.WriteLine("exist ? " + exist);
バケット ACL の設定
バケット ACL を設定するには、次のコードを使用できます。
// Initialize OSSClient
var client = new OssClient(endpoint, accessId, accessKey);
String bucketName = "your-bucket";
// Make bucket ACL as public read
client.SetBucketAcl(bucketName, CannedAccessControlList.PublicRead);
バケット ACL の取得
バケット ACL を取得するには、次のコードを使用できます。
// Initialize OSSClient
var client = new OssClient(endpoint, accessId, accessKey);
String bucketName = "your-bucket";
var acl = client.GetBucketAcl(bucketName);
Console.WriteLine(acl.ToString());
バケットの削除
次のコードでバケットは削除されます。
// Initialize OSSClient
var client = new OssClient(endpoint, accessId, accessKey);
String bucketName = "your-bucket";
client.DeleteBucket(bucketName);
バケットが空でない (バケットにオブジェクトが含まれる) 場合、バケットは削除できません。バケットを削除する前に、バケット内のすべてのオブジェクトを削除する必要があります。