App Engine アプリケーションをローカルで開発およびテストしています。プロジェクト Google Cloud Storage 内のすべてのバケット名のリストをアプリケーションで出力したいと考えています。
いくつかのコード:
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());
}
Cloud Storage にアクセスするために、google-cloud
ここにある Java 用のライブラリを使用しています: http://googlecloudplatform.github.io/google-cloud-java/0.9.4/index.html
上記のスニペットを実行すると、401 Unauthorized が発生します。
上記のリンクの「 What is it? 」セクションで指定されているように、アプリケーションが App Engine または Compute Engine 内で実行されている場合、認証は自動的に行われます。
私はローカルで実行しているので、自動認証は機能しないと思います (間違っていたら訂正してください)。
認証するには、「認証」セクションにリストされているオプションの 1 つに従いgcloud auth application-default login
、ターミナルでコマンドを発行しました。
Cloud Storage にアクセスしようとしたときに 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)
- どうすればこれを解決でき
AccessControlException
ますか? - これは、ローカルで開発中に Cloud Storage に対して認証する正しい方法ですか? そうでない場合、何ですか?