Toutes les données chargées dans Object Storage Service (OSS) ne nécessitent pas un accès fréquent. Pour des raisons de conformité ou d'archivage, certaines données doivent être stockées dans une classe de stockage à froid. Selon vos scénarios métier, vous pouvez également souhaiter supprimer par lot les données que vous n'avez plus besoin de conserver dans un bucket. Pour réduire les coûts de stockage, configurez des règles de cycle de vie basées sur la date de dernière modification. Ces règles permettent de transférer périodiquement les objets d'une classe de stockage chaud vers une classe de stockage à froid, ou de les supprimer.
Notes
Avant de configurer des règles de cycle de vie basées sur la date de dernière modification des objets, assurez-vous de bien comprendre cette fonctionnalité. Pour plus d'informations, consultez la rubrique Règles de cycle de vie basées sur la date de dernière modification.
Cette rubrique utilise l'endpoint public de la région Chine (Hangzhou). Pour accéder à OSS depuis d'autres services Alibaba Cloud situés dans la même région, utilisez un endpoint interne. Pour obtenir la liste des régions et des endpoints pris en charge, consultez la rubrique Régions et endpoints.
Cette rubrique explique comment créer une instance OSSClient avec un endpoint OSS. Pour d'autres configurations, telles que l'utilisation d'un domaine personnalisé ou l'authentification via des identifiants du Security Token Service (STS), consultez la rubrique Créer un OssClient.
Pour définir des règles de cycle de vie, vous devez disposer de l'autorisation
oss:PutBucketLifecycle. Pour afficher les règles de cycle de vie, vous devez disposer de l'autorisationoss:GetBucketLifecycle. Pour supprimer toutes les règles de cycle de vie, vous devez disposer de l'autorisationoss:DeleteBucketLifecycle. Pour plus d'informations, consultez la rubrique Accorder des politiques d'accès personnalisées à un utilisateur RAM.
Définir des règles de cycle de vie
L'exemple de code suivant montre comment définir des règles de cycle de vie pour le bucket examplebucket en fonction de la date de dernière modification. Une fois les règles définies, si vous souhaitez en modifier une ou plusieurs, consultez la rubrique Comment modifier la configuration d'une ou plusieurs règles de cycle de vie ?.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\LifecycleConfig;
use OSS\Model\LifecycleRule;
use OSS\Model\LifecycleAction;
// Obtain access credentials from environment variables. Before you run this code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
$provider = new EnvironmentVariableCredentialsProvider();
// The China (Hangzhou) endpoint is used as an example. Replace it with the actual endpoint for your region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Enter the bucket name.
$bucket= "examplebucket";
// Set the rule ID and file prefix.
$ruleId0 = "rule0";
$matchPrefix0 = "A0/";
$ruleId1 = "rule1";
$matchPrefix1 = "A1/";
$lifecycleConfig = new LifecycleConfig();
$actions = array();
// Expire objects 3 days after their last modification time.
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DAYS, 3);
$lifecycleRule = new LifecycleRule($ruleId0, $matchPrefix0, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
$actions = array();
// Expire objects created before the specified date.
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DATE, '2022-10-12T00:00:00.000Z');
$lifecycleRule = new LifecycleRule($ruleId1, $matchPrefix1, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
Afficher les règles de cycle de vie
L'exemple de code suivant montre comment afficher les règles de cycle de vie du bucket examplebucket :
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// Obtain access credentials from environment variables. Before you run this code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
$provider = new EnvironmentVariableCredentialsProvider();
// The China (Hangzhou) endpoint is used as an example. Replace it with the actual endpoint for your region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Enter the bucket name.
$bucket= "examplebucket";
$lifecycleConfig = null;
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$lifecycleConfig = $ossClient->getBucketLifecycle($bucket);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
print($lifecycleConfig->serializeToXml() . "\n");
Supprimer toutes les règles de cycle de vie
L'exemple de code suivant montre comment supprimer toutes les règles de cycle de vie du bucket examplebucket. Pour supprimer une ou plusieurs règles spécifiques, consultez la rubrique Comment supprimer une ou plusieurs règles de cycle de vie ?.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// Obtain access credentials from environment variables. Before you run this code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
$provider = new EnvironmentVariableCredentialsProvider();
// The China (Hangzhou) endpoint is used as an example. Replace it with the actual endpoint for your region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Enter the bucket name.
$bucket= "examplebucket";
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->deleteBucketLifecycle($bucket);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
Références
Pour obtenir l'exemple de code complet relatif à la gestion du cycle de vie, consultez l'exemple GitHub.
Pour plus d'informations sur l'opération API permettant de définir des règles de cycle de vie, consultez la rubrique PutBucketLifecycle.
Pour plus d'informations sur l'opération API permettant d'afficher les règles de cycle de vie, consultez la rubrique GetBucketLifecycle.
Pour plus d'informations sur l'opération API permettant de supprimer toutes les règles de cycle de vie, consultez la rubrique DeleteBucketLifecycle.