私はApp Engineアプリケーションを持っています。 Cloud Storageを使用して、ユーザーがアップロードしたファイルを保存したいGoogle Appengine Cloud Storage
すべてのアプリケーションエンジンアプリケーションに付属する単一のフリーバケットにアクセスするための簡単な認証方法を知りたい。
アプリケーションだけでクラウドストレージと通信し、クラウドストレージとのやりとりを行う必要はありません。すべてのファイルは同じフォルダに置くことができ、App EngineのJVMだけがアクセスできる必要があります。
Oauth2などを経由せずに、簡単な認証方法がありますか?可能であれば、シンプルなサーバー間の種類のアクセス。
編集:これはこれと同じですか?
gcloud beta auth application-default login
編集2:のgcloudのための上記のデフォルトの認証設定をしようとしました。それと同じ例外がスローされます。
com.google.cloud.storage.StorageException: Invalid Credentials
私が使用しています
テストコード:
private static Storage storage = null;
static {
storage = StorageOptions.getDefaultInstance().getService();
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
PrintWriter out = resp.getWriter();
out.println("Hello, world");
testCloudStorage();
}
private void testCloudStorage() throws IOException{
ByteArrayInputStream baIs = new ByteArrayInputStream("TEST FILE CONTENT".getBytes());
uploadFile("test-content.txt", baIs, "xyzabc.appspot.com");
}
/**
* Uploads a file to Google Cloud Storage to the bucket specified in the BUCKET_NAME
* environment variable, appending a timestamp to end of the uploaded filename.
*/
public String uploadFile(String fileName, InputStream inputStream, final String bucketName) throws IOException {
DateTimeFormatter dtf = DateTimeFormat.forPattern("-YYYY-MM-dd-HHmmssSSS");
DateTime dt = DateTime.now(DateTimeZone.UTC);
String dtString = dt.toString(dtf);
final String extendedFileName = fileName + dtString;
// the inputstream is closed by default, so we don't need to close it here
BlobInfo blobInfo =
storage.create(
BlobInfo
.newBuilder(bucketName, extendedFileName)
// Modify access list to allow all users with link to read file
.setAcl(new ArrayList<>(Arrays.asList(Acl.of(Acl.User.ofAllUsers(), Role.READER))))
.build(),
inputStream);
// return the public download link
return blobInfo.getMediaLink();
}
編集3:これらは私が続くの手順は以下のとおりです。
- 私は基本的な作業JSPのサンプルアプリケーションを持っている - の両方devserverデプロイされたバージョンは正常に動作しています
- データストアが動作しています - 挿入/更新/削除
- は私がのgcloud SDKをインストールし、initをやって
公式ドキュメントに基づいて試したことをGoogleに見せてください。 –
@ZigMandel私はすでにアプリケーションエンジンで動作しているJSPアプリケーションを持っています。私は、クラウドストレージをテストするためのテストサーブレットを作成しました。私はちょうどテストファイルに数バイトを書きたいと思う。今質問にサーブレットコードを追加しました。 – Teddy