授权本地App Engine应用程序访问云存储

时间:2017-03-10 06:54:32

标签: java google-app-engine google-cloud-storage google-cloud-platform google-cloud-sdk

我正在本地开发和测试App Engine应用程序。我希望应用程序打印出Google云端存储项目中所有Bucket名称的列表。

部分代码:

Storage storage = StorageOptions.getDefaultInstance().getService();
Page<Bucket> buckets = storage.list(Storage.BucketListOption.pageSize(100));
Iterator<Bucket> bucketIterator = buckets.iterateAll();
while (bucketIterator.hasNext()) {
    Bucket bucket = bucketIterator.next();
    System.out.println("bucket name: " + bucket.getName());
}

要访问云端存储,我在这里使用google-cloud Java库:http://googlecloudplatform.github.io/google-cloud-java/0.9.4/index.html

运行上述代码段会导致401 Unauthorized。

如上面链接中“它是什么?”部分所述,如果应用程序在App Engine或Compute Engine中运行,则验证是自动的。

由于我在本地运行,我认为自动身份验证不起作用(如果我错了请纠正我。)

要进行身份验证,我按照 身份验证 部分中列出的其中一个选项,在终端中发出命令gcloud auth application-default login

尝试访问云存储时,我不再获得未经授权的401,但请注意以下事项:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/Users/example/.config/gcloud/active_config" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
  1. 如何解决此AccessControlException
  2. 这是在本地开发时对云存储进行身份验证的正确方法吗?如果没有,那是什么?

0 个答案:

没有答案