在下面的代码中,我接受了一个输入桶和blob以及一个输出桶和blob。该代码通过setCredentials
方法为输入存储桶中的blob建立服务帐户凭据。但是,输出存储区的copyTo
方法中没有镜像步骤。
def copy(inBucketName: String,
inBlobName: String,
outBucketName: String,
outBlobName: String) = {
val storage = StorageOptions.newBuilder
.setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("key.json")))
.build
.getService
val blobId = BlobId.of(inBucketName, inBlobName)
val blob = storage.get(blobId)
if (blob != null) {
val copyWriter = blob.copyTo(outBucketName, outBlobName)
val copiedBlob = copyWriter.getResult()
}
}
我担心如果每个存储桶具有不同的服务凭据,这将在将来导致一些身份验证问题。查看blob.copyTo()
API,我还可以传递BlobSourceOptoin object
:public CopyWriter copyTo(String targetBucket, String targetBlob, BlobSourceOption... options)
。但是,我没有在BlobSourceOption
中看到我可以分配凭据的任何地方。是否需要为目标存储桶分配凭据?如果是这样,有没有一种标准的方法来设置它们?
答案 0 :(得分:0)
使用以下代码段。凭据是凭证JSON字符串。
val storage = StorageOptions.newBuilder
.setCredentials(
ServiceAccountCredentials.fromStream(
new FileInputStream(credentials)))
.build
.getService