Object Storage Service (OSS) は、OSSバケットに保存されているリソースに関連するイベントを記録するためのアクセスログを生成します。 バケットのロギングを有効にして設定すると、事前定義された命名規則に基づいて1時間ごとにログオブジェクトが生成され、指定されたバケットにログオブジェクトが保存されます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
ロギングを有効にするには、
oss:PutBucketLogging
権限が必要です。 ログ設定をクエリするには、oss:GetBucketLogging
権限が必要です。 ロギングを無効にするには、oss:DeleteBucketLogging
権限が必要です。 詳細については、「RAMポリシーの一般的な例」をご参照ください。
バケットのロギングの有効化
次のコードは、バケットのロギングを有効にする方法の例を示しています。
Aliyun.OSSを使用した
Aliyun.OSS.Common; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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";
// ログオブジェクトが保存されている宛先バケットの名前を指定します。 送信元バケットと送信先バケットは、同じバケットまたは異なるバケットにすることができます。
var targetBucketName = "destbucket";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
// ログオブジェクトをlog /ディレクトリに保存するように指定します。 このパラメーターを指定すると、ログオブジェクトは宛先バケットの指定されたディレクトリに保存されます。 このパラメーターを指定しない場合、ログオブジェクトは宛先バケットのルートディレクトリに保存されます。
var request = new SetBucketLoggingRequest(bucketName, targetBucketName, "log/");
// ソースバケットのロギングを有効にします。
client.SetBucketLogging(request);
Console.WriteLine("Set bucket:{0} Logging successed", bucketName);
}
キャッチ (OssException ex)
{
Console.WriteLine("エラー情報で失敗: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
}
バケットのログ設定の表示
次のコードは、バケットのログ設定を照会する方法の例を示しています。
Aliyun.OSSを使用した
Aliyun.OSS.Common; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
// バケットのログ設定を表示します。
var result = client.GetBucketLogging(bucketName);
Console.WriteLine("Get bucket:{0} Logging successed, prefix:{1}", bucketName, result.TargetPrefix);
}
キャッチ (OssException ex)
{
Console.WriteLine("エラー情報で失敗: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
}
バケットのロギングを無効にする
次のコードは、バケットのロギングを無効にする方法の例を示しています。
Aliyun.OSSを使用した
Aliyun.OSS.Common; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
// バケットのロギングを無効にします。
client.DeleteBucketLogging(bucketName);
Console.WriteLine("バケットの削除:{0} ロギングが成功しました" 、bucketName);
}
キャッチ (OssException ex)
{
Console.WriteLine("エラー情報で失敗: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
}
参考資料
ロギングの設定に使用される完全なサンプルコードについては、『GitHub』をご参照ください。
バケットのロギングを有効にするために呼び出すことができるAPI操作の詳細については、「PutBucketLogging」をご参照ください。
バケットのログ設定を照会するために呼び出すことができるAPI操作の詳細については、「GetBucketLogging」をご参照ください。
バケットのロギングを無効にするために呼び出すことができるAPI操作の詳細については、「DeleteBucketLogging」をご参照ください。