<?php
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located.', 'required' => true],
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => false],
"bucket" => ['help' => 'The name of the bucket.', 'required' => true],
];
$longopts = array_map(fn($key) => "$key:", array_keys($optsdesc));
$options = getopt("", $longopts);
foreach ($optsdesc as $key => $value) {
if ($value['required'] === true && empty($options[$key])) {
echo "Error: the following arguments are required: --$key, " . $value['help'];
exit(1);
}
}
$region = $options["region"];
$bucket = $options["bucket"];
// Load credentials from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
$client = new Oss\Client($cfg);
// Set access tracking status to ENABLED.
$accessMonitorConfiguration = new Oss\Models\AccessMonitorConfiguration(
status: Oss\Models\AccessMonitorStatusType::ENABLED
);
$request = new Oss\Models\PutBucketAccessMonitorRequest(
bucket: $bucket,
accessMonitorConfiguration: $accessMonitorConfiguration
);
$result = $client->putBucketAccessMonitor($request);
printf(
'status code: %s' . PHP_EOL .
'request ID: %s' . PHP_EOL,
$result->statusCode,
$result->requestId
);
Run the example:
php enable_access_tracking.php --region cn-hangzhou --bucket <your-bucket-name>