3
votes

Comment copier l'objet blob du stockage Azure vers la machine virtuelle Linux à l'aide de python?

Je suis nouveau dans les services cloud Azure car je ne sais pas comment copier mon objet blob du compte de stockage Azure vers une machine virtuelle Linux (vm) à l'aide de python. Dans mon application, je stocke le fichier téléchargé sur le stockage Azure et j'ai également déclenché la fonction Azure chaque fois que le nouveau fichier est téléchargé maintenant, je dois copier ce fichier sur la machine virtuelle Azure à partir de la fonction Azure. Toute aide sera très appréciée.


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser Azure Storage Python SDK pour cela. Vous pouvez utiliser ce fichier d'exemples comme base et documentation officielle:

https://github.com/Azure/azure-storage-python/blob/master/samples/blob/block_blob_usage.py#L329
https://docs.microsoft.com/ fr-fr / azure / storage / blobs / storage-quickstart-blobs-python

full_path_to_file2 = os.path.join(local_path, string.replace(local_file_name ,'.txt', '_DOWNLOADED.txt'))
print("\nDownloading blob to " + full_path_to_file2)
block_blob_service.get_blob_to_path(container_name, local_file_name, full_path_to_file2)


2 commentaires

Merci pour tout votre temps, à partir de l'extrait de code ci-dessus, il semble que le fichier devrait être copié du stockage Azure vers le dossier local. mais j'ai besoin de copier l'objet blob du stockage Azure vers Azure VM, comment puis-je y parvenir?


eh bien, vous devez l'exécuter sur le vm, il n'y a pas d'API pour mettre les choses directement dans le vm, mais il y a une api pour exécuter un script personnalisé dans le vm. vous pouvez créer \ tester un script qui fonctionne localement et l'appeler dans le vm. docs.microsoft.com/en-us/ azure / machines-virtuelles / extensions /…



0
votes

Il semble que vous souhaitiez utiliser Azure Function avec le déclencheur de stockage d'objets blob pour copier des objets blob du stockage Azure vers une machine virtuelle Linux à l'aide de Python.

Une solution réalisable consiste donc à utiliser certains packages Python scp ou ssh2-python avec le SDK Azure Storage Python sur Azure Fonction permettant de réaliser la fonctionnalité permettant de télécharger des objets blob et de les transférer sur une machine virtuelle Linux via ces packages Python comme la commande linux scp .

Comme je le savais, il existe un adaptateur de système de fichiers virtuel pour le stockage Azure Blob sur Linux azure-storage-fuse , qui peut monter un conteneur Blob avec blobfuse sur le système de fichiers local Linux en tant que répertoire. D'après mon expérience, l'autre solution de contournement consiste à monter un conteneur d'objets blob spécifié dans lequel vous avez téléchargé des fichiers sur votre machine virtuelle Linux, puis vous pouvez accéder directement à ces fichiers comme en local. Azure Function avec Blob Trigger a juste besoin de notifier l'événement d'un nouveau fichier de téléchargement vers votre application associée sur votre machine virtuelle Linux.


0 commentaires

1
votes

Vous trouverez ci-dessous un extrait de code spécifiquement pour Python Azure Functions. Il lit un fichier à partir du stockage Blob dans la mémoire, puis le transfère vers un emplacement distant à l'aide de SSH (en particulier SFTP sur SSH). Il utilise une bibliothèque appelée paramiko pour SSH.

import logging
import paramiko

import azure.functions as func


def main(myblob: func.InputStream):
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname='YOUR_HOST_NAME', username='USERNAME_FROM_APP_SETTINGS', password='PASSWORD_FROM_APP_SETTINGS')

    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")
    with open('LOCAL_FILE_LOCATION', 'wb') as f: 
        f.write(myblob.read()) 

    ftp_client=ssh_client.open_sftp()
    ftp_client.put('LOCAL_FILE_LOCATION','REMOTE_FILE_LOCATION') # same file location written to above
    ftp_client.close()


1 commentaires

Merci pour votre temps, c'est exactement ce que je recherche.Il a réussi à copier mon blob des comptes de stockage sur ma machine virtuelle.