Mengupload objek dari memori

Halaman ini menunjukkan cara mengupload objek dari memori ke bucket Cloud Storage dengan menggunakan library klien. Mengupload dari memori berguna saat Anda ingin menghindari penulisan yang tidak perlu dari memori ke sistem file lokal Anda.

Objek yang diupload terdiri dari data yang ingin Anda simpan bersama dengan metadata terkait. Untuk ringkasan konseptual, termasuk cara memilih metode upload yang optimal berdasarkan ukuran file Anda, lihat Upload objek.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna mengupload objek dari memori ke bucket, minta administrator Anda untuk memberi Anda peran IAM Storage Object User (roles/storage.objectUser) di bucket. Peran bawaan ini berisi izin yang diperlukan untuk mengupload objek ke bucket. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

  • storage.objects.create
  • storage.objects.delete
    • Izin ini hanya diperlukan untuk upload yang menggantikan objek yang sudah ada.

Anda juga bisa mendapatkan izin ini dengan peran khusus.

Untuk mengetahui informasi tentang cara memberikan peran pada bucket, lihat Menetapkan dan mengelola kebijakan IAM pada bucket.

Mengupload objek dari memori

Library klien

C++

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C++ API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& object_name) {
  std::string const text = "Lorem ipsum dolor sit amet";
  // For small uploads where the data is contiguous in memory use
  // `InsertObject()`. For more specific size recommendations see
  //     https://cloud.google.com/storage/docs/uploads-downloads#size
  auto metadata = client.InsertObject(bucket_name, object_name, text);
  if (!metadata) throw std::move(metadata).status();
  std::cout << "Successfully wrote to object " << metadata->name()
            << " its size is: " << metadata->size() << "\n";

  // For larger uploads, or uploads where the data is not contiguous in
  // memory, use `WriteObject()`. Consider using `std::ostream::write()` for
  // best performance.
  std::vector<std::string> v(100, text);
  gcs::ObjectWriteStream stream =
      client.WriteObject(bucket_name, object_name);
  std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(stream));
  stream.Close();

  metadata = std::move(stream).metadata();
  if (!metadata) throw std::move(metadata).status();
  std::cout << "Successfully wrote to object " << metadata->name()
            << " its size is: " <<