Todos os produtos
Search
Central de documentação

Object Storage Service:Ciclo de vida (PHP SDK V1)

Última atualização: Aug 25, 2026

Nem todos os dados enviados ao Object Storage Service (OSS) exigem acesso frequente. Para fins de conformidade ou arquivamento, alguns dados devem ser armazenados em uma classe de armazenamento frio. Dependendo do cenário de negócios, também é possível excluir em lote dados que não precisam mais ser mantidos em um bucket. Para reduzir custos de armazenamento, configure regras de ciclo de vida com base na última hora de modificação. Essas regras transferem periodicamente objetos de uma classe de armazenamento quente para uma classe de armazenamento frio ou excluem os objetos.

Observações

  • Este tópico utiliza o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros services da Alibaba Cloud na mesma região, use um endpoint interno. Para obter detalhes sobre as regiões e endpoints suportados, consulte Regions and endpoints.

  • Este tópico demonstra a criação de uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como uso de domínio personalizado ou autenticação com credenciais do Security Token Service (STS), consulte Create an OssClient.

  • Para definir regras de ciclo de vida, você deve ter a permissão oss:PutBucketLifecycle. Para visualizar regras de ciclo de vida, é necessária a permissão oss:GetBucketLifecycle. Para excluir todas as regras de ciclo de vida, você precisa da permissão oss:DeleteBucketLifecycle. Para obter mais informações, consulte Grant custom access policies to a RAM user.

Definir regras de ciclo de vida

O código a seguir exemplifica como definir regras de ciclo de vida para o bucket examplebucket com base na última hora de modificação. Após definir as regras, caso queira modificar uma ou mais delas, consulte How do I modify the configuration of one or more lifecycle rules?.

<?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");

Visualizar regras de ciclo de vida

O código a seguir exemplifica como visualizar as regras de ciclo de vida do 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");

Excluir todas as regras de ciclo de vida

O código a seguir exemplifica como excluir todas as regras de ciclo de vida do bucket examplebucket. Para excluir uma ou mais regras específicas, consulte How do I delete one or more lifecycle rules?.

<?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");

Referências

  • Para obter o código de exemplo completo sobre gerenciamento de ciclo de vida, consulte o exemplo no GitHub.

  • Para obter informações sobre a operação de API usada para definir regras de ciclo de vida, consulte PutBucketLifecycle.

  • Para obter detalhes sobre a operação de API usada para visualizar regras de ciclo de vida, consulte GetBucketLifecycle.

  • Para saber mais sobre a operação de API usada para excluir todas as regras de ciclo de vida, consulte DeleteBucketLifecycle.