Artefakty pamięci Firebase

Aug 25 2020

Próbuję zrozumieć, co eu.artifacts.%PROJECT NAME%.appspot.comto jest. Obecnie zajmuje 800 MB miejsca z mojego dziennego limitu 5 GB. Zawiera tylko pliki typu aplikacja / strumień oktetu . Ten zasobnik został utworzony automatycznie, a ścieżka do pliku to eu.artifacts .... appspot.com/containers/images. 2 najcięższe pliki ważą aż 200mb i 130mb. Próbowałem go usunąć, ale został ponownie utworzony automatycznie. Użytkownicy mogą przesyłać zdjęcia na moją stronę internetową, ale ten zasobnik zajmuje obecnie tylko około 10 MB zawierającego wszystkie obrazy użytkowników.

Moje pytanie brzmi: do czego służy to wiadro i dlaczego tak bardzo waży?

Odpowiedzi

44 FrankvanPuffelen Aug 25 2020 at 13:34

Jeśli korzystasz z Cloud Functions, pliki, które widzisz, są powiązane z niedawną zmianą w sposobie budowania środowiska wykonawczego (w przypadku Node 10 i nowszych).

Cloud Functions używa teraz Cloud Build do tworzenia środowiska wykonawczego (dla Node 10 i nowszych) dla funkcji Cloud Functions. Z kolei Cloud Build używa Container Registry do przechowywania tych środowisk wykonawczych, które przechowuje je w nowym zasobniku Cloud Storage w ramach projektu.

Aby uzyskać więcej informacji na ten temat, zapoznaj się z tym wpisem w często zadawanych pytaniach dotyczących cen Firebase w artykule Dlaczego potrzebuję konta rozliczeniowego, aby korzystać z Node.js 10 lub nowszej wersji Cloud Functions for Firebase?

Zobacz również ten wątek na liście dyskusyjnej firebase-talk o tych artefaktach.

20 yo1995 Sep 30 2020 at 19:15

Skonsultowałem się z pomocą techniczną GCP i oto kilka rzeczy

  • Cloud Functions spowodowało wzrost wykorzystania pamięci
  • Ponieważ te artefakty nie są przechowywane w domyślnym zasobniku, obciążą Cię, nawet jeśli całkowita liczba przechowywanych bajtów nie osiągnie limitu poziomu bezpłatnego
  • Usuń zasobnik z artefaktami na https://console.cloud.google.com/storage/browser . Według personelu pomocniczego

Jeśli chodzi o zasobnik artefaktów, możesz się ich pozbyć, ponieważ przechowują poprzednie wersje funkcji. Nie polecam jednak usuwania zasobników „gcf-sources ...”, ponieważ zawierają one bieżący obraz, więc usunięcie tego zasobnika zakłóciłoby działanie funkcji.

Próbowałem go usunąć w całości i na razie nie sprawia kłopotów. Zaktualizuję, jeśli to zepsuje później.


Edytuj 201118: Zobacz komentarz poniżej, a może być konieczne zachowanie zasobnika podczas usuwania całej zawartości.

8 MikeAltonji Oct 12 2020 at 01:30

Dodając do odpowiedzi @ yo1995, możesz usunąć zasobnik bez konieczności przechodzenia do GCP. Pozostając w Firebase, przechodzisz do Pamięci, a następnie „Dodaj zasobnik”. Stamtąd zobaczysz opcję importowania zasobników gcp i artefaktów. Następnie możesz odpowiednio usunąć zasobniki.

5 decko Nov 17 2020 at 01:40

Dodając do @ yo1995
Skonsultowałem się z pomocą techniczną Firebase i potwierdzili, że zasobnika artefaktów nie należy usuwać. Zasadniczo artefakty są używane do tworzenia ostatecznego obrazu, który ma być przechowywany w zasobniku „gcf-sources”.

Aby zacytować je bezpośrednio,
„możesz usunąć zawartość w„ XX.artefaktach ”, ale pozostaw zasobnik nietknięty, będzie on używany w kolejnych cyklach wdrażania.”

W przypadku całkowitego usunięcia zasobnika artefaktów może wystąpić niezamierzone zachowanie.
Ponadto „Zespół pracuje nad automatycznym oczyszczeniem tego zasobnika, ale istnieją pewne ograniczenia, które muszą rozwiązać przed opublikowaniem rozwiązania”.

Na razie ustawiłem wiadro na automatyczne usuwanie plików starszych niż 1 dzień.

1 Beerswiller Dec 01 2020 at 04:22

Jak zmniejszyć ilość miejsca na dane

Jest więc świetna odpowiedź na ten problem, ale rozwiązanie, jak to naprawić, wymaga dalszego głębokiego nurkowania.

Aby pomóc przyszłym programistom przejść od razu do sedna, oto wynik, który powinieneś zobaczyć po dodaniu poniższych reguł do swojego projektu w GCP

Pomarańczowa linia to us-artifacts.<your-project>.appspot.comwiadro.

Kroki, aby rozwiązać problem

  1. Wejdź na https://console.cloud.google.com/
  2. Otwórz projekt GCP, który odpowiada projektowi Firebase
  3. W menu wybierz Storage -> Browser
  4. Kliknij problematyczny us-artifacts.<your-project>.appspot.comzasobnik
  5. Przejdź do zakładki „Cykl życia” i dodaj okres eksploatacji wynoszący 3 dni
  • Dodaj regułę
  • Usuń obiekt
  • Wiek, 3 dni
    Uwaga: Wyniki nie będą wyświetlane na wykresie użytkowania aż o 24 godzin później

Caveat

Firebase używa kontenerów, które odwołują się do poprzednich kontenerów, więc jeśli ustawisz okres 3 dni, a funkcje wdrażania Firebase zaczną kończyć się niepowodzeniem, musisz zaktualizować lokalną nazwę swojej funkcji, aby zawierała wersje, i albo określić flagę kompilacji, aby usunąć stare wersje, usuń je z firebase.json lub ręcznie usuń przestarzałe funkcje.

Korzystanie z wersjonowanych funkcji typu API

W punkcie wejścia, zakładając index.tsi zakładając, że zainicjowałeś firebase z

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)

gdzie mainjest nazwa Twojej aplikacji

i w swoim firebase.json

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

Lub ręcznie zaktualizować

# 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

Alternatywnie możesz utworzyć regułę cyklu życia, aby usunąć obiekty znajdujące się w folderze. ustaw wiek na 1 dzień. Więc usunie wszystkie obiekty w folderze, które są starsze niż 1 dzień. lifeCycle rulw

SetCondition