首页 > 解决方案 > 如何使用 python 将 blob 从 Azure 存储复制到 linux 虚拟机?

问题描述

我是 Azure 云服务的新手,因为我不知道如何使用 python 将我的 blob 从 Azure 存储帐户复制到 Linux 虚拟机 (vm)。在我的应用程序中,我将上传的文件存储到 Azure 存储,并且每当上传新文件时我也触发了 Azure 功能,现在我需要将该文件从 Azure 功能复制到 Azure VM。任何帮助都感激不尽。

标签: python-3.xazureazure-storageazure-functions

解决方案


下面是专门用于 Python Azure Functions 的代码片段。它将文件从 Blob 存储读取到内存中,然后使用 SSH(特别是基于 SSH 的 SFTP)将其传输到远程位置。它使用一个名为paramikoSSH 的库。

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()

推荐阅读