我正在做一个基于多云(AWS和GCP)的宠物项目,它基于无服务器架构。
现在,GCP中的业务逻辑(使用Cloud Functions和Pub/Sub)生成了文件,这些文件存储在GCP云存储中。我想从云存储中将这些文件动态摄取到亚马逊网络服务S3存储桶中。
一种可能的方法是使用gsutil库(Exporting data from Google Cloud Storage to Amazon S3),但这将需要一个计算实例,并手动运行gsutil命令,这是我想要避免的。
发布于 2020-07-09 00:06:18
在回答这个问题时,我想到了一点Rube Goldberg类型的设置,但我认为这并不是太糟糕。
在the Google side中,您可以创建一个云函数,在创建新文件时会收到通知。您将使用Object Finalize事件。此函数将获取有关该文件的信息,然后调用由AWS API Gateway提供的AWS Lambda。
GCP函数会将存储桶和文件信息传递给AWS Lambda。在AWS端,您将拥有您的GCP凭证和GCP,下载文件并将其上传到S3。
类似于:
GCP和AWS上都是无服务器的。测试并不糟糕,因为您可以将它们分开-确保GCP发送的是您想要的内容,并确保AWS正在解析并执行正确的操作。从GCP云函数到API网关可能需要进行一些身份验证。此外,如果您可以将AWS客户端库添加到GCP函数中,则可以省去API网关。既然你已经把GCP库放到了AWS Lambda中,这应该不是什么大问题。
https://stackoverflow.com/questions/62795107
复制相似问题