Todos os produtos
Search
Central de documentação

Object Storage Service:Convert object storage classes

Última atualização: Sep 23, 2026

O Object Storage Service (OSS) oferece suporte a várias classes de armazenamento: Standard, Infrequent Access (IA), Archive, Cold Archive e Deep Cold Archive. Use regras de ciclo de vida para converter automaticamente a classe de armazenamento de um objeto. Para converter manualmente, chame a operação CopyObject.

Aviso
  • Para buckets com o OSS-HDFS ativado, não modifique a classe de armazenamento de nenhum objeto no diretório de armazenamento de dados .dlsdata/.

  • Se alterar a classe de armazenamento de um objeto no diretório .dlsdata/ para IA, o objeto permanecerá acessível por meio do OSS-HDFS. Se alterar a classe de armazenamento para Archive, Cold Archive ou Deep Cold Archive, o objeto ficará inacessível pelo OSS-HDFS. Para acessar o objeto, restaure-o primeiro.

Converter classes de armazenamento de objetos automaticamente usando regras de ciclo de vida

Converter classes de armazenamento com base na hora da última modificação

  • Armazenamento com redundância local (LRS)本地冗余

    As regras de conversão para objetos LRS são as seguintes:

    • Você pode converter objetos Standard LRS para IA LRS, Archive LRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos IA LRS para Archive LRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Archive LRS para Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Cold Archive LRS para Deep Cold Archive LRS.

    Ao configurar regras de ciclo de vida para converter objetos para IA, Archive, Cold Archive e Deep Cold Archive no mesmo bucket, especifique períodos de transição que atendam à seguinte condição:

    Período de transição para IA < Período de transição para Archive < Período de transição para Cold Archive < Período de transição para Deep Cold Archive

  • Armazenamento com redundância de zona (ZRS)同城

    As regras de conversão para arquivos em armazenamento com redundância de zona são as seguintes:

    • Você pode converter objetos Standard ZRS para IA ZRS, Archive ZRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos IA ZRS para Archive ZRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Archive ZRS para Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Cold Archive LRS para Deep Cold Archive LRS.

Para obter mais informações, consulte Lifecycle rules based on the last modified time.

Converter classes de armazenamento com base na hora do último acesso

Importante
  • Para converter objetos da classe de armazenamento Standard ou IA para a classe Archive, Cold Archive ou Deep Cold Archive, envie um ticket para solicitar as permissões necessárias. Após a aprovação da solicitação, especifique a classe de armazenamento de destino.

  • Após a aprovação da solicitação, ao usar uma regra de ciclo de vida baseada na hora do último acesso para converter um objeto de Standard ou IA para Archive, Cold Archive ou Deep Cold Archive, o sistema considera a hora do último acesso do objeto como o momento em que o rastreamento de acesso foi ativado para o bucket.

  • Armazenamento com redundância local (LRS)

    1.jpg

    As regras de conversão para objetos LRS são as seguintes:

    • Você pode converter objetos Standard LRS para IA LRS, Archive LRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Após converter um objeto de Standard LRS para IA LRS, especifique também se deseja convertê-lo automaticamente de volta para Standard LRS após o acesso.

    • Você pode converter objetos IA LRS para Archive LRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Archive LRS para Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Cold Archive LRS para Deep Cold Archive LRS.

  • ZRS

    2.jpg

    As regras de conversão para arquivos em armazenamento com redundância de zona são as seguintes:

    • Você pode converter objetos Standard ZRS para IA ZRS, Archive ZRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Após converter um objeto de Standard ZRS para IA ZRS, especifique também se deseja convertê-lo automaticamente de volta para Standard ZRS após o acesso.

    • Você pode converter objetos IA ZRS para Archive ZRS, Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Archive ZRS para Cold Archive LRS ou Deep Cold Archive LRS.

    • Você pode converter objetos Cold Archive LRS para Deep Cold Archive LRS.

Para obter mais informações, consulte Lifecycle rules based on the last access time.

Métodos para converter classes de armazenamento usando regras de ciclo de vida

Há vários métodos para configurar regras de ciclo de vida. Essas regras podem mover objetos para uma classe de armazenamento especificada após um determinado período ou excluir objetos e partes expirados. As etapas a seguir descrevem como usar uma regra de ciclo de vida para mover objetos para uma classe de armazenamento específica.

Use the OSS console

  1. Acesse o console do OSS.

  2. No painel de navegação à esquerda, clique em Buckets. Na página Buckets, encontre e clique no bucket desejado.

  3. No painel de navegação à esquerda, escolha Data Management > Lifecycle.

  4. Opcional: crie uma regra de ciclo de vida com base na hora do último acesso e ative a opção Enable Access Tracking na página Lifecycle.

  5. Na página Lifecycle, clique em Create Rule.

  6. No painel Create Lifecycle Rule, defina os parâmetros da regra conforme descrito nas tabelas a seguir.

    • Se o versionamento estiver desativado para o bucket:

      Seção

      Parâmetro

      Descrição

      Basic Settings

      Status

      O status da regra. Valores válidos: Start e Disable.

      • Se ativada, o OSS move ou exclui objetos com base na regra.

      • Se desativada, o sistema suspende a tarefa de ciclo de vida.

      Applied To

      O escopo da regra. Selecione Object Prefix ou Whole Bucket.

      Nota

      Se selecionar By Prefix, insira o prefixo completo. Por exemplo, para aplicar a regra a todos os objetos no diretório src/dir1/, defina o prefixo como src/dir1/. Um prefixo dir1 não corresponderia a esses objetos conforme o esperado. O prefixo não pode começar com uma barra (/) ou uma barra invertida (\). Por exemplo, /prod e /prod/ são prefixos inválidos. Use prod/ ou prod em vez disso.

      Allow Overlapped Prefixes

      Por padrão, o OSS verifica se há sobreposição entre os prefixos das regras de ciclo de vida. Por exemplo, ao configurar as duas regras a seguir com prefixos sobrepostos:

      • Regra 1

        Exclui todos os objetos com o prefixo dir1/ 180 dias após a última modificação.

      • Regra 2

        Move todos os objetos com o prefixo dir1/dir2/ para a classe de armazenamento Infrequent Access 30 dias após a última modificação e os exclui 60 dias após a última modificação.

      Se não selecionar esta opção ao configurar a Regra 2, o OSS detectará que os objetos no diretório dir1/dir2/ correspondem a duas regras de exclusão. Como resultado, o OSS rejeita a Regra 2 e relata o erro Overlap for same action type Expiration..

      Se selecionar esta opção ao configurar a Regra 2, os objetos no diretório dir1/dir2/ serão movidos para a classe de armazenamento Infrequent Access 30 dias após a última modificação e excluídos 60 dias após a última modificação. Outros objetos no diretório dir1/ serão excluídos 180 dias após a última modificação.

      Nota

      Se configurar várias regras e uma delas se aplicar a todo o bucket, o sistema considera isso um caso de prefixos sobrepostos.

      Prefix

      O prefixo do objeto ao qual a regra se aplica.

      • Se definir o prefixo como img, a regra se aplicará a todos os objetos cujos nomes começam com img, como imgtest.png e img/example.jpg.

      • Se definir o prefixo como img/, a regra se aplicará a todos os objetos cujos nomes começam com img/, como img/example.jpg e img/test.jpg.

      O prefixo aceita apenas correspondência exata de strings e não admite variáveis dinâmicas. Para obter detalhes, consulte Longest prefix match e Prefixes do not support dynamic variables na descrição da opção Allow Overlapped Prefixes.

      Tag

      Aplica a regra apenas a objetos com a tag especificada.

      • Se não definir um prefixo, mas especificar uma tag com chave=a e valor=1, a regra se aplicará a todos os objetos no bucket com a tag a=1.

      • Se definir o prefixo como img e especificar uma tag com chave=a e valor=1, a regra se aplicará a todos os objetos no bucket cujos nomes começam com img e possuem a tag a=1.

      Object tagging.

      NOT

      A opção NOT exclui objetos com um prefixo e uma tag específicos da regra de ciclo de vida.

      Importante
      • Ao ativar a opção NOT, especifique pelo menos um prefixo ou uma tag.

      • A chave de uma tag especificada na condição NOT não pode ser igual a uma chave definida na condição Tag.

      • O sistema não permite configurar uma política de expiração de partes quando a opção NOT está ativada.

      Object Size

      Aplica a regra a objetos dentro de um intervalo de tamanho especificado.

      • Minimum Size: A regra de ciclo de vida se aplica a objetos maiores que este valor. O valor deve ser maior que 0 B e menor que 5 TB.

      • Maximum Size: A regra de ciclo de vida se aplica a objetos menores que este valor. O valor deve ser maior que 0 B e menor ou igual a 5 TB.

      Importante

      Se especificar um tamanho mínimo e máximo de objeto na mesma regra de ciclo de vida:

      • Certifique-se de que o tamanho máximo seja maior que o tamanho mínimo.

      • O sistema não permite configurar uma política de expiração de partes.

      • O sistema não permite configurar uma política para limpar marcadores de exclusão.

      Policy for Objects

      Object Lifecycle

      Selecione uma política de expiração para objetos. Escolha By Days, By Date ou Disabled. Se selecionar Disabled, a política de expiração de objetos não entrará em vigor.

      Lifecycle-based Rules

      Configure regras para mover a classe de armazenamento de objetos ou excluir objetos expirados. Selecione Infrequent Access, Archive, Cold Archive, Deep Cold Archive ou Data Deletion.

      Por exemplo, se definir Object Lifecycle como By Date e especificar 24 de setembro de 2023, o sistema excluirá automaticamente os objetos modificados pela última vez antes dessa data, sem possibilidade de recuperação.

      Policy for Parts

      Part Lifecycle

      Configure uma política de expiração para partes. Esta opção fica indisponível se você tiver selecionado Tag. Defina a política de expiração de partes como By Days ou By Date, ou selecione Disabled. Se selecionar Disabled, a política de expiração de partes não entrará em vigor.

      Importante

      Uma regra de ciclo de vida deve incluir pelo menos uma política de expiração de objetos ou uma política de expiração de partes.

      Rules for Parts

      Especifica quando as partes expiram com base no número de dias ou na data selecionada na política de expiração de partes. O sistema exclui automaticamente as partes expiradas, sem possibilidade de recuperação.

    • Se o versionamento estiver ativado para o bucket:

      Os parâmetros nas seções Basic Settings e Policy for Parts são configurados da mesma forma que para buckets sem versionamento. A tabela a seguir descreve apenas os parâmetros diferentes.

      Importante

      Antes de configurar uma regra de ciclo de vida, observe que, se o versionamento estiver ativado em um bucket de destino de replicação entre regiões, os marcadores de exclusão sincronizados do bucket de origem (source) convertem as versões atuais de objetos com o mesmo nome no bucket de destino em versões não atuais. Portanto, configure as regras de limpeza para versões não atuais com cuidado para evitar a exclusão acidental de dados.

      Seção

      Parâmetro

      Descrição

      Policy for Current Versions

      Clean up expired object delete marker

      Se o versionamento estiver ativado, o sistema adiciona a opção Clean Up Expired Object Delete Marker à política de expiração. As outras opções permanecem iguais às dos buckets com versionamento desativado.

      Se selecionar esta opção, o OSS excluirá o marcador de exclusão de um objeto expirado caso ele seja a única versão do objeto. Se o objeto tiver várias versões e a mais recente for um marcador de exclusão, o OSS manterá o marcador. Delete markers.

      Importante

      Esta regra não limpa marcadores de exclusão se existirem versões não atuais. Recomendamos limpar prontamente os marcadores de exclusão e as versões não atuais desnecessárias. Caso contrário, o excesso de marcadores de exclusão pode degradar o desempenho da listagem.

      Policy for Previous Versions

      Object Lifecycle

      Defina a política de expiração para versões não atuais. Selecione By Days ou Disabled. Se selecionar Disabled, a política de expiração não entrará em vigor.

      Lifecycle-based Rules

      Especifique um número de dias (N). Uma versão não atual expira N dias após se tornar não atual, e o sistema executa a ação especificada no dia seguinte à expiração. Por exemplo, se definir o valor como 30, um objeto que se torna uma versão não atual em 1º de setembro de 2023 será movido para a classe de armazenamento especificada ou excluído em 1º de outubro de 2023.

      Importante

      É possível determinar quando um objeto se tornou uma versão não atual verificando a hora da última modificação da versão subsequente do objeto.

  7. Clique em OK.

    Após salvar a regra de ciclo de vida, visualize a regra configurada na lista de regras.

Use Alibaba Cloud SDKs

O código a seguir traz exemplos de configuração de regras de ciclo de vida com SDKs comuns. Para obter informações sobre como configurar regras de ciclo de vida com outros SDKs, consulte Overview.

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.common.utils.DateUtil;
import com.aliyun.oss.model.LifecycleRule;
import com.aliyun.oss.model.SetBucketLifecycleRequest;
import com.aliyun.oss.model.StorageClass;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Demo {

    public static void main(String[] args) throws Exception {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket. 
        String bucketName = "examplebucket";
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Create an OSSClient instance. 
        // Call the shutdown method to release resources when the OSSClient is no longer in use.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Create a request by using SetBucketLifecycleRequest. 
            SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName);

            // Specify the ID of the lifecycle rule. 
            String ruleId0 = "rule0";
            // Specify the prefix that you want the lifecycle rule to match. 
            String matchPrefix0 = "A0/";
            // Specify the tag that you want the lifecycle rule to match. 
            Map<String, String> matchTags0 = new HashMap<String, String>();
            // Specify the key and value of the tag. In the example, the key is set to owner and the value is set to John. 
            matchTags0.put("owner", "John");

            String ruleId1 = "rule1";
            String matchPrefix1 = "A1/";
            Map<String, String> matchTags1 = new HashMap<String, String>();
            matchTags1.put("type", "document");

            String ruleId2 = "rule2";
            String matchPrefix2 = "A2/";

            String ruleId3 = "rule3";
            String matchPrefix3 = "A3/";

            String ruleId4 = "rule4";
            String matchPrefix4 = "A4/";

            String ruleId5 = "rule5";
            String matchPrefix5 = "A5/";

            String ruleId6 = "rule6";
            String matchPrefix6 = "A6/";

            // Set the expiration time to three days after the last modified time. 
            LifecycleRule rule = new LifecycleRule(ruleId0, matchPrefix0, LifecycleRule.RuleStatus.Enabled, 3);
            rule.setTags(matchTags0);
            request.AddLifecycleRule(rule);

            // Specify that objects that are created before the specified date expire. 
            rule = new LifecycleRule(ruleId1, matchPrefix1, LifecycleRule.RuleStatus.Enabled);
            rule.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
            rule.setTags(matchTags1);
            request.AddLifecycleRule(rule);

            // Specify that parts expire three days after they are last modified. 
            rule = new LifecycleRule(ruleId2, matchPrefix2, LifecycleRule.RuleStatus.Enabled);
            LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
            abortMultipartUpload.setExpirationDays(3);
            rule.setAbortMultipartUpload(abortMultipartUpload);
            request.AddLifecycleRule(rule);

            // Specify that parts that are created before the specific date expire. 
            rule = new LifecycleRule(ruleId3, matchPrefix3, LifecycleRule.RuleStatus.Enabled);
            abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
            abortMultipartUpload.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
            rule.setAbortMultipartUpload(abortMultipartUpload);
            request.AddLifecycleRule(rule);

            // Specify that the storage classes of objects are changed to IA 10 days after they are last modified, and to Archive 30 days after they are last modified. 
            rule = new LifecycleRule(ruleId4, matchPrefix4, LifecycleRule.RuleStatus.Enabled);
            List<LifecycleRule.StorageTransition> storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.IA);
            storageTransition.setExpirationDays(10);
            storageTransitions.add(storageTransition);
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(30);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            request.AddLifecycleRule(rule);

            // Specify that the storage classes of objects that are last modified before October 12, 2022 are changed to Archive. 
            rule = new LifecycleRule(ruleId5, matchPrefix5, LifecycleRule.RuleStatus.Enabled);
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();

            storageTransition.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));

            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            request.AddLifecycleRule(rule);

            // Specify that rule6 is configured for versioning-enabled buckets. 
            rule = new LifecycleRule(ruleId6, matchPrefix6, LifecycleRule.RuleStatus.Enabled);
            // Specify that the storage classes of objects are changed to Archive 365 days after the objects are last modified. 
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(365);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            // Configure the lifecycle rule to automatically delete expired delete markers. 
            rule.setExpiredDeleteMarker(true);
            // Specify that the storage classes of the previous versions of objects are changed to IA 10 days after the objects are last modified. 
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(10).withStrorageClass(StorageClass.IA);
            // Specify that the storage classes of the previous versions of objects are changed to Archive 20 days after the objects are last modified. 
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition2 =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(20).withStrorageClass(StorageClass.Archive);
            // Specify that the previous versions of objects are deleted 30 days after the objects are last modified. 
            LifecycleRule.NoncurrentVersionExpiration noncurrentVersionExpiration = new LifecycleRule.NoncurrentVersionExpiration().withNoncurrentDays(30);
            List<LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitions = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
            noncurrentVersionStorageTransitions.add(noncurrentVersionStorageTransition2);
            rule.setStorageTransition(storageTransitions);
            rule.setNoncurrentVersionExpiration(noncurrentVersionExpiration);
            rule.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitions);
            request.AddLifecycleRule(rule);

            // Initiate a request to configure lifecycle rules. 
            ossClient.setBucketLifecycle(request);

            // Query the lifecycle rules that are configured for the bucket. 
            List<LifecycleRule> listRules = ossClient.getBucketLifecycle(bucketName);
            for(LifecycleRule rules : listRules){
                System.out.println("ruleId="+rules.getId()+", matchPrefix="+rules.getPrefix());
            }
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

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

Node.js

const OSS = require('ali-oss')

const client = new OSS({
  // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to oss-cn-hangzhou. 
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Specify the name of the bucket. 
  bucket: 'yourbucketname'
});

async function getBucketLifecycle () {
  try {
    const result = await client.getBucketLifecycle('Yourbucketname');
    console.log(result.rules); // Query the lifecycle rules. 

    result.rules.forEach(rule => {
      console.log(rule.id) // Query the rule IDs.  
      console.log(rule.status) // Query the status of the rules. 
      console.log(rule.tags) // Query the tags configured in the lifecycle rules. 
      console.log(rule.expiration.days) // Query the validity period configurations. 
      console.log(rule.expiration.createdBeforeDate) // Query the expiration date configurations. 
      // Query the rule for expired parts. 
      console.log(rule.abortMultipartUpload.days || rule.abortMultipartUpload.createdBeforeDate)
      // Query the rule of storage class conversion. 
      console.log(rule.transition.days || rule.transition.createdBeforeDate) // Query the conversion date configurations. 
      console.log(rule.transition.storageClass) // Query the configurations used to convert storage classes. 
      // Query the lifecycle rule to check whether expired delete markers are automatically deleted. 
      console.log(rule.transition.expiredObjectDeleteMarker)
      // Query the configurations used to convert the storage class of previous versions of the objects. 
      console.log(rule.noncurrentVersionTransition.noncurrentDays) // Query the conversion date configurations for objects of previous versions. 
      console.log(rule.noncurrentVersionTransition.storageClass) // Query the configurations used to convert the storage classes of previous versions of objects. 
    })
  } catch (e) {
    console.log(e);
  }
}
getBucketLifecycle();

Python

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import datetime
from oss2.models import (LifecycleExpiration, LifecycleRule, 
                        BucketLifecycle,AbortMultipartUpload, 
                        TaggingRule, Tagging, StorageTransition,
                        NoncurrentVersionStorageTransition,
                        NoncurrentVersionExpiration)

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Specify that objects expire three days after they are last modified. 
rule1 = LifecycleRule('rule1', 'tests/',
                      status=LifecycleRule.ENABLED,
                      expiration=LifecycleExpiration(days=3))

# Specify that objects created before the specified date expire. 
rule2 = LifecycleRule('rule2', 'tests2/',
                      status=LifecycleRule.ENABLED,
expiration = LifecycleExpiration(created_before_date=datetime.date(2023, 12, 12)))

# Specify that the parts expire three days after they are last modified. 
rule3 = LifecycleRule('rule3', 'tests3/',
                      status=LifecycleRule.ENABLED,
            abort_multipart_upload=AbortMultipartUpload(days=3))

# Specify that parts created before the specified date expire. 
rule4 = LifecycleRule('rule4', 'tests4/',
                      status=LifecycleRule.ENABLED,
                      abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2022, 12, 12)))

# Specify that the storage classes of objects are changed to Infrequent Access (IA) 20 days after they are last modified, and to Archive 30 days after they are last modified. 
rule5 = LifecycleRule('rule5', 'tests5/',
                      status=LifecycleRule.ENABLED,
                      storage_transitions=[StorageTransition(days=20,storage_class=oss2.BUCKET_STORAGE_CLASS_IA),
                            StorageTransition(days=30,storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)])

# Specify the tag that you want the lifecycle rule to match. 
tagging_rule = TaggingRule()
tagging_rule.add('key1', 'value1')
tagging_rule.add('key2', 'value2')
tagging = Tagging(tagging_rule)

# Specify that the storage classes of objects are changed to Archive 365 days after they are last modified.  
# Compared with the preceding rules, rule6 includes the tag condition to match objects. The rule takes effect for objects whose tagging configurations are key1=value1 and key2=value2. 
rule6 = LifecycleRule('rule6', 'tests6/',
                      status=LifecycleRule.ENABLED,
                      storage_transitions=[StorageTransition(created_before_date=datetime.date(2022, 12, 12),storage_class=oss2.BUCKET_STORAGE_CLASS_IA)],
                      tagging = tagging)

# rule7 is a lifecycle rule that applies to a versioning-enabled bucket. 
# Specify that the storage classes of objects are changed to Archive 365 days after they are last modified. 
# Specify that delete markers are automatically removed when they expire. 
# Specify that the storage classes of objects are changed to IA 12 days after they become previous versions. 
# Specify that the storage classes of objects are changed to Archive 20 days after they become previous versions. 
# Specify that objects are deleted 30 days after they become previous versions. 
rule7 = LifecycleRule('rule7', 'tests7/',
              status=LifecycleRule.ENABLED,
              storage_transitions=[StorageTransition(days=365, storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)], 
              expiration=LifecycleExpiration(expired_detete_marker=True),
              noncurrent_version_sotrage_transitions = 
                    [NoncurrentVersionStorageTransition(12, oss2.BUCKET_STORAGE_CLASS_IA),
                     NoncurrentVersionStorageTransition(20, oss2.BUCKET_STORAGE_CLASS_ARCHIVE)],
              noncurrent_version_expiration = NoncurrentVersionExpiration(30))

lifecycle = BucketLifecycle([rule1, rule2, rule3, rule4, rule5, rule6, rule7])

bucket.put_bucket_lifecycle(lifecycle)

C#

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the bucket name. Example: examplebucket. 
var bucketName = "examplebucket";
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";

// Create a ClientConfiguration instance and modify the default parameters based on your requirements.
var conf = new ClientConfiguration();

// Use the signature algorithm V4.
conf.SignatureVersion = SignatureVersion.V4;

// Create an OSSClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
    // Create the first lifecycle rule. 
    LifecycleRule lcr1 = new LifecycleRule()
    {
        ID = "delete obsoleted files",
        Prefix = "obsoleted/",
        Status = RuleStatus.Enabled,
        ExpriationDays = 3,
        Tags = new Tag[1]
    };
    // Specify a tag for the rule. 
    var tag1 = new Tag
    {
        Key = "project",
        Value = "projectone"
    };

    lcr1.Tags[0] = tag1;

    // Create the second lifecycle rule. 
    LifecycleRule lcr2 = new LifecycleRule()
    {
        ID = "delete temporary files",
        Prefix = "temporary/",
        Status = RuleStatus.Enabled,
        ExpriationDays = 20,
        Tags = new Tag[1]         
    };
    // Specify a tag for the rule. 
    var tag2 = new Tag
    {
        Key = "user",
        Value = "jsmith"
    };
    lcr2.Tags[0] = tag2;

    // Specify that parts expire 30 days after they are last modified. 
    lcr2.AbortMultipartUpload = new LifecycleRule.LifeCycleExpiration()
    {
        Days = 30
    };

    LifecycleRule lcr3 = new LifecycleRule();
    lcr3.ID = "only NoncurrentVersionTransition";
    lcr3.Prefix = "test1";
    lcr3.Status = RuleStatus.Enabled;
    lcr3.NoncurrentVersionTransitions = new LifecycleRule.LifeCycleNoncurrentVersionTransition[2]
    {
        // Specify that the storage classes of the previous versions of objects are converted to IA 90 days after they are last modified. 
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.IA,
            NoncurrentDays = 90
        },
        // Specify that the storage classes of the previous versions of objects are converted to Archive 180 days after they are last modified. 
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.Archive,
            NoncurrentDays = 180
        }
    };
    setBucketLifecycleRequest.AddLifecycleRule(lcr1);
    setBucketLifecycleRequest.AddLifecycleRule(lcr2);
    setBucketLifecycleRequest.AddLifecycleRule(lcr3);

    // Configure lifecycle rules. 
    client.SetBucketLifecycle(setBucketLifecycleRequest);
    Console.WriteLine("Set bucket:{0} Lifecycle succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Android-Java

PutBucketLifecycleRequest request = new PutBucketLifecycleRequest();
request.setBucketName("examplebucket");

BucketLifecycleRule rule1 = new BucketLifecycleRule();
// Set the rule ID and file prefix.
rule1.setIdentifier("1");
rule1.setPrefix("A");
// Specify whether to execute the lifecycle rule. If the value is true, OSS periodically executes the rule. If the value is false, OSS ignores the rule.
rule1.setStatus(true);
// Expire objects 200 days after the last modified time.
rule1.setDays("200");
// Transition objects to the Archive storage class after 30 days.
rule1.setArchiveDays("30");
// Expire incomplete multipart uploads after 3 days.
rule1.setMultipartDays("3");
// Transition objects to the Infrequent Access (IA) storage class after 15 days.
rule1.setIADays("15");

BucketLifecycleRule rule2 = new BucketLifecycleRule();
rule2.setIdentifier("2");
rule2.setPrefix("B");
rule2.setStatus(true);
rule2.setDays("300");
rule2.setArchiveDays("30");
rule2.setMultipartDays("3");
rule2.setIADays("15");

ArrayList<BucketLifecycleRule> lifecycleRules = new ArrayList<BucketLifecycleRule>();
lifecycleRules.add(rule1);
lifecycleRules.add(rule2);
request.setLifecycleRules(lifecycleRules);
OSSAsyncTask task = oss.asyncPutBucketLifecycle(request, new OSSCompletedCallback<PutBucketLifecycleRequest, PutBucketLifecycleResult>() {
    @Override
    public void onSuccess(PutBucketLifecycleRequest request, PutBucketLifecycleResult result) {
        OSSLog.logInfo("code::"+result.getStatusCode());

    }

    @Override
    public void onFailure(PutBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
        OSSLog.logError("error: "+serviceException.getRawMessage());

    }
});

task.waitUntilFinished();

Go

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Create an OSSClient instance.
	// Set yourEndpoint to the Endpoint of the bucket. For example, for the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual Endpoint.
	// Set yourRegion to the region where the bucket is located. For example, for the China (Hangzhou) region, set the region to cn-hangzhou. For other regions, use the actual region.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Set the signature version.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Specify the bucket name.
	bucketName := "examplebucket"
	// Specify lifecycle rule 1. This rule specifies that files with the prefix "foo/" expire 3 days after they are last modified.
	rule1 := oss.BuildLifecycleRuleByDays("rule1", "foo/", true, 3)

	// Automatically delete delete markers for objects in a versioning-enabled bucket when the objects have only delete markers.
	deleteMark := true
	expiration := oss.LifecycleExpiration{
		ExpiredObjectDeleteMarker: &deleteMark,
	}

	// Delete noncurrent versions of objects 30 days after they become noncurrent.
	versionExpiration := oss.LifecycleVersionExpiration{
		NoncurrentDays: 30,
	}

	// Transition noncurrent versions of objects to the Infrequent Access (IA) storage class 10 days after they become noncurrent.
	versionTransition := oss.LifecycleVersionTransition{
		NoncurrentDays: 10,
		StorageClass:   "IA",
	}

	// Specify lifecycle rule 2.
	rule2 := oss.LifecycleRule{
		ID:                   "rule2",
		Prefix:               "yourObjectPrefix",
		Status:               "Enabled",
		Expiration:           &expiration,
		NonVersionExpiration: &versionExpiration,
		NonVersionTransitions: []oss.LifecycleVersionTransition{
			versionTransition,
		},
	}

	// Specify lifecycle rule 3. This rule specifies that files with the tag key "tag1" and tag value "value1" expire 3 days after they are last modified.
	rule3 := oss.LifecycleRule{
		ID:     "rule3",
		Prefix: "",
		Status: "Enabled",
		Tags: []oss.Tag{
			{
				Key:   "tag1",
				Value: "value1",
			},
		},
		Expiration: &oss.LifecycleExpiration{Days: 3},
	}

	// Set the lifecycle rules.
	rules := []oss.LifecycleRule{rule1, rule2, rule3}
	err = client.SetBucketLifecycle(bucketName, rules)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

C++

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Initialize the OSS account information. */
    
    /* Set yourEndpoint to the Endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Region to cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Specify the bucket name. For example, examplebucket. */
    std::string BucketName = "examplebucket";

    /* Initialize network resources. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 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. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    SetBucketLifecycleRequest request(BucketName);
    std::string date("2022-10-12T00:00:00.000Z");

    /* Set tags. */
    Tagging tagging;
    tagging.addTag(Tag("key1", "value1"));
    tagging.addTag(Tag("key2", "value2"));

    /* Specify a lifecycle rule. */
    auto rule1 = LifecycleRule();
    rule1.setID("rule1");
    rule1.setPrefix("test1/");
    rule1.setStatus(RuleStatus::Enabled);
    rule1.setExpiration(3);
    rule1.setTags(tagging.Tags());

    /* Specify the expiration time. */
    auto rule2 = LifecycleRule();
    rule2.setID("rule2");
    rule2.setPrefix("test2/");
    rule2.setStatus(RuleStatus::Disabled);
    rule2.setExpiration(date);

    /* rule3 is a lifecycle rule for a bucket with versioning enabled. */
    auto rule3 = LifecycleRule();
    rule3.setID("rule3");
    rule3.setPrefix("test3/");
    rule3.setStatus(RuleStatus::Disabled);

    /* Transition objects to the Archive storage class 365 days after they are last modified. */  
    auto transition = LifeCycleTransition();  
    transition.Expiration().setDays(365);
    transition.setStorageClass(StorageClass::Archive);
    rule3.addTransition(transition);

    /* Automatically remove expired delete markers. */
    rule3.setExpiredObjectDeleteMarker(true);

    /* Transition noncurrent versions of objects to the Infrequent Access storage class 10 days after they become noncurrent. */
    auto transition1 = LifeCycleTransition();  
    transition1.Expiration().setDays(10);
    transition1.setStorageClass(StorageClass::IA);

    /* Transition noncurrent versions of objects to the Archive storage class 20 days after they become noncurrent. */
    auto transition2 = LifeCycleTransition();  
    transition2.Expiration().setDays(20);
    transition2.setStorageClass(StorageClass::Archive);

    /* Delete objects 30 days after they become noncurrent versions. */
    auto expiration  = LifeCycleExpiration(30);
    rule3.setNoncurrentVersionExpiration(expiration);

    LifeCycleTransitionList noncurrentVersionStorageTransitions{transition1, transition2};
    rule3.setNoncurrentVersionTransitionList(noncurrentVersionStorageTransitions);

    /* Set the lifecycle rules. */
    LifecycleRuleList list{rule1, rule2, rule3};
    request.setLifecycleRules(list);
    auto outcome = client.SetBucketLifecycle(request);

    if (!outcome.isSuccess()) {
        /* Handle exceptions. */
        std::cout << "SetBucketLifecycle fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* Release network resources. */
    ShutdownSdk();
    return 0;
}

C

#include "oss_api.h"
#include "aos_http_io.h"
/* Replace yourEndpoint with the Endpoint of the region where your bucket is located. For example, for the China (Hangzhou) region, the Endpoint is https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Replace with your bucket name. For example, examplebucket. */
const char *bucket_name = "examplebucket";
/* Replace yourRegion with the ID of the region where your bucket is located. For example, for the China (Hangzhou) region, the region ID is cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Initialize an aos_string_t variable with a char* string. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Obtain access credentials from environment variables. Before you run this sample code, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. */
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // You must also configure the following two parameters.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Specify whether to use a CNAME to access OSS. A value of 0 means that a CNAME is not used. */
    options->config->is_cname = 0;
    /* Set network parameters, such as the timeout period. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Call the aos_http_io_initialize method at the program entry point to initialize global resources, such as the network and memory. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* The memory pool (pool) for memory management is equivalent to apr_pool_t. The implementation is in the apr library. */
    aos_pool_t *pool;
    /* Create a memory pool. The second parameter is NULL, which indicates that the new memory pool does not inherit from another memory pool. */
    aos_pool_create(&pool, NULL);
    /* Create and initialize options. This parameter includes global configurations, such as endpoint, access_key_id, access_key_secret, is_cname, and curl. */
    oss_request_options_t *oss_client_options;
    /* Allocate memory for options in the memory pool. */
    oss_client_options = oss_request_options_create(pool);
    /* Initialize the client options, oss_client_options. */
    init_options(oss_client_options);
    /* Initialize parameters. */
    aos_string_t bucket;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    aos_list_t lifecycle_rule_list;   
    aos_str_set(&bucket, bucket_name);
    aos_list_init(&lifecycle_rule_list);
    /* Specify the expiration in days. */
    oss_lifecycle_rule_content_t *rule_content_days = oss_create_lifecycle_rule_content(pool);
    aos_str_set(&rule_content_days->id, "rule-1");
    /* Set the object prefix. */
    aos_str_set(&rule_content_days->prefix, "dir1");
    aos_str_set(&rule_content_days->status, "Enabled");
    rule_content_days->days = 3;
    aos_list_add_tail(&rule_content_days->node, &lifecycle_rule_list);
    /* Specify the expiration date. */
    oss_lifecycle_rule_content_t *rule_content_date = oss_create_lifecycle_rule_content(pool);
    aos_str_set(&rule_content_date->id, "rule-2");
    aos_str_set(&rule_content_date->prefix, "dir2");
    aos_str_set(&rule_content_date->status, "Enabled");
    /* The expiration date must be in UTC format.
    aos_str_set(&rule_content_date->date, "2023-10-11T00:00:00.000Z");
    aos_list_add_tail(&rule_content_date->node, &lifecycle_rule_list);
    /* Set the lifecycle rule. */
    resp_status = oss_put_bucket_lifecycle(oss_client_options, &bucket, &lifecycle_rule_list, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("put bucket lifecycle succeeded\n");
    } else {
        printf("put bucket lifecycle failed, code:%d, error_code:%s, error_msg:%s, request_id:%s\n",
            resp_status->code, resp_status->error_code, resp_status->error_msg, resp_status->req_id);
    }
    /* Release the memory pool. This releases the memory allocated to resources during the request. */
    aos_pool_destroy(pool);
    /* Release the previously allocated global resources. */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # The China (Hangzhou) Endpoint is used as an example. Replace it with the actual Endpoint.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name.
bucket = client.get_bucket('examplebucket')
# Set the lifecycle rules.
bucket.lifecycle = [
  Aliyun::OSS::LifeCycleRule.new(
    :id => 'rule1', :enable => true, :prefix => 'foo/', :expiry => 3),
  Aliyun::OSS::LifeCycleRule.new(
    :id => 'rule2', :enable => false, :prefix => 'bar/', :expiry => Date.new(2016, 1, 1))
]

Use ossutil

Para obter mais informações sobre como definir regras de ciclo de vida com o ossutil, consulte put-bucket-lifecycle.

Use the REST API

Se a sua aplicação tiver requisitos específicos, envie solicitações de API REST diretamente. Para isso, escreva manualmente o código para calcular a assinatura. Para obter mais informações, consulte PutBucketLifecycle.

Converter manualmente classes de armazenamento de objetos usando a operação CopyObject

Chame a operação CopyObject para converter a classe de armazenamento de um objeto sobrescrevendo-o.

  • Ao converter a classe de armazenamento de um objeto para IA, Archive, Cold Archive ou Deep Cold Archive, o sistema pode aplicar um tamanho mínimo faturável de 64 KB, uma duração mínima de armazenamento e taxas de recuperação de dados. Para obter mais informações, consulte Usage notes.

  • Restaure objetos Archive, Cold Archive e Deep Cold Archive antes de alterar suas classes de armazenamento. Para obter mais informações sobre como restaurar objetos, consulte Restore objects. Se o acesso em tempo real a objetos Archive estiver ativado, altere a classe de armazenamento de objetos Archive sem restaurá-los. Leituras diretas incorrem em taxas de recuperação de dados para acesso em tempo real. Para obter mais informações, consulte Real-time access of Archive objects.

Nota
  • Em um bucket com versionamento ativado, ao chamar a operação CopyObject para converter a classe de armazenamento de um objeto, o oss gera automaticamente um id de versão exclusivo para a nova versão do objeto. O sistema retorna esse ID de versão no cabeçalho de resposta x-oss-version-id.

  • Em um bucket com versionamento desativado ou suspenso, ao chamar a operação CopyObject para converter a classe de armazenamento de um objeto, o OSS gera automaticamente uma versão com um ID de versão nulo para o novo objeto e sobrescreve a versão existente com um ID de versão nulo. Se o objeto sobrescrito for da classe de armazenamento IA, Archive, Cold Archive ou Deep Cold Archive, haverá cobrança pelo armazenamento de um objeto por um período inferior à duração mínima de armazenamento. Para obter mais informações, consulte How am I charged for objects that are stored for less than the minimum storage duration?.

Regras para converter classes de armazenamento usando o CopyObject

  • LRS

    É possível converter um objeto LRS entre qualquer uma das seguintes classes de armazenamento: Standard LRS, IA LRS, Archive LRS, Cold Archive LRS e Deep Cold Archive LRS.

  • Armazenamento com redundância de zona (ZRS)

    É possível converter um objeto ZRS entre qualquer uma das seguintes classes de armazenamento: Standard ZRS, IA ZRS e Archive ZRS.

    Ao converter um objeto Archive ZRS para um objeto Standard ZRS ou IA ZRS, execute diferentes operações com base nas configurações do bucket:

    • Se o real-time access of Archive objects estiver ativado para o bucket, converta diretamente a classe de armazenamento do objeto Archive sem restaurá-lo.

    • Se o acesso em tempo real a objetos Archive não estiver ativado para o bucket, primeiro restore o objeto Archive antes de converter sua classe de armazenamento.

Métodos para converter classes de armazenamento usando o CopyObject

Após ativar o Prevent Object Overwrites, o sistema não permite chamar a operação CopyObject para converter classes de armazenamento de objetos usando clientes como o console do OSS, SDKs ou ossutil. Para converter classes de armazenamento, use regras de ciclo de vida para conversão automática.

Use the OSS console

Ao alterar a classe de armazenamento de um objeto no console, o tamanho do objeto não pode exceder 1 GB. Para objetos maiores que 1 GB, recomendamos usar um SDK ou o ossutil.

  1. Acesse o console do OSS.

  2. Clique em Buckets e, em seguida, clique no nome do bucket de destino.

  3. No painel de navegação à esquerda, escolha Object Management > Objects.

  4. Na página Objects, localize o objeto de destino e escolha more > Change Storage Class.

  5. Recomendamos ativar a opção Retain User Metadata para preservar os metadados personalizados do objeto ao alterar sua classe de armazenamento.

  6. Selecione uma nova classe de armazenamento e clique em OK.

Use Alibaba Cloud SDKs

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.CopyObjectRequest;
import com.aliyun.oss.model.CopyObjectResult;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.StorageClass;

public class Demo {
    public static void main(String[] args) throws Exception {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // In this example, a bucket and a Standard or IA object are created. 
        // Specify the name of the bucket. Example: examplebucket. 
        String bucketName = "examplebucket";
        // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampleobject.txt. 
        String objectName = "exampleobject.txt";
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        String region = "cn-hangzhou";

        // Create an OSSClient instance.
        // Call the shutdown method to release resources when the OSSClient is no longer in use. 
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Create a CopyObjectRequest object. 
            CopyObjectRequest request = new CopyObjectRequest(bucketName, objectName, bucketName, objectName) ;

            // Create an ObjectMetadata object. 
            ObjectMetadata objectMetadata = new ObjectMetadata();

            // Convert the storage class of the object to Archive. 
            objectMetadata.setHeader("x-oss-storage-class", StorageClass.Archive);
            // Convert the storage class of the object to Cold Archive. 
            // objectMetadata.setHeader("x-oss-storage-class", StorageClass.ColdArchive);
            // Convert the storage class of the object to Deep Cold Archive. 
            // objectMetadata.setHeader("x-oss-storage-class", StorageClass.DeepColdArchive);
            request.setNewObjectMetadata(objectMetadata);

            // Convert the storage class of the object. 
            CopyObjectResult result = ossClient.copyObject(request);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?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 sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
$provider = new EnvironmentVariableCredentialsProvider();
// The endpoint of the China (Hangzhou) region is used in this example. Specify the actual endpoint.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the bucket name.
$bucket= "<yourBucketName>";
// Specify the full path of the object. Do not include the bucket name. Example: destfolder/exampleobject.txt.
$object = "<yourObjectName>";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

try {

    // Specify the storage class for the object after the change. For example, set the storage class to Archive.
    $copyOptions = array(
        OssClient::OSS_HEADERS => array(            
            'x-oss-storage-class' => 'Archive',
            'x-oss-metadata-directive' => 'REPLACE',
        ),
    );
    
    $ossClient->copyObject($bucket, $object, $bucket, $object, $copyOptions);

} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK" . "\n");
const OSS = require('ali-oss');

const client = new OSS({
  // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Set bucket to the name of your bucket.
  bucket: 'yourbucketname'
})
const options = {
    headers:{'x-oss-storage-class':'Archive'}
}
client.copy('Objectname','Objectname',options).then((res) => {
    console.log(res);
}).catch(err => {
    console.log(err)
})
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the bucket region (for example: https://oss-cn-hangzhou.aliyuncs.com). 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
# Make sure that the storage class of the object is Standard or IA. 
object_name = 'exampledir/exampleobject.txt'

# Convert the storage class of the object to Archive by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_ARCHIVE. 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
# Convert the storage class of the object to Cold Archive by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE. 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE}
# Convert the storage class of the object to Deep Cold Archive by setting the x-oss-storage-class header to BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE 
# headers = {'x-oss-storage-class': oss2.models.BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE}
# Convert the storage class of the object. 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)                    
package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Create an OSSClient instance. 
	// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint. 
	// Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.  
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Specify the signature version.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// Specify the name of the bucket. 
	bucketName := "yourBucketName" // Replace yourBucketName with the actual bucket name.
	// Specify the full path of the object. Do not include the bucket name in the full path. 
	objectName := "yourObjectName" // Replace yourObjectName with the actual object path.

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket: %v", err)
	}

	// Convert the storage class of the object to Archive. 
	_, err = bucket.CopyObject(objectName, objectName, oss.ObjectStorageClass(oss.StorageArchive))
	if err != nil {
		log.Fatalf("Failed to change storage class of object: %v", err)
	}

	log.Println("Storage class changed successfully.")
}
OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
copy.sourceBucketName = @"examplebucket";
copy.sourceObjectKey = @"exampleobject.txt";
copy.bucketName = @"examplebucket";
copy.objectKey = @"exampleobject.txt";
// Set the storage class of the exampleobject.txt object to Archive. 
copy.objectMeta = @{@"x-oss-storage-class" : @"Archive"};

OSSTask * task = [client copyObject:copy];
[task continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"copy object success!");
    } else {
        NSLog(@"copy object failed, error: %@" , task.error);
    }
    return nil;
}];
// Implement synchronous blocking to wait for the task to complete. 
// [task waitUntilFinished];  
#include <iostream>
#include <alibabacloud/oss/OssClient.h>

using namespace AlibabaCloud::OSS;

int main(void)
{  
            
    /* Set yourEndpoint to the Endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the Region to cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Specify the bucket name. Example: examplebucket. */
    std::string BucketName = "examplebucket";
    /* Specify the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";
  
    /* Initialize network resources. */
    InitializeSdk();
    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);
    
    /* Set the storage class for the object. For example, set the storage class to Archive. */
    ObjectMetaData objectMeta;
    objectMeta.addHeader("x-oss-storage-class", "Archive");
    
    std::string SourceBucketName = BucketName;
    std::string SourceObjectName = ObjectName;
    
    CopyObjectRequest request(SourceBucketName, ObjectName, objectMeta);
    request.setCopySource(SourceBucketName, SourceObjectName);
    
    /* Change the storage class to the specified one. */
    auto outcome = client.CopyObject(request);
    if (!outcome.isSuccess()) {
        /* Handle exceptions. */
        std::cout << "CopyObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }
    
    /* Release network resources. */
    ShutdownSdk();
    return 0;
}

Use ossutil

Para obter mais informações sobre como converter a classe de armazenamento de um objeto com o ossutil, consulte copy-object.

Use the REST API

Se a sua aplicação tiver requisitos específicos, envie solicitações de API REST diretamente. Para isso, escreva manualmente o código para calcular a assinatura. Para obter mais informações, consulte CopyObject.

Notas de uso

Ao converter a classe de armazenamento de um objeto para IA, Archive, Cold Archive ou Deep Cold Archive, observe o seguinte:

Tamanho mínimo faturável

O tamanho mínimo faturável de um objeto é de 64 KB. Se um objeto for menor que 64 KB, haverá cobrança por 64 KB de armazenamento.

Duração mínima de armazenamento

A duração mínima de armazenamento é de 30 dias para objetos IA, 60 dias para objetos Archive, 180 dias para objetos Cold Archive e 180 dias para objetos Deep Cold Archive. Se um objeto for armazenado por um período inferior à duração mínima de armazenamento, haverá cobrança pelo armazenamento de um objeto por um período inferior à duração mínima. Para obter mais informações, consulte Storage fees.

  • Converter classes de armazenamento de objetos automaticamente usando regras de ciclo de vida

    • Ao converter a classe de armazenamento de um objeto para IA ou Archive, o sistema não recalcula a duração de armazenamento do objeto.

      Por exemplo, um objeto chamado a.txt é armazenado como um objeto Standard no OSS por 10 dias. Após a conversão da sua classe de armazenamento para IA por uma regra de ciclo de vida, ele precisa ser armazenado por apenas mais 20 dias para atender ao requisito de duração mínima de armazenamento de 30 dias.

    • Ao converter a classe de armazenamento de um objeto para Cold Archive ou Deep Cold Archive, o sistema recalcula a duração de armazenamento do objeto.

      • Exemplo 1: Um objeto chamado a.txt é armazenado como um objeto Standard ou IA no OSS por 10 dias. Após a conversão da sua classe de armazenamento para Cold Archive ou Deep Cold Archive por uma regra de ciclo de vida, ele deve ser armazenado por mais 180 dias para atender ao requisito de duração mínima de armazenamento de 180 dias.

      • Exemplo 2: Um objeto chamado a.txt é armazenado como um objeto Cold Archive no OSS por 30 dias. Quando sua classe de armazenamento é convertida para Deep Cold Archive por uma regra de ciclo de vida, há cobrança pelo armazenamento de um objeto Cold Archive por um período inferior à duração mínima de 180 dias. Além disso, após a conversão para Deep Cold Archive, ele deve ser armazenado por mais 180 dias para atender ao requisito de duração mínima de armazenamento de 180 dias.

  • Converter manualmente classes de armazenamento de objetos usando a operação CopyObject

    Ao converter manualmente um objeto para qualquer classe de armazenamento usando a operação CopyObject, o sistema recalcula a duração de armazenamento do objeto.

    Por exemplo, um objeto chamado a.txt é armazenado como um objeto Standard no OSS por 10 dias. Após a conversão manual do objeto para a classe de armazenamento IA usando a operação CopyObject, ele deve ser armazenado por mais 30 dias para atender ao requisito de duração mínima de armazenamento de 30 dias.

Nota

Se renomear um objeto IA, Archive, Cold Archive ou Deep Cold Archive ou sobrescrevê-lo enviando um objeto com o mesmo nome antes do término da duração mínima de armazenamento, haverá cobrança pelo armazenamento de um objeto por um período inferior à duração mínima. Por exemplo, se renomear um objeto IA após 29 dias de armazenamento, o OSS tratará o objeto renomeado como um novo objeto e redefinirá sua duração de armazenamento. Isso significa que o objeto deve ser armazenado por mais 30 dias para atender ao requisito de duração mínima de armazenamento para a classe de armazenamento IA.

Tempo de restauração

A restauração de um objeto Archive, Cold Archive ou Deep Cold Archive leva tempo. Se o seu cenário de negócios exigir acesso em tempo real aos objetos, recomendamos não converter a classe de armazenamento dos objetos para Archive, Cold Archive ou Deep Cold Archive.

Taxas de solicitação

Método de conversão

Classe de armazenamento de origem do objeto

Taxas de solicitação

Regra de ciclo de vida

Standard, IA, Archive, Cold Archive

Há cobrança por solicitações PUT com base na classe de armazenamento de origem do objeto. As taxas são faturadas no bucket atual.

CopyObject

Archive Storage

  • ①O acesso em tempo real a objetos Archive está ativado

    • Há cobrança por solicitações GET com base na classe de armazenamento de origem do objeto. As taxas são faturadas no bucket de origem.

    • Há cobrança por solicitações PUT com base na classe de armazenamento de destino do objeto. As taxas são faturadas no bucket de destino.

  • ②O acesso em tempo real a objetos Archive não está ativado

    Há cobrança por solicitações PUT com base na classe de armazenamento de origem do objeto. As taxas são faturadas no bucket de destino.

Standard, IA, Cold Archive, Deep Cold Archive

Há cobrança por solicitações PUT com base na classe de armazenamento de origem do objeto. As taxas são faturadas no bucket de destino.

①Se o acesso em tempo real a objetos Archive estiver ativado, ao usar a operação CopyObject para converter a classe de armazenamento de um objeto Archive de origem, não é necessário restaurá-lo antecipadamente. Não há cobrança pela restauração de dados do Archive Storage, mas há cobrança pela recuperação de dados para acesso em tempo real.

②Se o acesso em tempo real a objetos Archive não estiver ativado, ao usar a operação CopyObject para converter a classe de armazenamento de um objeto Archive de origem, restaure-o primeiro. Há cobrança pela restauração de dados do Archive Storage, mas não há cobrança pela recuperação de dados para acesso em tempo real.

Para obter mais informações, consulte Data processing fees.

Taxas de recuperação de dados

Ao acessar objetos IA, há cobrança de taxas adicionais de recuperação de dados com base na quantidade real de dados acessados. Ao restaurar objetos Archive, Cold Archive e Deep Cold Archive, há cobrança de taxas adicionais de restauração de dados. Após ativar o acesso em tempo real a objetos Archive, há cobrança de taxas adicionais de acesso em tempo real ao acessar diretamente objetos Archive. Essas taxas são faturadas separadamente das taxas de tráfego de saída. Se um objeto for acessado mais de uma vez por mês, em média, o custo de uso da classe de armazenamento IA, Archive, Cold Archive ou Deep Cold Archive poderá ser maior do que o da classe de armazenamento Standard.

Taxas de armazenamento temporário

Quando um objeto Cold Archive ou Deep Cold Archive é restaurado, o sistema cria uma réplica Standard do objeto para acesso. Há cobrança de taxas de armazenamento temporário para essa réplica à taxa de armazenamento da classe de armazenamento Standard durante o período de restauração.

Perguntas frequentes

Posso usar uma regra de ciclo de vida com base na hora da última modificação para converter a classe de armazenamento de um objeto de Infrequent Access para Standard?

Não. Use um dos seguintes métodos para converter a classe de armazenamento de um objeto de IA para Standard: