バケットは、Object Storage Service (OSS) に格納されるオブジェクトのコンテナーです。 すべてのオブジェクトはバケットに格納されます。 このトピックでは、バケットのアクセス制御リスト (ACL) を設定および取得する方法について説明します。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、リージョンとエンドポイントをご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、初期化をご参照ください。
バケットの ACL を設定するには、
oss:PutBucketAcl権限が必要です。 バケットの ACL を取得するには、oss:GetBucketAcl権限が必要です。 詳細については、RAM ユーザーへのカスタムポリシーのアタッチをご参照ください。
バケット ACL の設定
バケットには、次の 3 種類の ACL があります:
値 | 説明 | メソッド |
Private | バケットの所有者と承認されたユーザーのみが、バケット内のオブジェクトに対する読み取りおよび書き込み権限を持ちます。 他のユーザーはバケット内のオブジェクトにアクセスできません。 | CannedAccessControlList.Private |
Public-read | バケットの所有者と承認されたユーザーは、バケット内のオブジェクトに対する読み取りおよび書き込み権限を持ちます。 他のユーザーは、バケット内のオブジェクトに対する読み取り権限のみを持ちます。 この権限は注意して使用してください。 | CannedAccessControlList.PublicRead |
Public-read-write | すべてのユーザーがバケット内のオブジェクトに対する読み取りおよび書き込み権限を持ちます。 この権限は注意して使用してください。 | CannedAccessControlList.PublicReadWrite |
次のコードは、バケットの ACL を設定する方法を示しています:
using System;
using Aliyun.OSS;
using Aliyun.OSS.Common;
namespace Samples
{
public class Program
{
public static void Main(string[] args)
{
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケット名を指定します。 例: examplebucket。
var bucketName = "examplebucket";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";
// ClientConfiguration インスタンスを作成し、必要に応じてデフォルトのパラメーターを変更します。
var conf = new ClientConfiguration();
// 署名バージョン 4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;
// OssClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
// バケット ACL を public-read に設定します。
client.SetBucketAcl(bucketName, CannedAccessControlList.PublicRead);
Console.WriteLine("バケット ACL の設定に成功しました");
}
catch (Exception ex)
{
Console.WriteLine("バケット ACL の設定に失敗しました。 {0}", ex.Message);
}
}
}
}バケット ACL の取得
次のコードは、バケットの ACL を取得する方法の例を示しています:
using System;
using Aliyun.OSS;
using Aliyun.OSS.Common;
namespace Samples
{
public class Program
{
public static void Main(string[] args)
{
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケット名を指定します。 例: examplebucket。
var bucketName = "examplebucket";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";
// ClientConfiguration インスタンスを作成し、必要に応じてデフォルトのパラメーターを変更します。
var conf = new ClientConfiguration();
// 署名バージョン 4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;
// OssClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
var acl = client.GetBucketAcl(bucketName);
Console.WriteLine("バケット ACL の取得に成功しました {0}", acl.ACL);
}
catch (Exception ex)
{
Console.WriteLine("バケット ACL の取得に失敗しました。 {0}", ex.Message);
}
}
}
}関連ドキュメント
バケットの ACL を設定するために使用される完全なサンプルコードについては、GitHub の例をご参照ください。
バケットの ACL を取得するために使用される完全なサンプルコードについては、GitHub の例をご参照ください。
バケットの ACL を設定するために使用される API 操作の詳細については、PutBucketAclをご参照ください。
バケットの ACL を取得するために使用される API 操作の詳細については、GetBucketAclをご参照ください。