Como usar políticas de retenção e bloqueio de intervalo

Nesta página, você verá como usar o recurso Bloqueio de intervalo, incluindo o trabalho com políticas de retenção e intervalos de bloqueio. Para detalhes sobre esse recurso, consulte Políticas de armazenamento e bloqueio de intervalo.

Pré-requisitos

Antes de usar este recurso no Cloud Storage, realize estas etapas:

  1. Tenha permissão suficiente para ver e atualizar intervalos no Cloud Storage:

    • Se você é proprietário do projeto que contém o intervalo, provavelmente já tem as permissões necessárias.

    • Se você usar o IAM, precisará das permissões storage.buckets.update e storage.buckets.get no intervalo em questão. Consulte Como usar permissões do IAM para saber como conseguir um papel com essas permissões, como roles/storage.admin.

    • Se você usar ACLs, precisará da permissão PROPRIETÁRIO no intervalo em questão. Consulte Como configurar ACLs para ver instruções sobre como fazer isso.

  2. Verifique se o controle de versão de objeto está desativado para o intervalo.

Como definir uma política de armazenamento em um intervalo

Para definir uma política de armazenamento em um intervalo:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. Na lista de intervalos, clique no nome do intervalo que você quer adicionar uma política de armazenamento.

  3. Selecione a guia Bloqueio de intervalo no topo da página.

  4. Na entrada Política de retenção, clique no link Adicionar política.

    A caixa de diálogo Definir uma política de armazenamento é exibida.

  5. No menu suspenso, selecione a unidade de tempo do seu período de armazenamento.

    Consulte Períodos de armazenamento para informações sobre como o console converte entre diferentes unidades de tempo.

  6. Na caixa de valor, insira a duração do seu período de armazenamento.

  7. Clique em Salvar política.

gsutil

Use o comando gsutil retention set, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil retention set [TIME_DURATION] gs://[BUCKET_NAME]

Consulte Períodos de armazenamento para informações sobre como a gsutil converte entre diferentes unidades de tempo.

Se bem-sucedida, a resposta terá esta aparência:

Setting retention policy on gs://[BUCKET_NAME]/...

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::chrono::seconds period) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::BucketMetadata> patched_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetRetentionPolicy(period),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!patched_metadata) {
    throw std::runtime_error(patched_metadata.status().message());
  }

  if (!patched_metadata->has_retention_policy()) {
    std::cout << "The bucket " << patched_metadata->name()
              << " does not have a retention policy set.\n";
    return;
  }

  std::cout << "The bucket " << patched_metadata->name()
            << " retention policy is set to "
            << patched_metadata->retention_policy() << "\n";
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

        private void SetBucketRetentionPolicy(string bucketName,
            long retentionPeriod)
        {
            var storage = StorageClient.Create();
            var bucket = storage.GetBucket(bucketName);
            bucket.RetentionPolicy = new Bucket.RetentionPolicyData();
            bucket.RetentionPolicy.RetentionPeriod = retentionPeriod;
            bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
            {
                IfMetagenerationMatch = bucket.Metageneration
            });

            Console.WriteLine($"Retention policy for {bucketName} was set to {retentionPeriod}");
        }

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

bucket := c.Bucket(bucketName)
bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
	RetentionPolicy: &storage.RetentionPolicy{
		RetentionPeriod: retentionPeriod,
	},
}
if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
	return err
}

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

// The retention period for objects in bucket
// Long retentionPeriod = 3600L; // 1 hour in seconds

Bucket bucketWithRetentionPolicy =
    storage.update(
        BucketInfo.newBuilder(bucketName).setRetentionPeriod(retentionPeriod).build());

System.out.println(
    "Retention period for "
        + bucketName
        + " is now "
        + bucketWithRetentionPolicy.getRetentionPeriod());

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

const [metadata] = await storage
  .bucket(bucketName)
  .setRetentionPeriod(retentionPeriod);
console.log(
  `Bucket ${bucketName} retention period set for ${
    metadata.retentionPolicy.retentionPeriod
  } seconds.`
);

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Sets a bucket's retention policy.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $retentionPeriod the number of seconds for your retention period.
 */
function set_retention_policy($bucketName, $retentionPeriod)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->update([
        'retentionPolicy' => [
            'retentionPeriod' => $retentionPeriod
        ]]);
    printf('Bucket %s retention period set for %s seconds' . PHP_EOL, $bucketName,
        $retentionPeriod);
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

# bucket_name = "my-bucket"
# retention_period = 10

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)

bucket.retention_period = retention_period
bucket.patch()

print('Bucket {} retention period set for {} seconds'.format(
    bucket.name,
    bucket.retention_period))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id       = "Your Google Cloud project ID"
# bucket_name      = "Name of your Google Cloud Storage bucket"
# retention_period = "Object retention period defined in seconds"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

bucket.retention_period = retention_period

puts "Retention period for #{bucket_name} is now #{bucket.retention_period} seconds."

APIs REST

API JSON

  1. Consiga um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json que contenha as informações a seguir, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    {
      "retentionPolicy": {
        "retentionPeriod": "[TIME_IN_SECONDS]"
      }
    }
  3. Use cURL para chamar a API JSON com uma solicitação de intervalo PATCH, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Type: application/json" \
    "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=retentionPolicy"

API XML

A API XML não pode ser usada para definir uma política de armazenamento em um intervalo existente. Ela só pode ser usada para incluir uma política de armazenamento com um novo intervalo.

Como remover uma política de armazenamento de um intervalo

Para remover uma política de armazenamento de um intervalo:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. Na lista de intervalos, clique no nome do intervalo de que você quer remover a política de armazenamento.

  3. Selecione a guia Bloqueio de intervalo no topo da página.

  4. Na entrada Política de retenção, clique no ícone da Lixeira.

    A caixa de diálogo Excluir política de armazenamento? aparece.

  5. Clique em Excluir.

gsutil

Use o comando gsutil retention clear, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil retention clear gs://[BUCKET_NAME]

Se bem-sucedida, a resposta terá esta aparência:

Clearing retention policy on gs://[BUCKET_NAME]/...

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::BucketMetadata> patched_metadata = client.PatchBucket(
      bucket_name, gcs::BucketMetadataPatchBuilder().ResetRetentionPolicy(),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!patched_metadata) {
    throw std::runtime_error(patched_metadata.status().message());
  }

  if (!patched_metadata->has_retention_policy()) {
    std::cout << "The bucket " << patched_metadata->name()
              << " does not have a retention policy set.\n";
    return;
  }

  std::cout << "The bucket " << patched_metadata->name()
            << " retention policy is set to "
            << patched_metadata->retention_policy()
            << ". This is unexpected, maybe a concurrent change by another"
            << " application?\n";
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

        private void RemoveBucketRetentionPolicy(string bucketName)
        {
            var storage = StorageClient.Create();
            var bucket = storage.GetBucket(bucketName);
            if (bucket.RetentionPolicy != null)
            {
                bool? isLockedOrNull = bucket?.RetentionPolicy.IsLocked;
                bool isLocked =
                    isLockedOrNull.HasValue ? isLockedOrNull.Value : false;
                if (isLocked)
                {
                    throw new Exception("Retention Policy is locked.");
                }

                bucket.RetentionPolicy.RetentionPeriod = null;
                bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
                {
                    IfMetagenerationMatch = bucket.Metageneration
                });

                Console.WriteLine($"Retention period for {bucketName} has been removed.");
            }
        }

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

bucket := c.Bucket(bucketName)

attrs, err := c.Bucket(bucketName).Attrs(ctx)
if err != nil {
	return err
}
if attrs.RetentionPolicy.IsLocked {
	return errors.New("retention policy is locked")
}

bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
	RetentionPolicy: &storage.RetentionPolicy{},
}
if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
	return err
}

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

Bucket bucket = storage.get(bucketName, BucketGetOption.fields(BucketField.RETENTION_POLICY));
if (bucket.retentionPolicyIsLocked() != null && bucket.retentionPolicyIsLocked()) {
  throw new IllegalArgumentException(
      "Unable to remove retention period as retention policy is locked.");
}

Bucket bucketWithoutRetentionPolicy =
    bucket.toBuilder().setRetentionPeriod(null).build().update();

System.out.println("Retention period for " + bucketName + " has been removed");

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();
const [metadata] = await storage.bucket(bucketName).getMetadata();
if (
  metadata.hasOwnProperty('retentionPolicy') &&
  metadata.retentionPolicy.hasOwnProperty('isLocked')
) {
  console.log(
    'Unable to remove retention period as retention policy is locked.'
  );
  return null;
} else {
  const results = await storage.bucket(bucketName).removeRetentionPeriod();
  console.log(`Removed bucket ${bucketName} retention policy.`);
  return results;
}

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Removes a bucket's retention policy.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function remove_retention_policy($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->reload();

    if (array_key_exists('isLocked', $bucket->info()['retentionPolicy']) &&
        $bucket->info()['retentionPolicy']['isLocked']) {
        printf('Unable to remove retention period as retention policy is locked.' . PHP_EOL);
        return;
    }

    $bucket->update([
        'retentionPolicy' => []
    ]);
    printf('Removed bucket %s retention policy' . PHP_EOL, $bucketName);
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
bucket.reload()

if bucket.retention_policy_locked:
    print(
        'Unable to remove retention period as retention policy is locked.')
    return

bucket.retention_period = None
bucket.patch()

print('Removed bucket {} retention policy'.format(bucket.name))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

if !bucket.retention_policy_locked?
  bucket.retention_period = nil
  puts "Retention policy for #{bucket_name} has been removed."
else
  puts "Policy is locked and retention policy can't be removed."
end

APIs REST

API JSON

  1. Consiga um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Crie um arquivo .json com as informações a seguir:

    {
      "retentionPolicy": {
        "retentionPeriod": null
      }
    }
  3. Use cURL para chamar a API JSON com uma solicitação de intervalo PATCH, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Type: application/json" \
    "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=retentionPolicy"

API XML

A API XML não pode ser usada para remover uma política de armazenamento de um intervalo. Use uma das outras ferramentas do Cloud Storage, como o gsutil.

Como bloquear um intervalo

Para bloquear um intervalo e restringir permanentemente as edições à política de armazenamento dele:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. Na lista de intervalos, clique no nome do intervalo de que você quer bloquear a política de armazenamento.

  3. Selecione a guia Bloqueio de intervalo no topo da página.

  4. Na entrada Bloqueada, clique no ícone de bloqueio.

    A caixa de diálogo Bloquear política de armazenamento para esse intervalo? aparece.

  5. Leia o aviso Permanente.

  6. Na caixa de texto o Nome do intervalo, digite o nome do seu intervalo.

  7. Clique em Política de bloqueio.

gsutil

  1. Use o comando gsutil retention lock, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    gsutil retention lock gs://[BUCKET_NAME]
  2. Quando solicitado a continuar, digite y.

Se bem-sucedida, a resposta terá esta aparência:

Locking retention policy on gs://[BUCKET_NAME]/...

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::BucketMetadata> updated_metadata =
      client.LockBucketRetentionPolicy(bucket_name,
                                       original->metageneration());

  if (!updated_metadata) {
    throw std::runtime_error(updated_metadata.status().message());
  }

  if (!updated_metadata->has_retention_policy()) {
    std::cerr << "The bucket " << updated_metadata->name()
              << " does not have a retention policy, even though the"
              << " operation to set it was successful.\n"
              << "This is unexpected, and may indicate that another"
              << " application has modified the bucket concurrently.\n";
    return;
  }

  std::cout << "Retention policy successfully locked for bucket "
            << updated_metadata->name() << "\nNew retention policy is: "
            << updated_metadata->retention_policy()
            << "\nFull metadata: " << *updated_metadata << "\n";
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

private void LockBucketRetentionPolicy(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName);
    storage.LockBucketRetentionPolicy(bucketName,
        bucket.Metageneration.Value);
    bucket = storage.GetBucket(bucketName);
    Console.WriteLine($"Retention policy for {bucketName} is now locked");
    Console.WriteLine($"Retention policy effective as of {bucket.RetentionPolicy.EffectiveTime}");
}

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

bucket := c.Bucket(bucketName)
attrs, err := c.Bucket(bucketName).Attrs(ctx)
if err != nil {
	return err
}

conditions := storage.BucketConditions{
	MetagenerationMatch: attrs.MetaGeneration,
}
if err := bucket.If(conditions).LockRetentionPolicy(ctx); err != nil {
	return err
}

lockedAttrs, err := c.Bucket(bucketName).Attrs(ctx)
if err != nil {
	return err
}
log.Printf("Retention policy for %v is now locked\n", bucketName)
log.Printf("Retention policy effective as of %v\n",
	lockedAttrs.RetentionPolicy.EffectiveTime)

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

Bucket bucket =
    storage.get(bucketName, Storage.BucketGetOption.fields(BucketField.METAGENERATION));
Bucket lockedBucket =
    bucket.lockRetentionPolicy(Storage.BucketTargetOption.metagenerationMatch());

System.out.println("Retention period for " + bucketName + " is now locked");
System.out.println(
    "Retention policy effective as of " + new Date(lockedBucket.getRetentionEffectiveTime()));

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();
// get_bucket gets the current metageneration value for the bucket,
// required by lock_retention_policy.
const [unlockedMetadata] = await storage.bucket(bucketName).getMetadata();
// Warning: Once a retention policy is locked it cannot be unlocked
// and retention period can only be increased.
const [lockedMetadata] = await storage
  .bucket(bucketName)
  .lock(unlockedMetadata.metageneration);
console.log(`Retention policy for ${bucketName} is now locked.`);
console.log(
  `Retention policy effective as of ${
    lockedMetadata.retentionPolicy.effectiveTime
  }`
);

return lockedMetadata;

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Locks a bucket's retention policy.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function lock_retention_policy($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->reload();
    $bucket->lockRetentionPolicy();
    printf('Bucket %s retention policy locked' . PHP_EOL, $bucketName);
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

# bucket_name = "my-bucket"

storage_client = storage.Client()
# get_bucket gets the current metageneration value for the bucket,
# required by lock_retention_policy.
bucket = storage_client.get_bucket(bucket_name)

# Warning: Once a retention policy is locked it cannot be unlocked
# and retention period can only be increased.
bucket.lock_retention_policy()

print('Retention policy for {} is now locked'.format(bucket_name))
print('Retention policy effective as of {}'.format(
    bucket.retention_policy_effective_time))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

# Warning: Once a retention policy is locked it cannot be unlocked
# and retention period can only be increased.
# Uses Bucket#metageneration as a precondition.
bucket.lock_retention_policy!

puts "Retention policy for #{bucket_name} is now locked."
puts "Retention policy effective as of #{bucket.retention_effective_at}."

APIs REST

API JSON

  1. Consiga um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL para chamar a API JSON com uma solicitação de intervalo POST, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    curl -X POST \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/lockRetentionPolicy?ifMetagenerationMatch=[BUCKET_METAGENERATION_NUMBER]"

API XML

A API XML não pode ser usada para bloquear um intervalo. Use uma das outras ferramentas do Cloud Storage, como o gsutil.

Como ver a política de armazenamento e o status de bloqueio de um intervalo

Para ver qual política de armazenamento está definida para um intervalo, se houver, e se ela está bloqueada:

Console

  1. Abra o navegador do Cloud Storage no Console do Google Cloud Platform.
    Abrir o navegador do Cloud Storage
  2. No menu suspenso Colunas, verifique se a opção Política de retenção está marcada.

  3. Na lista de intervalos, o período de armazenamento de cada intervalo é encontrado na coluna Política de armazenamento. Se a política de armazenamento estiver bloqueada, uma imagem de um cadeado aparecerá diretamente à esquerda do período de armazenamento.

gsutil

Use o comando gsutil retention get, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

gsutil retention get gs://[BUCKET_NAME]

Se bem-sucedida, a resposta terá esta aparência:

gs://[BUCKET_NAME]/ has no retention policy.

ou:

gs://retention-test/:
    Retention policy [LOCK_STATUS]:
    Duration: [TIME_LENGTH]
    Effective Time: [SET_DATE]

Amostras de código

C++

Para mais informações, consulte a documentação de referência da API do Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.GetBucketMetadata(bucket_name);

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  if (!bucket_metadata->has_retention_policy()) {
    std::cout << "The bucket " << bucket_metadata->name()
              << " does not have a retention policy set.\n";
    return;
  }

  std::cout << "The bucket " << bucket_metadata->name()
            << " retention policy is set to "
            << bucket_metadata->retention_policy() << "\n";
}

C#

Para mais informações, consulte a documentação de referência da API Cloud Storage para C#.

        private void GetBucketRetentionPolicy(string bucketName)
        {
            var storage = StorageClient.Create();
            var bucket = storage.GetBucket(bucketName);

            if (bucket.RetentionPolicy != null)
            {
                Console.WriteLine("Retention policy:");
                Console.WriteLine($"period: {bucket.RetentionPolicy.RetentionPeriod}");
                Console.WriteLine($"effective time: {bucket.RetentionPolicy.EffectiveTime}");
                bool? isLockedOrNull = bucket?.RetentionPolicy.IsLocked;
                bool isLocked =
                    isLockedOrNull.HasValue ? isLockedOrNull.Value : false;
                Console.WriteLine("policy locked: {0}", isLocked);
            }
        }

Go

Para mais informações, consulte a documentação de referência da API Cloud Storage para Go.

attrs, err := c.Bucket(bucketName).Attrs(ctx)
if err != nil {
	return nil, err
}
if attrs.RetentionPolicy != nil {
	log.Print("Retention Policy\n")
	log.Printf("period: %v\n", attrs.RetentionPolicy.RetentionPeriod)
	log.Printf("effective time: %v\n", attrs.RetentionPolicy.EffectiveTime)
	log.Printf("policy locked: %v\n", attrs.RetentionPolicy.IsLocked)
}

Java

Para mais informações, consulte a documentação de referência da API Cloud Storage para Java.

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

Bucket bucket = storage.get(bucketName, BucketGetOption.fields(BucketField.RETENTION_POLICY));

System.out.println("Retention Policy for " + bucketName);
System.out.println("Retention Period: " + bucket.getRetentionPeriod());
if (bucket.retentionPolicyIsLocked() != null && bucket.retentionPolicyIsLocked()) {
  System.out.println("Retention Policy is locked");
}
if (bucket.getRetentionEffectiveTime() != null) {
  System.out.println("Effective Time: " + new Date(bucket.getRetentionEffectiveTime()));
}

Node.js

Para mais informações, consulte a documentação de referência da API Cloud Storage para Node.js.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();
const [metadata] = await storage.bucket(bucketName).getMetadata();
if (metadata.hasOwnProperty('retentionPolicy')) {
  const retentionPolicy = metadata.retentionPolicy;
  console.log('A retention policy exists!');
  console.log(`Period: ${retentionPolicy.retentionPeriod}`);
  console.log(`Effective time: ${retentionPolicy.effectiveTime}`);
  if (retentionPolicy.hasOwnProperty('isLocked')) {
    console.log('Policy is locked');
  } else {
    console.log('Policy is unlocked');
  }
}

PHP

Para mais informações, consulte a documentação de referência da API Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;

/**
 * Gets a bucket's retention policy.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function get_retention_policy($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->reload();

    printf('Retention Policy for ' . $bucketName . PHP_EOL);
    printf('Retention Period: ' . $bucket->info()['retentionPolicy']['retentionPeriod'] . PHP_EOL);
    if (array_key_exists('isLocked', $bucket->info()['retentionPolicy']) &&
        $bucket->info()['retentionPolicy']['isLocked']) {
        printf('Retention Policy is locked' . PHP_EOL);
    }
    if ($bucket->info()['retentionPolicy']['effectiveTime']) {
        printf('Effective Time: ' . $bucket->info()['retentionPolicy']['effectiveTime'] . PHP_EOL);
    }
}

Python

Para mais informações, consulte a documentação de referência da API Cloud Storage para Python.

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
bucket.reload()

print('Retention Policy for {}'.format(bucket_name))
print('Retention Period: {}'.format(bucket.retention_period))
if bucket.retention_policy_locked:
    print('Retention Policy is locked')

if bucket.retention_policy_effective_time:
    print('Effective Time: {}'
          .format(bucket.retention_policy_effective_time))

Ruby

Para mais informações, consulte a documentação de referência da API Cloud Storage para Ruby.

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

puts "Retention policy:"
puts "period: #{bucket.retention_period}"
puts "effective time: #{bucket.retention_effective_at}"
puts "policy locked: #{bucket.retention_policy_locked?}"

APIs REST

API JSON

  1. Consiga um token de acesso de autorização do OAuth 2.0 Playground. Configure o Playground para usar suas credenciais do OAuth.
  2. Use cURL para chamar a API JSON com uma solicitação de intervalo GET que inclui os fields que você quer, substituindo [VALUES_IN_BRACKETS] pelos valores apropriados:

    curl -X GET -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=retentionPolicy"

    Se o intervalo tiver uma política de retenção definida, a resposta será semelhante à do exemplo a seguir:

    {
      "retentionPolicy": {
          "retentionPeriod": "[TIME_IN_SECONDS]",
          "effectiveTime": "[DATETIME]",
          "isLocked": "[BOOLEAN]"
       },
    }

API XML

A API XML não pode ser usada para ver a política de armazenamento em um intervalo. Use uma das outras ferramentas do Cloud Storage, como o gsutil.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.