运行 Google 云函数中的 gsutil 命令
Run a gsutil command in a Google Cloud Function
我想 运行 每 x 分钟执行一次 gsutil 命令作为云函数。我尝试了以下方法:
# main.py
import os
def sync():
line = "gsutil -m rsync -r gs://some_bucket/folder gs://other_bucket/other_folder"
os.system(line)
虽然 Cloud Function 被触发,但该行的执行不起作用(或者即文件未从一个存储桶复制到另一个存储桶)。但是,当我 运行 在本地 Pycharm 或使用 cmd 时,它确实工作正常。和云函数有什么区别?
Cloud Functions 服务器实例未安装 gsutil。它可以在您的本地计算机上运行,因为您已经在那里安装和配置了它。
我建议尝试找到一种方法来使用 python 的 Cloud Storage SDK 来完成您想要的操作。或者弄清楚如何使用您的函数部署 gsutil 并弄清楚如何从您的代码中配置和调用它,但这可能非常困难。
没有直接的选择。
我认为 Cloud Functions 的最佳选择是使用 google-cloud-storage
python library
您可以为此使用 Cloud Run。您需要对代码进行很少的更改。
创建一个安装了 gsutil 并 python 的容器,例如 gcr.io/google.com/cloudsdktool/cloud-sdk
作为基础镜像
注意部署 Cloud 时使用的服务帐户 运行,授予访问存储桶的正确权限
如果您需要更多指导,请告诉我
我想 运行 每 x 分钟执行一次 gsutil 命令作为云函数。我尝试了以下方法:
# main.py
import os
def sync():
line = "gsutil -m rsync -r gs://some_bucket/folder gs://other_bucket/other_folder"
os.system(line)
虽然 Cloud Function 被触发,但该行的执行不起作用(或者即文件未从一个存储桶复制到另一个存储桶)。但是,当我 运行 在本地 Pycharm 或使用 cmd 时,它确实工作正常。和云函数有什么区别?
Cloud Functions 服务器实例未安装 gsutil。它可以在您的本地计算机上运行,因为您已经在那里安装和配置了它。
我建议尝试找到一种方法来使用 python 的 Cloud Storage SDK 来完成您想要的操作。或者弄清楚如何使用您的函数部署 gsutil 并弄清楚如何从您的代码中配置和调用它,但这可能非常困难。
没有直接的选择。
我认为 Cloud Functions 的最佳选择是使用 google-cloud-storage
python library
您可以为此使用 Cloud Run。您需要对代码进行很少的更改。
创建一个安装了 gsutil 并 python 的容器,例如 gcr.io/google.com/cloudsdktool/cloud-sdk
作为基础镜像
注意部署 Cloud 时使用的服务帐户 运行,授予访问存储桶的正确权限
如果您需要更多指导,请告诉我