Configure e veja as configurações de CORS

Vista geral Exemplos de configuração

A partilha de recursos de origem cruzada (CORS) permite interações entre recursos de diferentes origens, algo que é normalmente proibido para evitar comportamentos maliciosos. Use esta página para saber como definir uma configuração CORS num contentor do Cloud Storage e como ver a configuração CORS definida num contentor. Consulte os exemplos de configuração para CORS para ver exemplos de configurações de CORS, incluindo a configuração que desativa qualquer configuração existente no seu contentor.

Funções necessárias

Para receber as autorizações necessárias para definir e ver a configuração de CORS num contentor, peça ao seu administrador para lhe conceder a função de administrador do armazenamento (roles/storage.admin) no contentor.

Esta função predefinida contém as autorizações necessárias para definir e ver as configurações de CORS. 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.update

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

Para obter informaçõ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.

Defina a configuração de CORS num contentor

Define uma configuração de CORS num contentor especificando informações, como métodos HTTP e domínios de origem, que identificam os tipos de pedidos que o contentor pode aceitar.

Siga estes passos para definir uma configuração CORS no seu contentor:

Consola

Não pode gerir o CORS através da consola do Google Cloud . Em alternativa, use a CLI gcloud.

Linha de comandos

  1. Crie um ficheiro JSON com a configuração CORS que quer aplicar. Consulte exemplos de configuração para ver ficheiros JSON de exemplo.

  2. Use o comando gcloud storage buckets update com a flag --cors-file:

    gcloud storage buckets update gs://BUCKET_NAME --cors-file=CORS_CONFIG_FILE

    Onde:

    • BUCKET_NAME é o nome do contentor relevante. Por exemplo, my-bucket.
    • CORS_CONFIG_FILE é o caminho para o ficheiro JSON que criou no passo 1.

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.

O exemplo seguinte define uma configuração de CORS num contentor:

namespace gcs = ::google::cloud::storage; using ::google::cloud::StatusOr; [](gcs::Client client, std::string const& bucket_name,    std::string const& origin) {   StatusOr<gcs::BucketMetadata> original =       client.GetBucketMetadata(bucket_name);    if (!original) throw std::move(original).status();   std::vector<gcs::CorsEntry> cors_configuration;   cors_configuration.emplace_back(       gcs::CorsEntry{3600, {"GET"}, {origin}, {"Content-Type"}});    StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(       bucket_name,       gcs::BucketMetadataPatchBuilder().SetCors(cors_configuration),       gcs::IfMetagenerationMatch(original->metageneration()));   if (!patched) throw std::move(patched).status();    if (patched->cors().empty()) {     std::cout << "Cors configuration is not set for bucket "               << patched->name() << "\n";     return;   }    std::cout << "Cors configuration successfully set for bucket "             << patched->name() << "\nNew cors configuration: ";   for (auto const& cors_entry : patched->cors()) {     std::cout << "\n  " << cors_entry << "\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.

O exemplo seguinte define uma configuração de CORS num contentor:

 using Google.Apis.Storage.v1.Data; using Google.Cloud.Storage.V1; using System; using System.Collections.Generic; using static Google.Apis.Storage.v1.Data.Bucket;  public class BucketAddCorsConfigurationSample {     public Bucket BucketAddCorsConfiguration(string bucketName = "your-bucket-name")     {         var storage = StorageClient.Create();         var bucket = storage.GetBucket(bucketName);          CorsData corsData = new CorsData         {             Origin = new string[] { "*" },             ResponseHeader = new string[] { "Content-Type", "x-goog-resumable" },             Method = new string[] { "PUT", "POST" },             MaxAgeSeconds = 3600 //One Hour         };          if (bucket.Cors == null)         {             bucket.Cors = new List<CorsData>();         }         bucket.Cors.Add(corsData);          bucket = storage.UpdateBucket(bucket);         Console.WriteLine($"bucketName {bucketName} was updated with a CORS config to allow {string.Join(",", corsData.Method)} requests from" +             $" {string.Join(",", corsData.Origin)} sharing {string.Join(",", corsData.ResponseHeader)} responseHeader" +             $" responses across origins.");         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.

O exemplo seguinte define uma configuração de CORS num contentor:

import ( 	"context" 	"fmt" 	"io" 	"time"  	"cloud.google.com/go/storage" )  // setBucketCORSConfiguration sets a CORS configuration on a bucket. func setBucketCORSConfiguration(w io.Writer, bucketName string, maxAge time.Duration, methods, origins, responseHeaders []string) error { 	// bucketName := "bucket-name" 	// maxAge := time.Hour 	// methods := []string{"GET"} 	// origins := []string{"some-origin.com"} 	// responseHeaders := []string{"Content-Type"} 	ctx := context.Background() 	client, err := storage.NewClient(ctx) 	if err != nil { 		return fmt.Errorf("storage.NewClient: %w", err) 	} 	defer client.Close()  	ctx, cancel := context.WithTimeout(ctx, time.Second*10) 	defer cancel()  	bucket := client.Bucket(bucketName) 	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{ 		CORS: []storage.CORS{ 			{ 				MaxAge:          maxAge, 				Methods:         methods, 				Origins:         origins, 				ResponseHeaders: responseHeaders, 			}}, 	} 	if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil { 		return fmt.Errorf("Bucket(%q).Update: %w", bucketName, err) 	} 	fmt.Fprintf(w, "Bucket %v was updated with a CORS config to allow %v requests from %v sharing %v responses across origins\n", bucketName, methods, origins, responseHeaders) 	return 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.

O exemplo seguinte define uma configuração de CORS num contentor:

import com.google.cloud.storage.Bucket; import com.google.cloud.storage.Cors; import com.google.cloud.storage.HttpMethod; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; import com.google.common.collect.ImmutableList;  public class ConfigureBucketCors {   public static void configureBucketCors(       String projectId,       String bucketName,       String origin,       String responseHeader,       Integer maxAgeSeconds) {     // The ID of your GCP project     // String projectId = "your-project-id";      // The ID of your GCS bucket     // String bucketName = "your-unique-bucket-name";      // The origin for this CORS config to allow requests from     // String origin = "http://example.appspot.com";      // The response header to share across origins     // String responseHeader = "Content-Type";      // The maximum amount of time the browser can make requests before it must repeat preflighted     // requests     // Integer maxAgeSeconds = 3600;      Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();     Bucket bucket = storage.get(bucketName);      // See the HttpMethod documentation for other HTTP methods available:     // https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/urlfetch/HTTPMethod     HttpMethod method = HttpMethod.GET;      Cors cors =         Cors.newBuilder()             .setOrigins(ImmutableList.of(Cors.Origin.of(origin)))             .setMethods(ImmutableList.of(method))             .setResponseHeaders(ImmutableList.of(responseHeader))             .setMaxAgeSeconds(maxAgeSeconds)             .build();      bucket.toBuilder().setCors(ImmutableList.of(cors)).build().update();      System.out.println(         "Bucket "             + bucketName             + " was updated with a CORS config to allow GET requests from "             + origin             + " sharing "             + responseHeader             + " responses across origins");   } }

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.

O exemplo seguinte define uma configuração de CORS num contentor:

// Imports the Google Cloud client library const {Storage} = require('@google-cloud/storage');  // Creates a client const storage = new Storage();  /**  * TODO(developer): Uncomment the following lines before running the sample.  */ // The ID of your GCS bucket // const bucketName = 'your-unique-bucket-name';  // The origin for this CORS config to allow requests from // const origin = 'http://example.appspot.com';  // The response header to share across origins // const responseHeader = 'Content-Type';  // The maximum amount of time the browser can make requests before it must // repeat preflighted requests // const maxAgeSeconds = 3600;  // The name of the method // See the HttpMethod documentation for other HTTP methods available: // https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/urlfetch/HTTPMethod // const method = 'GET';  async function configureBucketCors() {   await storage.bucket(bucketName).setCorsConfiguration([     {       maxAgeSeconds,       method: [method],       origin: [origin],       responseHeader: [responseHeader],     },   ]);    console.log(`Bucket ${bucketName} was updated with a CORS config       to allow ${method} requests from ${origin} sharing        ${responseHeader} responses across origins`); }  configureBucketCors().catch(console.error);

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.

O exemplo seguinte define uma configuração de CORS num contentor:

use Google\Cloud\Storage\StorageClient;  /**  * Update the CORS configuration of a bucket.  *  * @param string $bucketName The name of your Cloud Storage bucket.  *        (e.g. 'my-bucket')  * @param string $method The HTTP method for the CORS config. (e.g. 'GET')  * @param string $origin The origin from which the CORS config will allow requests.  *        (e.g. 'http://example.appspot.com')  * @param string $responseHeader The response header to share across origins.  *        (e.g. 'Content-Type')  * @param int $maxAgeSeconds The maximum amount of time the browser can make  *        (e.g. 3600)  *     requests before it must repeat preflighted requests.  */ function cors_configuration(string $bucketName, string $method, string $origin, string $responseHeader, int $maxAgeSeconds): void {     $storage = new StorageClient();     $bucket = $storage->bucket($bucketName);      $bucket->update([         'cors' => [             [                 'method' => [$method],                 'origin' => [$origin],                 'responseHeader' => [$responseHeader],                 'maxAgeSeconds' => $maxAgeSeconds,             ]         ]     ]);      printf(         'Bucket %s was updated with a CORS config to allow GET requests from ' .         '%s sharing %s responses across origins.',         $bucketName,         $origin,         $responseHeader     ); }

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.

O exemplo seguinte define uma configuração de CORS num contentor:

from google.cloud import storage   def cors_configuration(bucket_name):     """Set a bucket's CORS policies configuration."""     # bucket_name = "your-bucket-name"      storage_client = storage.Client()     bucket = storage_client.get_bucket(bucket_name)     bucket.cors = [         {             "origin": ["*"],             "responseHeader": [                 "Content-Type",                 "x-goog-resumable"],             "method": ['PUT', 'POST'],             "maxAgeSeconds": 3600         }     ]     bucket.patch()      print(f"Set CORS policies for bucket {bucket.name} is {bucket.cors}")     return bucket  

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.

O exemplo seguinte define uma configuração de CORS num contentor:

def cors_configuration 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    bucket.cors do |c|     c.add_rule ["*"],                ["PUT", "POST"],                headers: [                  "Content-Type",                  "x-goog-resumable"                ],                max_age: 3600   end    puts "Set CORS policies for bucket #{bucket_name}" end

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. Crie um ficheiro JSON com a configuração CORS que quer aplicar. Consulte exemplos de configuração para ver ficheiros JSON de exemplo.

  3. Use cURL para chamar a API JSON com um pedido de PATCH contentor:

    curl --request PATCH \  'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors' \  --header 'Authorization: Bearer $(gcloud auth print-access-token)' \  --header 'Content-Type: application/json' \  --data-binary @CORS_CONFIG_FILE

    Onde:

    • BUCKET_NAME é o nome do contentor. Por exemplo, my-bucket.
    • CORS_CONFIG_FILE é o caminho para o ficheiro JSON que criou no passo 2.

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. Crie um ficheiro XML com a configuração do CORS que quer aplicar. Consulte exemplos de configuração para ficheiros XML de exemplo.

  3. Use cURL para chamar a API XML com um pedido PUT Bucket no âmbito de ?cors:

    curl -X PUT --data-binary @CORS_CONFIG_FILE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-project-id: PROJECT_ID" \ "https://storage.googleapis.com/BUCKET_NAME?cors"

    Onde:

    • BUCKET_NAME é o nome do contentor. Por exemplo, my-bucket.
    • PROJECT_ID é o ID do projeto associado ao contentor. Por exemplo, my-project.
    • CORS_CONFIG_FILE é o caminho para o ficheiro XML que criou no passo 2.

Para remover a configuração de CORS de um contentor, defina uma configuração de CORS vazia.

Veja a configuração de CORS para um contentor

Para ver a configuração de CORS de um contentor:

Consola

Não pode gerir o CORS através da consola do Google Cloud . Em alternativa, use a CLI gcloud.

Linha de comandos

Use o comando gcloud storage buckets describe com a flag --format:

gcloud storage buckets describe gs://BUCKET_NAME --format="default(cors_config)"

Onde BUCKET_NAME é o nome do contentor cuja configuração de CORS quer ver. Por exemplo, my-bucket.

Bibliotecas cliente

Para ver a configuração CORS de um contentor através das bibliotecas de cliente, siga as instruções para apresentar os metadados de um contentor e procure o campo CORS na resposta:

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

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 de GET contentor:

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

    Em que BUCKET_NAME é o nome do contentor cuja configuração de CORS quer ver. Por exemplo, my-bucket.

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 no âmbito de ?cors:

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

    Em que BUCKET_NAME é o nome do contentor cuja configuração de CORS quer ver. Por exemplo, my-bucket.

O que se segue?