[Cloud Functions] Décompresse automatiquement les fichiers GZIP placés dans le stockage
Préambule
La source
J'ai modifié le code (référence link-3) qui décompresse le fichier Zip que mon prédécesseur a déposé.
On suppose qu'un seul fichier est compressé au format Gzip avec Cloud Functions (Python 3.7) lancé par un déclencheur Cloud Storage.
main.py
from google.cloud import storage
import io,gzip
def hello_gcs(event, context):
client = storage.Client()
bucket_name = event['bucket']
bucket = client.get_bucket(bucket_name)
blob_name = event['name']
blob = bucket.blob(blob_name)
data = io.BytesIO(blob.download_as_string())
with gzip.open(data) as gz:
file = gz.read()
blob_decompress = bucket.blob(blob_name.replace('.gz',''))
blob_decompress.upload_from_string(file)
Gros problème
- La mémoire maximale allouée aux fonctions cloud est de 2 Go (au moment de la publication)
- Si le traitement dépasse la capacité de la mémoire, une erreur se produira naturellement.
⇒ Au moment du placement du fichier GZIP, la capacité pouvait être de 2 Go ou plus, donc cela a fini par être une merde. ..
Lien de référence
- Cloud Functions Guide: Google Cloud Storage Trigger
- [J'ai créé une tâche sans serveur qui charge des données dans BigQuery en pilotant des événements lorsque des fichiers sont placés dans GCS](https://dev.classmethod.jp/articles/cloud-functions-gcs-trigger-load- data2bigquery /)
- [Comment décompresser le fichier .Zip dans Google Cloud Storage? ](Https://www.it-swarm.dev/ja/google-cloud-platform/google%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3% 82% B9% E3% 83% 88% E3% 83% AC% E3% 83% BC% E3% 82% B8% E3% 81% A7zip% E3% 83% 95% E3% 82% A1% E3% 82% A4% E3% 83% AB% E3% 82% 92% E8% A7% A3% E5% 87% 8D% E3% 81% 99% E3% 82% 8B% E3% 81% AB% E3% 81% AF% E3% 81% A9% E3% 81% 86% E3% 81% 99% E3% 82% 8C% E3% 81% B0% E3% 82% 88% E3% 81% 84% E3% 81% A7% E3% 81% 99% E3% 81% 8B% EF% BC% 9F / 837268170 /)