Obtenha metadados do contentor

Conceitos

Esta página mostra como obter informações sobre os metadados dos seus contentores do Cloud Storage, excluindo as políticas de IAM e as ACLs.

Para saber como obter a Política IAM do seu contentor, consulte o artigo Ver a Política IAM de um contentor.

Funções necessárias

Para receber as autorizações necessárias para obter os metadados de um contentor do Cloud Storage, peça ao seu administrador para lhe conceder a função de administrador do armazenamento (roles/storage.admin) no contentor.

Esta função contém as autorizações necessárias para obter os metadados de um contentor. Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

  • storage.buckets.get
  • storage.buckets.list
    • Esta autorização só é necessária se planear usar a consola Google Cloud para realizar a tarefa nesta página.

Também pode conseguir estas autorizações com outras funções predefinidas ou funções personalizadas.

Para ver instruções sobre como conceder funções em contentores, consulte o artigo Defina e faça a gestão de políticas de IAM em contentores.

Apresente os metadados de um contentor

Consola

  1. Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.

    Aceda a Recipientes

  2. Na lista de contentores, clique no nome do contentor cujos metadados quer ver.

  3. Clique no separador Configuração para ver os detalhes do contentor, como as regiões incluídas, a classe de armazenamento, as autorizações e o tipo de replicação.

Linha de comandos

Use o comando gcloud storage buckets describe:

gcloud storage buckets describe gs://BUCKET_NAME

Onde:

  • BUCKET_NAME é o nome do contentor cujos metadados quer ver. Por exemplo, my-awesome-bucket.

Se for bem-sucedido, a resposta é semelhante ao seguinte exemplo:

defaultEventBasedHold: false   etag: CAE=   iamConfiguration:     bucketPolicyOnly:       enabled: true ...

Bibliotecas cliente

C++

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

namespace gcs = ::google::cloud::storage; using ::google::cloud::StatusOr; [](gcs::Client client, std::string const& bucket_name) {   StatusOr<gcs::BucketMetadata> bucket_metadata =       client.GetBucketMetadata(bucket_name);   if (!bucket_metadata) throw std::move(bucket_metadata).status();    std::cout << "The metadata for bucket " << bucket_metadata->name() << " is "             << *bucket_metadata << "\n"; }

C#

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

 using Google.Apis.Storage.v1.Data; using Google.Cloud.Storage.V1; using System;  public class GetBucketMetadataSample {     public Bucket GetBucketMetadata(string bucketName = "your-unique-bucket-name")     {         var storage = StorageClient.Create();         var bucket = storage.GetBucket(bucketName, new GetBucketOptions { Projection = Projection.Full });         Console.WriteLine($"Bucket:\t{bucket.Name}");         Console.WriteLine($"Acl:\t{bucket.Acl}");         Console.WriteLine($"Billing:\t{bucket.Billing}");         Console.WriteLine($"Cors:\t{bucket.Cors}");         Console.WriteLine($"DefaultEventBasedHold:\t{bucket.DefaultEventBasedHold}");         Console.WriteLine($"DefaultObjectAcl:\t{bucket.DefaultObjectAcl}");         Console.WriteLine($"Encryption:\t{bucket.Encryption}");         if (bucket.Encryption != null)         {             Console.WriteLine($"KmsKeyName:\t{bucket.Encryption.DefaultKmsKeyName}");         }         Console.WriteLine($"Id:\t{bucket.Id}");         Console.WriteLine($"Kind:\t{bucket.Kind}");         Console.WriteLine($"Lifecycle:\t{bucket.Lifecycle}");         Console.WriteLine($"Location:\t{bucket.Location}");         Console.WriteLine($"LocationType:\t{bucket.LocationType}");         Console.WriteLine($"Logging:\t{bucket.Logging}");         Console.WriteLine($"Metageneration:\t{bucket.Metageneration}");         Console.WriteLine($"ObjectRetention:\t{bucket.ObjectRetention}");         Console.WriteLine($"Owner:\t{bucket.Owner}");         Console.WriteLine($"ProjectNumber:\t{bucket.ProjectNumber}");         Console.WriteLine($"RetentionPolicy:\t{bucket.RetentionPolicy}");         Console.WriteLine($"SelfLink:\t{bucket.SelfLink}");         Console.WriteLine($"StorageClass:\t{bucket.StorageClass}");         Console.WriteLine($"TimeCreated:\t{bucket.TimeCreated}");         Console.WriteLine($"Updated:\t{bucket.Updated}");         Console.WriteLine($"Versioning:\t{bucket.Versioning}");         Console.WriteLine($"Website:\t{bucket.Website}");         Console.WriteLine($"TurboReplication:\t{bucket.Rpo}");         if (bucket.Labels != null)         {             Console.WriteLine("Labels:");             foreach (var label in bucket.Labels)             {                 Console.WriteLine($"{label.Key}:\t{label.Value}");             }         }         return bucket;     } }

Go

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

import ( 	"context" 	"fmt" 	"io" 	"time"  	"cloud.google.com/go/storage" )  // getBucketMetadata gets the bucket metadata. func getBucketMetadata(w io.Writer, bucketName string) (*storage.BucketAttrs, error) { 	// bucketName := "bucket-name" 	ctx := context.Background() 	client, err := storage.NewClient(ctx) 	if err != nil { 		return nil, fmt.Errorf("storage.NewClient: %w", err) 	} 	defer client.Close()  	ctx, cancel := context.WithTimeout(ctx, time.Second*10) 	defer cancel() 	attrs, err := client.Bucket(bucketName).Attrs(ctx) 	if err != nil { 		return nil, fmt.Errorf("Bucket(%q).Attrs: %w", bucketName, err) 	} 	fmt.Fprintf(w, "BucketName: %v\n", attrs.Name) 	fmt.Fprintf(w, "Location: %v\n", attrs.Location) 	fmt.Fprintf(w, "LocationType: %v\n", attrs.LocationType) 	fmt.Fprintf(w, "StorageClass: %v\n", attrs.StorageClass) 	fmt.Fprintf(w, "Turbo replication (RPO): %v\n", attrs.RPO) 	fmt.Fprintf(w, "TimeCreated: %v\n", attrs.Created) 	fmt.Fprintf(w, "Metageneration: %v\n", attrs.MetaGeneration) 	fmt.Fprintf(w, "PredefinedACL: %v\n", attrs.PredefinedACL) 	if attrs.Encryption != nil { 		fmt.Fprintf(w, "DefaultKmsKeyName: %v\n", attrs.Encryption.DefaultKMSKeyName) 	} 	if attrs.Website != nil { 		fmt.Fprintf(w, "IndexPage: %v\n", attrs.Website.MainPageSuffix) 		fmt.Fprintf(w, "NotFoundPage: %v\n", attrs.Website.NotFoundPage) 	} 	fmt.Fprintf(w, "DefaultEventBasedHold: %v\n", attrs.DefaultEventBasedHold) 	if attrs.RetentionPolicy != nil { 		fmt.Fprintf(w, "RetentionEffectiveTime: %v\n", attrs.RetentionPolicy.EffectiveTime) 		fmt.Fprintf(w, "RetentionPeriod: %v\n", attrs.RetentionPolicy.RetentionPeriod) 		fmt.Fprintf(w, "RetentionPolicyIsLocked: %v\n", attrs.RetentionPolicy.IsLocked) 	} 	fmt.Fprintf(w, "ObjectRetentionMode: %v\n", attrs.ObjectRetentionMode) 	fmt.Fprintf(w, "RequesterPays: %v\n", attrs.RequesterPays) 	fmt.Fprintf(w, "VersioningEnabled: %v\n", attrs.VersioningEnabled) 	if attrs.Logging != nil { 		fmt.Fprintf(w, "LogBucket: %v\n", attrs.Logging.LogBucket) 		fmt.Fprintf(w, "LogObjectPrefix: %v\n", attrs.Logging.LogObjectPrefix) 	} 	if attrs.CORS != nil { 		fmt.Fprintln(w, "CORS:") 		for _, v := range attrs.CORS { 			fmt.Fprintf(w, "\tMaxAge: %v\n", v.MaxAge) 			fmt.Fprintf(w, "\tMethods: %v\n", v.Methods) 			fmt.Fprintf(w, "\tOrigins: %v\n", v.Origins) 			fmt.Fprintf(w, "\tResponseHeaders: %v\n", v.ResponseHeaders) 		} 	} 	if attrs.Labels != nil { 		fmt.Fprintf(w, "\n\n\nLabels:") 		for key, value := range attrs.Labels { 			fmt.Fprintf(w, "\t%v = %v\n", key, value) 		} 	} 	return attrs, nil } 

Java

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

 import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; import java.util.Map;  public class GetBucketMetadata {   public static void getBucketMetadata(String projectId, String bucketName) {     // The ID of your GCP project     // String projectId = "your-project-id";      // The ID of your GCS bucket     // String bucketName = "your-unique-bucket-name";      Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();      // Select all fields. Fields can be selected individually e.g. Storage.BucketField.NAME     Bucket bucket =         storage.get(bucketName, Storage.BucketGetOption.fields(Storage.BucketField.values()));      // Print bucket metadata     System.out.println("BucketName: " + bucket.getName());     System.out.println("DefaultEventBasedHold: " + bucket.getDefaultEventBasedHold());     System.out.println("DefaultKmsKeyName: " + bucket.getDefaultKmsKeyName());     System.out.println("Id: " + bucket.getGeneratedId());     System.out.println("IndexPage: " + bucket.getIndexPage());     System.out.println("Location: " + bucket.getLocation());     System.out.println("LocationType: " + bucket.getLocationType());     System.out.println("Metageneration: " + bucket.getMetageneration());     System.out.println("NotFoundPage: " + bucket.getNotFoundPage());     System.out.println("RetentionEffectiveTime: " + bucket.getRetentionEffectiveTime());     System.out.println("RetentionPeriod: " + bucket.getRetentionPeriod());     System.out.println("RetentionPolicyIsLocked: " + bucket.retentionPolicyIsLocked());     System.out.println("RequesterPays: " + bucket.requesterPays());     System.out.println("SelfLink: " + bucket.getSelfLink());     System.out.println("StorageClass: " + bucket.getStorageClass().name());     System.out.println("TimeCreated: " + bucket.getCreateTime());     System.out.println("VersioningEnabled: " + bucket.versioningEnabled());     System.out.println("ObjectRetention: " + bucket.getObjectRetention());     if (bucket.getLabels() != null) {       System.out.println("\n\n\nLabels:");       for (Map.Entry<String, String> label : bucket.getLabels().entrySet()) {         System.out.println(label.getKey() + "=" + label.getValue());       }     }     if (bucket.getLifecycleRules() != null) {       System.out.println("\n\n\nLifecycle Rules:");       for (BucketInfo.LifecycleRule rule : bucket.getLifecycleRules()) {         System.out.println(rule);       }     }   } }

Node.js

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

// Imports the Google Cloud client library const {Storage} = require('@google-cloud/storage');  // Creates a client const storage = new Storage();  async function getBucketMetadata() {   /**    * TODO(developer): Uncomment the following lines before running the sample.    */   // The ID of your GCS bucket   // const bucketName = 'your-unique-bucket-name';    // Get Bucket Metadata   const [metadata] = await storage.bucket(bucketName).getMetadata();    console.log(JSON.stringify(metadata, null, 2)); }

PHP

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

use Google\Cloud\Storage\StorageClient;  /**  * Get bucket metadata.  *  * @param string $bucketName The name of your Cloud Storage bucket.  *        (e.g. 'my-bucket')  */ function get_bucket_metadata(string $bucketName): void {     $storage = new StorageClient();     $bucket = $storage->bucket($bucketName);     $info = $bucket->info();      printf('Bucket Metadata: %s' . PHP_EOL, print_r($info, true)); }

Python

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

 from google.cloud import storage   def bucket_metadata(bucket_name):     """Prints out a bucket's metadata."""     # bucket_name = 'your-bucket-name'      storage_client = storage.Client()     bucket = storage_client.get_bucket(bucket_name)      print(f"ID: {bucket.id}")     print(f"Name: {bucket.name}")     print(f"Storage Class: {bucket.storage_class}")     print(f"Location: {bucket.location}")     print(f"Location Type: {bucket.location_type}")     print(f"Cors: {bucket.cors}")     print(f"Default Event Based Hold: {bucket.default_event_based_hold}")     print(f"Default KMS Key Name: {bucket.default_kms_key_name}")     print(f"Metageneration: {bucket.metageneration}")     print(         f"Public Access Prevention: {bucket.iam_configuration.public_access_prevention}"     )     print(f"Retention Effective Time: {bucket.retention_policy_effective_time}")     print(f"Retention Period: {bucket.retention_period}")     print(f"Retention Policy Locked: {bucket.retention_policy_locked}")     print(f"Object Retention Mode: {bucket.object_retention_mode}")     print(f"Requester Pays: {bucket.requester_pays}")     print(f"Self Link: {bucket.self_link}")     print(f"Time Created: {bucket.time_created}")     print(f"Versioning Enabled: {bucket.versioning_enabled}")     print(f"Labels: {bucket.labels}")  

Ruby

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

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

def get_bucket_metadata bucket_name:   # The ID of your GCS bucket   # bucket_name = "your-unique-bucket-name"    require "google/cloud/storage"    storage = Google::Cloud::Storage.new   bucket  = storage.bucket bucket_name    puts "ID:                       #{bucket.id}"   puts "Name:                     #{bucket.name}"   puts "Storage Class:            #{bucket.storage_class}"   puts "Location:                 #{bucket.location}"   puts "Location Type:            #{bucket.location_type}"   puts "Cors:                     #{bucket.cors}"   puts "Default Event Based Hold: #{bucket.default_event_based_hold?}"   puts "Default KMS Key Name:     #{bucket.default_kms_key}"   puts "Logging Bucket:           #{bucket.logging_bucket}"   puts "Logging Prefix:           #{bucket.logging_prefix}"   puts "Metageneration:           #{bucket.metageneration}"   puts "Retention Effective Time: #{bucket.retention_effective_at}"   puts "Retention Period:         #{bucket.retention_period}"   puts "Retention Policy Locked:  #{bucket.retention_policy_locked?}"   puts "Requester Pays:           #{bucket.requester_pays}"   puts "Self Link:                #{bucket.api_url}"   puts "Time Created:             #{bucket.created_at}"   puts "Versioning Enabled:       #{bucket.versioning?}"   puts "Index Page:               #{bucket.website_main}"   puts "Not Found Page:           #{bucket.website_404}"   puts "Labels:"   bucket.labels.each do |key, value|     puts " - #{key} = #{value}"   end   puts "Lifecycle Rules:"   bucket.lifecycle.each do |rule|     puts "#{rule.action} - #{rule.storage_class} - #{rule.age} - #{rule.matches_storage_class}"   end end

Terraform

Pode usar um recurso do Terraform para ver os metadados de um contentor.

# Get bucket metadata data "google_storage_bucket" "default" {   name = google_storage_bucket.static.id }  output "bucket_metadata" {   value = data.google_storage_bucket.default }

APIs REST

API JSON

  1. Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use cURL para chamar a API JSON com um pedido GET Bucket:

    curl -X GET \   -H "Authorization: Bearer $(gcloud auth print-access-token)" \   "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME"

    Em que BUCKET_NAME é o nome do contentor relevante. Por exemplo, my-bucket.

    Opcionalmente, pode restringir os resultados dos metadados através do parâmetro de string de consulta fields. Por exemplo:

    curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=FIELD1%2CFIELD2"

    Onde FIELD# é uma propriedade de um contentor que quer incluir no resultado. Por exemplo, projectNumber e storageClass.

A resposta tem o seguinte aspeto:

{   "projectNumber": "123456789012",   "storageClass": "STANDARD" }

API XML

  1. Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho Authorization.

  2. Use cURL para chamar a API XML com um pedido de GET contentor:

    curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?QUERY_PARAMETER"

    Onde:

    • BUCKET_NAME é o nome do contentor relevante. Por exemplo, my-bucket.
    • QUERY_PARAMETER é o campo de metadados que quer devolver. Por exemplo, storageClass para obter a classe de armazenamento do contentor. Só pode usar um parâmetro de consulta de cada vez com a API XML. Para ver uma lista dos campos de metadados suportados pela API XML, consulte a GET página de referência de contentores.

    A resposta tem o seguinte aspeto: <StorageClass>STANDARD</StorageClass>.

O que se segue?

Experimente

Se está a usar o Google Cloud pela primeira vez, crie uma conta para avaliar o desempenho do Cloud Storage em cenários reais. Os novos clientes também recebem 300 USD em créditos gratuitos para executar, testar e implementar cargas de trabalho.

Experimentar o Cloud Storage gratuitamente