使用 Cloud Functions 将文件从 Google Cloud Storage 传输到 Windows VM 实例
Transfer files from Google Cloud Storage to Windows VM instance using Cloud Functions
我正在尝试设置一个 Cloud Function,它将文件从存储桶移动和删除到同一项目中的 Windows 实例。当然,如果我们从实例本地 运行 它并使用 gsutil,我们就可以让它工作。
但是我们如何在本地文件夹的位置获取在云功能脚本中编码的 VM 路径?
我还在 VM 中共享了本地文件夹。
非常感谢您的意见。
下面是代码,
import logging
from google.cloud import storage
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="serviceaccount.json"
#logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
bucket_name = 'bucket name'
#File_name = 'filename'
# Instance/VM location where the files should be downloaded into (VM NAME)
folder = '//VW123456789/Cloud-Files'
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blobs = bucket.list_blobs() #List all objects that satisfy the filter.
# Download the files inside windows-VM on GCP
def download_to_local():
logging.info('File download Started...Please wait for the job to complete!')
# Create this folder locally if not exists
if not os.path.exists(folder):
os.makedirs(folder)
# Iterating through for loop one by one using API call
for blob in blobs:
logging.info('Blobs: {}'.format(blob.name))
destination_files = '{}/{}'.format(folder, blob.name)
blob.download_to_filename(destination_files)
logging.info('Exported {} to {}'.format(blob.name, destination_files))
blob.delete()
if __name__ == '__main__':
download_to_local()
谢谢!
有几种方法可以复制文件 to/from Windows 服务器。 None 这些方法很容易在 Cloud Functions 中实现。
Windows CIFS 文件共享
此方法涉及启用 Windows 共享。据我所知,没有可以在 Cloud Functions 中实现的简单 SAMBA 客户端。
SFTP
此方法需要为客户端(云功能)设置 Windows 服务器 SSH 服务器和 SSH 密钥对。有 Python 个 SSH 客户端库 (paramiko) 可以与 Cloud Functions 一起使用。使用 SFTP 传输文件很容易通过 paramiko 实现。
REST API 服务器
此方法需要创建您自己的软件,该软件提供云功能可以通过 HTTPS 调用的 REST API(或类似技术)。您将需要管理授权。实施您自己的 API 和安全性会带来重大风险。
建议
Cloud Functions 是与 Windows 服务器连接的错误服务。我建议在调用的 Windows 服务器上创建一个 HTTP 端点而不是 Cloud Function。现在您已经从您的设计等式中删除了 Windows 服务器授权。您的 Python 代码可以 运行 直接在 Windows 与云存储的接口上。
我正在尝试设置一个 Cloud Function,它将文件从存储桶移动和删除到同一项目中的 Windows 实例。当然,如果我们从实例本地 运行 它并使用 gsutil,我们就可以让它工作。
但是我们如何在本地文件夹的位置获取在云功能脚本中编码的 VM 路径?
我还在 VM 中共享了本地文件夹。
非常感谢您的意见。
下面是代码,
import logging
from google.cloud import storage
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="serviceaccount.json"
#logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
bucket_name = 'bucket name'
#File_name = 'filename'
# Instance/VM location where the files should be downloaded into (VM NAME)
folder = '//VW123456789/Cloud-Files'
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blobs = bucket.list_blobs() #List all objects that satisfy the filter.
# Download the files inside windows-VM on GCP
def download_to_local():
logging.info('File download Started...Please wait for the job to complete!')
# Create this folder locally if not exists
if not os.path.exists(folder):
os.makedirs(folder)
# Iterating through for loop one by one using API call
for blob in blobs:
logging.info('Blobs: {}'.format(blob.name))
destination_files = '{}/{}'.format(folder, blob.name)
blob.download_to_filename(destination_files)
logging.info('Exported {} to {}'.format(blob.name, destination_files))
blob.delete()
if __name__ == '__main__':
download_to_local()
谢谢!
有几种方法可以复制文件 to/from Windows 服务器。 None 这些方法很容易在 Cloud Functions 中实现。
Windows CIFS 文件共享
此方法涉及启用 Windows 共享。据我所知,没有可以在 Cloud Functions 中实现的简单 SAMBA 客户端。
SFTP
此方法需要为客户端(云功能)设置 Windows 服务器 SSH 服务器和 SSH 密钥对。有 Python 个 SSH 客户端库 (paramiko) 可以与 Cloud Functions 一起使用。使用 SFTP 传输文件很容易通过 paramiko 实现。
REST API 服务器
此方法需要创建您自己的软件,该软件提供云功能可以通过 HTTPS 调用的 REST API(或类似技术)。您将需要管理授权。实施您自己的 API 和安全性会带来重大风险。
建议
Cloud Functions 是与 Windows 服务器连接的错误服务。我建议在调用的 Windows 服务器上创建一个 HTTP 端点而不是 Cloud Function。现在您已经从您的设计等式中删除了 Windows 服务器授权。您的 Python 代码可以 运行 直接在 Windows 与云存储的接口上。