我正在尝试编写一个“hello world”程序,以测试谷歌云存储。我的目标是编写最简单的程序,只需将硬编码文件上传到云存储即可。
我已经搜索了互联网寻找基本教程,但我找到的最接近的是这个用于在App Engine中使用云存储的指南。我已经编写了下面的程序:
当我运行该代码时,在调用
我尝试通过属性文件传递我的凭据:
但是这段代码不能编译,因为
我一直在谷歌搜索和阅读Cloud Storage API,但我仍然无法弄清楚应该如何传入凭据,而不需要经过复杂的设置过程。
所以,我的问题是:提供凭证给Google Cloud存储以上传文件的最简单方法是什么?
背景信息:我正在尝试比较和对比Google Cloud Storage和Amazon S3。我可以轻松地在S3中创建此类程序,但出于某种原因,我在Cloud Storage中遇到了障碍。非常感谢任何人能够提供的见解或基本教程。
我已经搜索了互联网寻找基本教程,但我找到的最接近的是这个用于在App Engine中使用云存储的指南。我已经编写了下面的程序:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import com.google.cloud.storage.Acl;
import com.google.cloud.storage.Acl.Role;
import com.google.cloud.storage.Acl.User;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
public class Main {
public static void main(String[] args) throws FileNotFoundException{
FileInputStream fileInputStream = new FileInputStream("my-file.txt");
Storage storage = StorageOptions.getDefaultInstance().getService();
BlobInfo blobInfo =
storage.create(
BlobInfo
.newBuilder("my-cloud-storage-bucket", "my-file.txt")
.setAcl(new ArrayList<>(Arrays.asList(Acl.of(User.ofAllUsers(), Role.READER))))
.build(),
fileInputStream);
String fileUrl = blobInfo.getMediaLink();
System.out.println("Uploaded URL: " + fileUrl);
}
}
当我运行该代码时,在调用
storage.create()
时,出现了401未经授权
的错误,这并不奇怪,因为我没有提供用户名或密码。我猜想这是因为示例正在App Engine中运行,以这种方式提供凭据。我尝试通过属性文件传递我的凭据:
Credential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId("accountId")
.setServiceAccountPrivateKeyFromP12File(
new File("PRIVATE_KEY_PATH"))
.setServiceAccountScopes(scopes).build();
Storage storage = new StorageOptions.DefaultStorageFactory().create(StorageOptions.newBuilder().setCredentials(credential).build());
但是这段代码不能编译,因为
setCredentials()
函数需要一个Credentials
实例,而不是Credential
实例。我一直在谷歌搜索和阅读Cloud Storage API,但我仍然无法弄清楚应该如何传入凭据,而不需要经过复杂的设置过程。
所以,我的问题是:提供凭证给Google Cloud存储以上传文件的最简单方法是什么?
背景信息:我正在尝试比较和对比Google Cloud Storage和Amazon S3。我可以轻松地在S3中创建此类程序,但出于某种原因,我在Cloud Storage中遇到了障碍。非常感谢任何人能够提供的见解或基本教程。