我想用一个基于flask的microservice为我的Cloud Firestore数据库建立一个自动备份服务,我需要使用以下命令:
gcloud beta firestore export gs://[BUCKET_NAME]
这是我想通过我的appengine微服务运行的命令
@app.route('/backup', methods=["GET", "POST"])
def backup():
subprocess.call('gcloud beta firestore export gs://bucket-name --async', shell=True)
return f"Backup process started successfully, you can close this window. {datetime.now(timezone.utc)}"
但是看起来什么都没有发生,我假设这是因为我的appengine实例没有CloudSDK。你知道吗
这是我可以在云函数中做的吗?你知道吗
不能在沙盒环境(appengine、functions)中执行系统调用。而且你不知道平台上安装了什么,这很危险/不一致。你知道吗
您可以尝试使用cloud run或app engine flex。但这不是一个真正的最佳实践。最好的方法是使用Python库以编程方式执行相同的操作。在任何情况下,底层结果都是相同的:一个API调用。你知道吗
下面是一个示例应用程序,您可以使用googleappengine Cron服务调用它。它基于node.js example in the docs:
附录yaml
如果已经部署了默认服务,请添加
target: cloud-firestore-admin
以创建新服务。你知道吗要求.txt
google-api-python-client简化了对CloudFireStoreRESTAPI的访问。你知道吗
主.py
克朗.亚马尔
如果部署到中的非默认服务附录yaml,也添加到这里:
target: cloud-firestore-admin
。你知道吗应用引擎服务帐户的访问权限
一旦部署,应用程序将使用GAE服务帐户来授权导出请求。确保您的GAE服务帐户对Cloud Firestore和存储桶具有权限,请参阅:
https://cloud.google.com/firestore/docs/solutions/schedule-export#configure_access_permissions
相关问题 更多 >
编程相关推荐