O Object Storage Service (OSS) permite definir políticas de retenção baseadas em tempo para buckets. O período de retenção varia de 1 dia a 70 anos. Este tópico descreve como crie, obter, bloquear e cancele uma política de retenção.
Observações de uso
Os exemplos de código deste tópico usam o ID da região China (Hangzhou)
cn-hangzhoue um endpoint público por padrão. Para acessar o OSS a partir de outros produtos da Alibaba Cloud na mesma região, use um endpoint interno. Para mais informações sobre regiões e endpoints do OSS, consulte Regiões e endpoints.Este tópico fornece um exemplo de leitura de credenciais de acesso em variáveis de ambiente. Para saber mais sobre a configuração de credenciais de acesso, consulte Configure credenciais de acesso.
Exemplos de código
Crie uma política de retenção
Use o código a seguir para crie uma política de retenção:
<?php
// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Define command line argument descriptions.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located', 'required' => True], // Required. The region where the bucket is located.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS', 'required' => False], // Optional. The domain name that other services can use to access OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // Required. The name of the bucket.
];
// Generate a long options list to parse command line arguments.
$longopts = \array_map(function ($key) {
return "$key:"; // Add a colon after each argument to indicate that a value is required.
}, array_keys($optsdesc));
// Parse the command line arguments.
$options = getopt("", $longopts);
// Check if any 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);
}
}
// Get the command line argument values.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The name of the bucket.
// Load credential information, such as AccessKey ID and AccessKey secret, from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Use the default configurations of the software development kit (SDK).
$cfg = Oss\Config::loadDefault();
// Set the credential 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 initialize the retention policy for the bucket. Set the retention period to 3 days.
$request = new Oss\Models\InitiateBucketWormRequest(
bucket: $bucket,
initiateWormConfiguration: new Oss\Models\InitiateWormConfiguration(
retentionPeriodInDays: 3 // The retention period in days.
));
// Call the initiateBucketWorm method to initialize the retention policy for the bucket.
$result = $client->initiateBucketWorm($request);
// Print the returned result.
printf(
'status code:' . $result->statusCode . PHP_EOL . // The HTTP response status code.
'request id:' . $result->requestId . PHP_EOL . // The unique ID of the request.
'worm id:' . $result->wormId // The ID of the retention policy.
);
Cancele uma política de retenção desbloqueada
Use o código a seguir para cancele uma política de retenção desbloqueada:
<?php
// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Define command line argument descriptions.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located', 'required' => True], // Required. The region where the bucket is located.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS', 'required' => False], // Optional. The domain name that other services can use to access OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // Required. The name of the bucket.
];
// Generate a long options list to parse command line arguments.
$longopts = \array_map(function ($key) {
return "$key:"; // Add a colon after each argument to indicate that a value is required.
}, array_keys($optsdesc));
// Parse the command line arguments.
$options = getopt("", $longopts);
// Check if any 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);
}
}
// Get the command line argument values.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The name of the bucket.
// Load credential information, such as 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 credential 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 cancel the retention policy of the bucket.
$request = new Oss\Models\AbortBucketWormRequest(bucket: $bucket);
// Call the abortBucketWorm method to cancel the retention policy of the bucket.
$result = $client->abortBucketWorm($request);
// Print the returned result.
printf(
'status code:' . $result->statusCode . PHP_EOL . // The HTTP response status code.
'request id:' . $result->requestId // The unique ID of the request.
);
Obter uma política de retenção
Use o código a seguir para obter a configuração de uma política de retenção:
<?php
// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Define command line argument descriptions.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located', 'required' => True], // Required. The region where the bucket is located.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS', 'required' => False], // Optional. The domain name that other services can use to access OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // Required. The name of the bucket.
"worm-id" => ['help' => 'The worm id of the bucket', 'required' => True], // Required. The ID of the retention policy.
];
// Generate a long options list to parse command line arguments.
$longopts = \array_map(function ($key) {
return "$key:"; // Add a colon after each argument to indicate that a value is required.
}, array_keys($optsdesc));
// Parse the command line arguments.
$options = getopt("", $longopts);
// Check if any 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);
}
}
// Get the command line argument values.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The name of the bucket.
$wormId = $options["worm-id"]; // The ID of the retention policy.
// Load credential information, such as 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 credential 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 get the retention policy of the bucket.
$request = new Oss\Models\GetBucketWormRequest(bucket: $bucket);
// Call the getBucketWorm method to get the retention policy of the bucket.
$result = $client->getBucketWorm($request);
// Print the returned result.
printf(
'status code:' . $result->statusCode . PHP_EOL . // The HTTP response status code.
'request id:' . $result->requestId . PHP_EOL . // The unique ID of the request.
'worm config:' . var_export($result->wormConfiguration, true) // The content of the retention policy configuration.
);
Estender o período de retenção de um objeto
Use o código a seguir para estender o período de retenção de uma política de retenção bloqueada:
<?php
// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Define command line argument descriptions.
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located', 'required' => True], // Required. The region where the bucket is located.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS', 'required' => False], // Optional. The domain name that other services can use to access OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // Required. The name of the bucket.
"worm-id" => ['help' => 'The worm id of the bucket', 'required' => True], // Required. The ID of the retention policy.
];
// Generate a long options list to parse command line arguments.
$longopts = \array_map(function ($key) {
return "$key:"; // Add a colon after each argument to indicate that a value is required.
}, array_keys($optsdesc));
// Parse the command line arguments.
$options = getopt("", $longopts);
// Check if any 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);
}
}
// Get the command line argument values.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The name of the bucket.
$wormId = $options["worm-id"]; // The ID of the retention policy.
// Load credential information, such as 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 credential 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 extend the retention policy of the bucket. The extension period is 3 days.
$request = new Oss\Models\ExtendBucketWormRequest(
bucket: $bucket,
wormId: $wormId,
extendWormConfiguration: new Oss\Models\ExtendWormConfiguration(
retentionPeriodInDays: 3 // The extension period is 3 days.
));
// Call the extendBucketWorm method to extend the retention policy of the bucket.
$result = $client->extendBucketWorm($request);
// Print the returned result.
printf(
'status code:' . $result->statusCode . PHP_EOL . // The HTTP response status code.
'request id:' . $result->requestId // The unique ID of the request.
);
Documentos relacionados
Para mais informações sobre como crie uma política de retenção, consulte InitiateBucketWorm.
Para mais informações sobre como cancele uma política de retenção desbloqueada, consulte AbortBucketWorm.
Para mais informações sobre como obter a configuração de uma política de retenção, consulte GetBucketWorm.
Para mais informações sobre como estender o período de retenção de uma política de retenção, consulte ExtendBucketWorm.