Artefacts de stockage Firebase

Aug 25 2020

J'essaye de comprendre ce que eu.artifacts.%PROJECT NAME%.appspot.comc'est. Il occupe actuellement 800 Mo de stockage par rapport à ma limite quotidienne de 5 Go. Il ne contient que des fichiers de type application / flux d'octets . Ce compartiment a été créé automatiquement et le chemin du fichier est eu.artifacts .... appspot.com/containers/images. Les 2 fichiers les plus lourds y pèsent jusqu'à 200 Mo et 130 Mo. J'ai essayé de le supprimer mais il a été automatiquement créé à nouveau. Les utilisateurs peuvent télécharger des photos sur mon site Web, mais ce seau ne prend actuellement qu'environ 10 Mo contenant toutes les images des utilisateurs.

Ma question est donc la suivante: à quoi sert ce seau et pourquoi pèse-t-il autant?

Réponses

44 FrankvanPuffelen Aug 25 2020 at 13:34

Si vous utilisez Cloud Functions, les fichiers que vous voyez sont liés à un changement récent dans la façon dont le runtime (pour Node 10 et plus) est construit.

Cloud Functions utilise désormais Cloud Build pour créer l'environnement d'exécution (pour Node 10 et versions ultérieures) de vos Cloud Functions. Et Cloud Build utilise à son tour Container Registry pour stocker ces environnements d'exécution, qui les stocke dans un nouveau bucket Cloud Storage sous votre projet.

Pour en savoir plus, consultez également cette entrée dans la FAQ sur la tarification Firebase sur Pourquoi ai-je besoin d'un compte de facturation pour utiliser Node.js 10 ou version ultérieure pour Cloud Functions for Firebase?

Consultez également ce fil de discussion sur la liste de diffusion Firebase-talk sur ces artefacts.

20 yo1995 Sep 30 2020 at 19:15

J'ai consulté l'assistance GCP et voici quelques points

  • Cloud Functions a provoqué une augmentation de l'utilisation du stockage
  • Étant donné que ces artefacts ne sont pas stockés dans le compartiment par défaut, ils vous factureront même si le nombre total d'octets stockés n'atteint pas la limite de l'offre gratuite
  • Supprimez le compartiment d'artefacts à l' adresse https://console.cloud.google.com/storage/browser . Selon le personnel de soutien

En ce qui concerne le compartiment des artefacts, vous pouvez en fait vous en débarrasser, car ils stockent des versions précédentes de la fonction. Cependant, je ne recommande pas de supprimer le (s) bucket (s) "gcf-sources ...", car il contient l'image actuelle, donc la suppression de ce bucket gâcherait votre fonction.

J'ai essayé de l'enlever en entier, et jusqu'à présent, cela ne cause aucun problème. Je mettrai à jour si ça casse les choses plus tard.


Edit 201118: Voir le commentaire ci-dessous et vous devrez peut-être conserver le seau tout en supprimant tout le contenu qu'il contient.

8 MikeAltonji Oct 12 2020 at 01:30

En plus de la réponse de @ yo1995, vous pouvez supprimer le bucket sans avoir à accéder à GCP. En restant dans Firebase, vous allez dans Stockage, puis "Ajouter un compartiment". De là, vous verrez l'option d'importer les buckets gcp et artefact. Ensuite, vous pouvez supprimer les buckets en conséquence.

5 decko Nov 17 2020 at 01:40

Ajout à @ yo1995,
j'ai consulté le support Firebase et ils ont confirmé que le compartiment d' artefacts ne devait pas être supprimé. Fondamentalement, les artefacts sont utilisés pour aider à construire l'image finale à stocker dans le bucket "gcf-sources".

Pour les citer directement
"vous êtes libre de supprimer le contenu de" XX.artifacts ", mais laissez le bucket intact, il sera utilisé dans les cycles de déploiement suivants."

Il peut y avoir un comportement indésirable si vous supprimez entièrement le compartiment d'artefacts.
De plus, "L'équipe travaille pour nettoyer automatiquement ce compartiment, mais il y a certaines restrictions à résoudre avant de publier la solution."

Pour le moment, j'ai configuré le bucket pour supprimer automatiquement les fichiers de plus d'un jour.

1 Beerswiller Dec 01 2020 at 04:22

Comment réduire le stockage

Il y a donc une excellente réponse au problème, mais la solution pour le résoudre nécessite une plongée plus profonde.

Pour aider les futurs développeurs à aller droit au but, voici le résultat que vous devriez voir après avoir ajouté les règles suivantes à votre projet dans GCP

La ligne orange est le us-artifacts.<your-project>.appspot.comseau.

Étapes pour résoudre le problème

  1. Accédez à https://console.cloud.google.com/
  2. Ouvrez le projet GCP qui correspond au projet Firebase
  3. Dans le menu, choisissez Stockage -> Navigateur
  4. Cliquez sur le us-artifacts.<your-project>.appspot.comseau incriminé
  5. Accédez à l'onglet 'Cycle de vie' et ajoutez une durée de vie de 3 jours
  • Ajouter une règle
  • Supprimer l' objet
  • Âge, 3 jours
    NB: les résultats n'apparaîtront sur le graphique d'utilisation qu'environ 24 heures plus tard

Caveat

Firebase utilise des conteneurs qui font référence aux conteneurs précédents, donc si vous définissez une période de 3 jours et que vos fonctions de déploiement Firebase commencent à échouer, vous devrez mettre à jour le nom local de votre fonction pour inclure le contrôle de version, et soit spécifier un indicateur de construction pour supprimer l'ancien. versions, supprimez-les de votre firebase.json ou supprimez manuellement les fonctions obsolètes.

Utilisation des fonctions de type API versionnées

Dans votre point d'entrée, en supposant index.tset en supposant que vous avez initié Firebase avec

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)

où mainest le nom de votre application

et dans votre firebase.json

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

Ou, pour mettre à jour manuellement

# 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

Vous pouvez également créer une règle de cycle de vie pour supprimer les objets à l'intérieur du dossier. définir l'âge à 1 jour. Ainsi, il supprimera tous les objets du dossier vieillissant depuis plus d'un jour. lifeCycle rulw

SetCondition