让数据在两个buckets之间传输 - Google Storage Transfer Service

在业务场景中, 有时我们不想直接暴露数据存储空间给上游系统, 而需要设置1个landing Path 让上游系统发送数据

如图:
在这里插入图片描述
我们只需grant landing bucket 的权限给上游系统, 而上游系统是访问不了storage bucket的保证了数据隔离
但是至于怎么把放在landing bucket的文件自动导到Storage Bucket.

我们当然可以写代码, build 一些ETL service去完成, 这个service 定期观察landing bucket是否有新文件到。 有就把文件放入Storage Bucket



Storage Transfer Service 介绍

Google 已经具有个产品叫 Storage Transfer Service, 可以帮我们把文件在两个bucket 之间传输(甚至包括AWS S3 Bucket, 不在本文讨论范围内)

大概原理图:
在这里插入图片描述



各组件介绍



src bucket

就是storage transfer service 的源bucket

storage notification

要实现event driven的storage transfer serivce, 我们必须为src bucket 创建1个bucket notification, 一旦有新文件进入or 改动(事件类型可以配置), bucket notfication 会发送一条消息(新文件的元数据) 到1个pubsub topic

参考
https://cloud.google.com/storage/docs/pubsub-notifications

pubsub topic

pubsub 组件是实现event driven 的关键, topic 的主要作用就是用于接受storage notification发送的消息

pubsub pull subscription

subscription 就为了让 后面的 transfer streaming job 去消费消息(发送自storage notification)

Storage Transfer streaming job

这个就是整个流程的核心, 这个job 会24小时启动, 它会monitor pubsub subscription, 一旦有新的消息, 它就回去把文件从src bucket move 到 target bucket

并不难理解



1个具体例子

创建 buckets

首先 我们先创建 两个bucket
jason-hsbc-demo-src
jason-hsbc-demo-target

// define src bucket
resource "google_storage_bucket" "bucket-jason-hsbc-demo-src" {
   
  name     = "jason-hsbc-demo-src"
  project  = var.project_id
  location = var.region_id
}


//define target bucket
resource "google_storage_bucket" "bucket-jason-hsbc-demo-target" {
   
  name     = "jason-hsbc-demo-target"
  project  = var.project_id
  location = var.region_id
}
创建 pubsub topic 和subscription

topic: top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值