在下面的代码中,我接受了一个输入存储桶和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
中看不到可以分配凭据的任何地方。是否需要为目标存储桶分配此凭据?如果是这样,有没有一种标准的方法来设置它们?
发布于 2017-08-25 17:54:15
使用下面的代码片段。Credentials是一个凭据JSON字符串。
val storage = StorageOptions.newBuilder
.setCredentials(
ServiceAccountCredentials.fromStream(
new FileInputStream(credentials)))
.build
.getService
https://stackoverflow.com/questions/45850417
复制相似问题