OSS允许用户对Bucket设置访问日志记录,设置之后对于Bucket的访问会被记录成日志,日志存储在OSS上由用户指定的Bucket中,文件的格式为:
<TargetPrefix><SourceBucket>-YYYY-mm-DD-HH-MM-SS-UniqueString
其中TargetPrefix由用户指定。日志规则由以下3项组成:
提示:
- 以下场景的完整代码参见:GitHub
<?php
/**
* 设置bucket的Logging配置
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function putBucketLogging($ossClient, $bucket)
{
$option = array();
//访问日志存放在本bucket下
$targetBucket = $bucket;
$targetPrefix = "access.log";
try {
$ossClient->putBucketLogging($bucket, $targetBucket, $targetPrefix, $option);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
<?php
/**
* 获取bucket的Logging配置
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function getBucketLogging($ossClient, $bucket)
{
$loggingConfig = null;
$options = array();
try {
$loggingConfig = $ossClient->getBucketLogging($bucket, $options);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
print($loggingConfig->serializeToXml() . "\n");
}
<?php
/**
* 删除bucket的Logging配置
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function deleteBucketLogging($ossClient, $bucket)
{
try {
$ossClient->deleteBucketLogging($bucket);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
前提条件:
操作步骤:
use OSS\OssClient;
use OSS\Core\OssUtil;
$accessKeyId = "<yourAccessKeyId>";
$accessKeySecret = "<yourAccessKeySecret>";
$bucket = "<yourBucketName>";
$endpoint = "<yourEndpoint>";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
putBucketLogging
方法开启日志记录。指定目标Bucket(通常为同一账号下的另一个Bucket)和日志文件前缀。function putBucketLogging($ossClient, $bucket, $targetBucket, $targetPrefix){
try {
$ossClient->putBucketLogging($bucket, [
'TargetBucket' => $targetBucket,
'TargetPrefix' => $targetPrefix
]);
echo "日志功能已成功开启。\n";
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
}
}
// 示例调用
putBucketLogging($ossClient, $bucket, $bucket, "access-logs/");
操作步骤:
getBucketLogging
方法获取当前Bucket的日志配置。function getBucketLogging($ossClient, $bucket){
try {
$loggingConfig = $ossClient->getBucketLogging($bucket);
echo "当前Bucket日志配置:\n" . $loggingConfig->serializeToXml() . "\n";
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
}
}
// 示例调用
getBucketLogging($ossClient, $bucket);
操作步骤:
deleteBucketLogging
方法删除日志配置,实现关闭日志记录功能。function deleteBucketLogging($ossClient, $bucket){
try {
$ossClient->deleteBucketLogging($bucket);
echo "Bucket日志功能已关闭。\n";
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
}
}
// 示例调用
deleteBucketLogging($ossClient, $bucket);
<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString
。.dlsdata/
。参考以上代码示例和注意事项,您可以根据实际需求管理阿里云OSS Bucket的访问日志功能。