Sube objetos desde un sistema de archivos

En esta página, se muestra cómo subir objetos a tu bucket de Cloud Storage desde tu sistema de archivos local. Un objeto subido consiste en los datos que deseas almacenar junto con los metadatos asociados. Para obtener una descripción general conceptual, incluido cómo elegir el método de carga óptimo en función del tamaño del archivo, consulta Cargas de objetos.

Para obtener instrucciones sobre cómo subir objetos desde la memoria, consulta Sube objetos desde la memoria.

Roles obligatorios

Para obtener los permisos que necesitas a fin de subir objetos a un bucket, pídele a tu administrador que te otorgue el rol de IAM Usuario de objetos de almacenamiento (roles/storage.objectUser) para el bucket. Este rol predefinido contiene los permisos necesarios para subir un objeto a un bucket. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

  • storage.objects.create
  • storage.objects.delete
    • Este permiso solo es necesario para las cargas que reemplazan un objeto existente.
  • storage.objects.get
    • Este permiso solo es necesario si planeas usar Google Cloud CLI para realizar las tareas en esta página.
  • storage.objects.list
    • Este permiso solo es necesario si planeas usar Google Cloud CLI para realizar las tareas en esta página. Este permiso también es necesario si deseas usar la consola de Google Cloud para verificar los objetos que subiste.

Si planeas usar la consola de Google Cloud para realizar las tareas de esta página, también necesitarás el permiso storage.buckets.list, que no se incluye en el rol Usuario de objetos de almacenamiento (roles/storage.objectUser). Para obtener este permiso, pídele a tu administrador que te otorgue el rol Administrador de almacenamiento (roles/storage.admin) en el proyecto.

También puedes obtener estos permisos con otros roles predefinidos o roles personalizados.

Para obtener más información sobre cómo otorgar roles en los buckets, consulta Configura y administra políticas de IAM en buckets.

Subirás un objeto a un bucket.

Sigue los pasos a continuación para subir un objeto a un bucket:

Console

  1. En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket al que deseas subir un objeto.

  3. En la pestaña Objetos del bucket, realiza una de las siguientes acciones:

    • Arrastra archivos desde tu escritorio o administrador de archivos al panel principal en la consola de Google Cloud .

    • Haz clic en Subir > Subir archivos, selecciona los archivos que deseas subir en el cuadro de diálogo que aparece y, luego, haz clic en Abrir.

Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la Google Cloud consola, consulta Solución de problemas.

Línea de comandos

Usa el comando gcloud storage cp:

gcloud storage cp OBJECT_LOCATION gs://DESTINATION_BUCKET_NAME

Donde:

  • OBJECT_LOCATION es la ruta de acceso local a tu objeto. Por ejemplo, Desktop/dog.png.

  • DESTINATION_BUCKET_NAME es el nombre del bucket al que subes el objeto. Por ejemplo, my-bucket

Si se ejecuta de forma correcta, la respuesta se parece al siguiente ejemplo:

Completed files 1/1 | 164.3kiB/164.3kiB

Puedes configurar metadatos de objetos de clave fija y personalizada como parte de la carga de objetos mediante marcas de comandos.

Bibliotecas cliente

C++

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.

Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& file_name,
   std::string const& bucket_name, std::string const& object_name) {
  // Note that the client library automatically computes a hash on the
  // client-side to verify data integrity during transmission.
  StatusOr<gcs::ObjectMetadata> metadata = client.UploadFile(
      file_name, bucket_name, object_name, gcs::IfGenerationMatch(0));
  if (!metadata) throw std::move(metadata).status();

  std::cout << "Uploaded " << file_name << " to object " << metadata->name()
            << " in bucket " << metadata->bucket()
            << "\nFull metadata: " << *metadata << "\n";
}

C#

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.

Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.


using Google.Cloud.Storage.V1;
using System;
using System.IO;

public class UploadFileSample
{
    public void UploadFile(
        string bucketName = "your-unique-bucket-name",
        string localPath = "my-local-path/my-file-name",
        string objectName = "my-file-name")
    {
        var storage = StorageClient.Create();
        using var fileStream = File.OpenRead(localPath);
        storage.UploadObject(bucketName, objectName, null, fileStream);
        Console.WriteLine($"Uploaded {objectName}.");
    }
}

Go

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.

Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

import (
	"context"
	"fmt"
	"io"
	"os"
	"time"

	"cloud.google.com/go/storage"
)

// uploadFile uploads an object.
func uploadFile(w io.Writer, bucket, object string) error {
	// bucket := "bucket-name"
	// object := "object-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %w", err)
	}
	defer client.Close()

	// Open local file.
	f, err := os.Open("notes.txt")
	if err != nil {
		return fmt.Errorf("os.Open: %w", err)
	}
	defer f.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*50)
	defer cancel()

	o := client.Bucket(bucket).Object(object)

	// Optional: set a generation-match precondition to avoid potential race
	// conditions and data corruptions. The request to upload is aborted if the
	// object's generation number does not match your precondition.
	// For an object that does not yet exist, set the DoesNotExist precondition.
	o = o.If(storage.Conditions{DoesNotExist: true})
	// If the live object already exists in your bucket, set instead a
	// generation-match precondition using the live object's generation number.
	// attrs, err := o.Attrs(ctx)
	// if err != nil {
	// 	return fmt.Errorf("object.Attrs: %w", err)
	// }
	// o = o.If(storage.Conditions{GenerationMatch: attrs.Generation})

	// Upload an object with storage.Writer.
	wc := o.NewWriter(ctx)
	if _, err = io.Copy(wc, f); err != nil {
		return fmt.Errorf("io.Copy: %w", err)
	}
	if err := wc.Close(); err