This topic describes how to use Object Storage Service (OSS) SDK for PHP V2 to enable or disable the real-time access of Archive objects feature for a bucket.
Usage notes
The sample code in this topic uses the China (Hangzhou) region (
cn-hangzhou) as an example. A public endpoint is used by default. If you want to access OSS from other Alibaba Cloud services in the same region, use an internal endpoint. For more information about the mappings between OSS regions and endpoints, see Regions and endpoints.
Sample code
Enable real-time access of Archive objects for a bucket
You can use the following code to enable the real-time access of Archive objects feature for a bucket.
<?php
// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Define the descriptions for command-line arguments.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region is required. This is the region where the bucket is located.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint is optional. This is the domain name that other services can use to access OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // The bucket name is required.
];
// Generate a list of long options to parse command-line arguments.
$longopts = \array_map(function ($key) {
return "$key:"; // A colon (:) is added to each parameter to indicate that a value is required.
}, array_keys($optsdesc));
// Parse the command-line arguments.
$options = getopt("", $longopts);
// Check whether required arguments are missing.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help"; // Prompt the user that a required argument is missing.
exit(1);
}
}
// Obtain the values of the command-line arguments.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The name of the bucket.
// Load credentials, including the AccessKey ID and AccessKey secret, from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault();
// Set the credentials provider.
$cfg->setCredentialsProvider($credentialsProvider);
// Set the region.
$cfg->setRegion($region);
// If an endpoint is provided, set the endpoint.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Create an OSS client instance.
$client = new Oss\Client($cfg);
// Create a request object to enable the real-time access of Archive objects feature for the bucket.
$request = new Oss\Models\PutBucketArchiveDirectReadRequest(
bucket: $bucket, // The name of the bucket.
archiveDirectReadConfiguration: new Oss\Models\ArchiveDirectReadConfiguration(
enabled: true // Enable the real-time access of Archive objects feature.
)
);
// Call the putBucketArchiveDirectRead method to enable the real-time access of Archive objects feature for the bucket.
$result = $client->putBucketArchiveDirectRead($request);
// Print the result.
printf(
'status code:' . $result->statusCode . PHP_EOL . // The HTTP status code of the response.
'request id:' . $result->requestId // The unique ID of the request.
);
Query whether real-time access of Archive objects is enabled for a bucket
You can use the following code to query whether the real-time access of Archive objects feature is enabled for a bucket.
<?php
// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Define the descriptions for command-line arguments.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region is required. This is the region where the bucket is located.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint is optional. This is the domain name that other services can use to access OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // The bucket name is required.
];
// Generate a list of long options to parse command-line arguments.
$longopts = \array_map(function ($key) {
return "$key:"; // A colon (:) is added to each parameter to indicate that a value is required.
}, array_keys($optsdesc));
// Parse the command-line arguments.
$options = getopt("", $longopts);
// Check whether required arguments are missing.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help"; // Prompt the user that a required argument is missing.
exit(1);
}
}
// Obtain the values of the command-line arguments.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The name of the bucket.
// Load credentials, including the AccessKey ID and AccessKey secret, from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault();
// Set the credentials provider.
$cfg->setCredentialsProvider($credentialsProvider);
// Set the region.
$cfg->setRegion($region);
// If an endpoint is provided, set the endpoint.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Create an OSS client instance.
$client = new Oss\Client($cfg);
// Create a request object to obtain the configurations of the real-time access of Archive objects feature for the bucket.
$request = new Oss\Models\GetBucketArchiveDirectReadRequest(
bucket: $bucket // The name of the bucket.
);
// Call the getBucketArchiveDirectRead method to obtain the configurations of the real-time access of Archive objects feature for the bucket.
$result = $client->getBucketArchiveDirectRead($request);
// Print the result.
printf(
'status code:' . $result->statusCode . PHP_EOL . // The HTTP status code of the response.
'request id:' . $result->requestId . PHP_EOL . // The unique ID of the request.
'archive direct read config:' . var_export($result->archiveDirectReadConfiguration->enabled, true) . PHP_EOL // The status that indicates whether the real-time access of Archive objects feature is enabled.
);
References
For the complete sample code to enable the real-time access of Archive objects feature for a bucket, see GitHub Sample.
For more information about the API operation to enable the real-time access of Archive objects feature for a bucket, see PutBucketArchiveDirectRead.
For more information about the API operation to query whether the real-time access of Archive objects feature is enabled for a bucket, see GetBucketArchiveDirectRead.