1
votes

Exécutez une commande gsutil dans une fonction Google Cloud

Je voudrais exécuter une commande gsutil toutes les x minutes en tant que fonction cloud. J'ai essayé ce qui suit:

# main.py
import os

def sync():
     line = "gsutil -m rsync -r gs://some_bucket/folder gs://other_bucket/other_folder"
     os.system(line)

Pendant le déclenchement de la fonction Cloud, l'exécution de la ligne ne fonctionne pas (ou c'est-à-dire que les fichiers ne sont pas copiés d'un bucket à un autre). Cependant, cela fonctionne bien lorsque je l'exécute localement dans Pycharm ou avec cmd. Quelle est la différence avec les fonctions cloud?


2 commentaires

vous devez d'abord vérifier si gsuitl fonctionne (sans l'exécuter Python) et plus tard, vous pouvez essayer d'utiliser crontab (au lieu de Python) pour l'exécuter toutes les X minutes - si vous utilisez Linux.


J'ai lié pour l'exécuter en utilisant os.popen et os.system, bien que cela fonctionne bien dans mon terminal local, cela ne le déclenche pas dans la fonction cloud. Je vois essentiellement une ligne vide, puis il est dit que la fonction s'est exécutée complètement. Semble plus une question gcf, réponse mise à jour.


3 Réponses :


1
votes

gsutil n'est pas installé sur les instances de serveur Cloud Functions. Il fonctionne sur votre machine locale car vous l'avez installé et configuré là-bas.

Je suggère d'essayer de trouver un moyen de faire ce que vous voulez avec le SDK Cloud Storage pour python. Ou découvrez comment déployer gsutil avec votre fonction et comment le configurer et l'invoquer à partir de votre code, mais cela peut être très difficile.


0 commentaires

1
votes

Il n'y a pas d'option simple pour cela.

Je pense que le mieux pour Cloud Functions est d'utiliser google-cloud-storage bibliothèque python


0 commentaires

2
votes

Vous pouvez utiliser Cloud Run pour cela . Vous avez très peu de modifications à effectuer dans votre code.

Créez un conteneur avec gsutil installé et python également, par exemple gcr.io/google.com/cloudsdktool/cloud-sdk comme image de base

Prenez soin du compte de service utilisé lorsque vous déployez Cloud Run, accordez l'autorisation appropriée pour accéder à votre bucket

Faites-moi savoir si vous avez besoin de plus de conseils


0 commentaires