我有一些代码可以从 Google Cloud Storage 上传和下载文件。下面是一个简短的例子:
import (
"context"
"io"
"cloud.google.com/go/storage"
)
func upload(bucket, keyName, path string, reader io.Reader) error {
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
return err
}
defer client.Close()
obj := client.Bucket(bucket).Object(path)
writer := obj.NewWriter(ctx)
defer writer.Close()
writer.KMSKeyName = keyName
if _, err = io.Copy(writer, reader); err != nil {
return err
}
if err = writer.Close(); err != nil {
return err
}
return nil
}
棘手的部分是我使用 Google KMS 来管理用于加密文件的密钥(Google 所谓的“客户管理的加密密钥”方案)。我的理解是,这种加密发生在 Google 端。
我发现使用 Go CDK 的唯一解决方案是使用 Google KMS 加密文件,然后上传加密的 blob。有没有办法像我以前用 Go CDK 一样指定加密密钥?
谢谢