Artefak penyimpanan Firebase

Aug 25 2020

Saya mencoba untuk memahami apa eu.artifacts.%PROJECT NAME%.appspot.comitu. Saat ini menggunakan penyimpanan 800 MB dari batas 5 GB harian saya. Ini hanya berisi file jenis aplikasi / aliran oktet . Keranjang ini dibuat secara otomatis dan jalur filenya adalah eu.artifacts .... appspot.com/containers/images. 2 file terberat ada yang beratnya sebanyak 200mb dan 130mb. Saya mencoba menghapusnya tetapi secara otomatis dibuat lagi. Pengguna dapat mengunggah gambar di situs web saya tetapi keranjang itu saat ini hanya membutuhkan sekitar 10mb yang berisi semua gambar pengguna.

Jadi pertanyaan saya adalah: Untuk apa ember ini dan mengapa beratnya begitu berat?

Jawaban

44 FrankvanPuffelen Aug 25 2020 at 13:34

Jika Anda menggunakan Cloud Functions, file yang Anda lihat terkait dengan perubahan terbaru dalam cara runtime (untuk Node 10 dan yang lebih baru) dibuat.

Cloud Functions sekarang menggunakan Cloud Build untuk membuat runtime (untuk Node 10 dan yang lebih baru) untuk Cloud Functions Anda. Dan Cloud Build pada gilirannya menggunakan Container Registry untuk menyimpan runtime tersebut, yang menyimpannya dalam keranjang Cloud Storage baru di bawah proyek Anda.

Untuk mengetahui lebih lanjut tentang ini, lihat juga entri ini di FAQ harga Firebase tentang Mengapa saya memerlukan akun penagihan untuk menggunakan Node.js 10 atau yang lebih baru untuk Cloud Functions for Firebase?

Lihat juga utas ini di milis firebase-talk tentang artefak ini.

20 yo1995 Sep 30 2020 at 19:15

Saya telah berkonsultasi dengan dukungan GCP dan berikut beberapa hal

  • Cloud Functions menyebabkan lonjakan penggunaan penyimpanan
  • Karena artefak ini tidak disimpan dalam keranjang default, mereka akan menagih Anda meskipun total byte yang disimpan tidak mencapai batas tingkat gratis
  • Hapus keranjang artefak di https://console.cloud.google.com/storage/browser . Menurut staf pendukung

Mengenai keranjang artefak, Anda sebenarnya dapat membuangnya, karena mereka menyimpan versi fungsi sebelumnya. Namun, saya tidak menyarankan untuk menghapus bucket "gcf-sources ...", karena bucket berisi gambar saat ini, jadi menghapus bucket ini akan mengacaukan fungsi Anda.

Saya mencoba untuk menghapusnya secara keseluruhan, dan sejauh ini tidak menimbulkan masalah. Saya akan memperbarui jika nanti rusak.


Sunting 201118: Lihat komentar di bawah dan Anda mungkin perlu menyimpan ember saat menghapus semua konten di dalamnya.

8 MikeAltonji Oct 12 2020 at 01:30

Menambahkan respons @ yo1995, Anda dapat menghapus bucket tanpa perlu masuk ke GCP. Tetap di Firebase, Anda pergi ke Storage, lalu "Add a Bucket". Dari sana, Anda akan melihat opsi untuk mengimpor bucket gcp dan artefak. Selanjutnya, Anda dapat menghapus bucket yang sesuai.

5 decko Nov 17 2020 at 01:40

Menambahkan ke @ yo1995
saya berkonsultasi dengan Dukungan Firebase dan mereka mengonfirmasi bahwa keranjang artefak tidak boleh dihapus. Pada dasarnya, artefak digunakan untuk membantu membuat gambar akhir untuk disimpan di keranjang "gcf-sources".

Untuk mengutipnya secara langsung,
"Anda bebas menghapus konten di" XX.artifacts ", tetapi biarkan bucket tidak tersentuh, ini akan digunakan dalam siklus penerapan berikut."

Mungkin ada beberapa perilaku yang tidak diinginkan jika Anda menghapus bucket artefak seluruhnya.
Selain itu, "Tim sedang bekerja untuk membersihkan keranjang ini secara otomatis, tetapi ada beberapa batasan yang perlu mereka selesaikan sebelum memublikasikan solusi."

Untuk saat ini saya menyetel bucket ke otomatis menghapus file yang berumur lebih dari 1 hari.

1 Beerswiller Dec 01 2020 at 04:22

Bagaimana mengurangi penyimpanan

Jadi ada jawaban yang bagus untuk masalah ini tetapi solusi tentang cara memperbaikinya membutuhkan penyelaman yang lebih dalam.

Untuk membantu developer di masa mendatang, berikut adalah hasil yang akan Anda lihat setelah menambahkan aturan berikut ke project Anda di GCP

Garis oranye adalah us-artifacts.<your-project>.appspot.comember.

Langkah-langkah untuk memperbaiki masalah tersebut

  1. Navigasikan ke https://console.cloud.google.com/
  2. Buka proyek GCP yang sesuai dengan proyek Firebase
  3. Di menu, pilih Storage -> Browser
  4. Klik pada us-artifacts.<your-project>.appspot.comkeranjang yang melanggar
  5. Buka tab 'Siklus Hidup' dan tambahkan masa hidup 3 hari
  • Tambahkan aturan
  • Hapus Objek
  • Usia, 3 Hari
    NB: Hasil tidak akan muncul di grafik penggunaan hingga sekitar 24 jam kemudian

Peringatan

Firebase menggunakan penampung yang mereferensikan penampung sebelumnya, jadi jika Anda menyetel jangka waktu 3 hari dan fungsi penerapan firebase mulai gagal, Anda perlu memperbarui nama lokal fungsi Anda untuk menyertakan pembuatan versi, dan menentukan tanda build untuk menghapus yang lama. versi, hapus dari firebase.json Anda, atau hapus fungsi yang tidak terpakai secara manual.

Menggunakan fungsi jenis API berversi

Di entrypoint Anda, dengan asumsi index.ts, dan asumsi Anda telah memulai firebase dengan

admin.initializeApp(functions.config().firebase)
import * as functions from 'firebase-functions'

// define the app as a cloud function called APIv1 build xxxxxx
export const APIv1b20201202 = functions.https.onRequest(main)

di mana mainnama aplikasi Anda

dan di firebase.json

...
"hosting": {
    "public": "dist",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**", "**/tests/**"],
    "rewrites": [
      {
        "source": "/api/v1/**",
        "function": "APIv1b2021202"
      }
    ]
  },
...

Atau, untuk Memperbarui Secara Manual

# Deploy new function called APIv11
$ firebase deploy --only functions:APIv11

# Wait until deployment is done; now both APIv11 and APIv10 are running

# Delete APIv10
$ firebase functions:delete APIv10
Ankur Nov 23 2020 at 11:06

Sebagai alternatif, Anda dapat membuat aturan Siklus hidup untuk menghapus objek di dalam folder. atur umur 1 hari. Jadi itu akan menghapus semua objek di folder yang berumur lebih dari 1 hari. aturan siklus hidup

SetCondition