Google Appengine Cloud Storage

テディ

AppEngineアプリケーションがあります。Cloud Storageを使用して、ユーザーがアップロードしたファイルを保存したいと思います。

すべてのアプリエンジンアプリケーションに付属している単一の無料バケットにアクセスするための簡単な認証を行う方法を知りたいです。

アプリケーション自体だけがクラウドストレージと通信するようにしたいので、ユーザーはクラウドストレージと対話する必要はありません。すべてのファイルは同じフォルダーに配置でき、App EngineJVMのみがアクセスできる必要があります。

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:これらは私が従ったステップです:

  1. 基本的なJSPサンプルアプリケーションが動作しています-devserverとデプロイされたバージョンの両方が正常に動作しています
  2. データストアが機能しています-挿入/更新/削除
  3. このチュートリアルに従って、クラウドストレージのサンプルコードを追加しました
  4. このチュートリアルに従って GCloud SDKをインストールし、initを実行して、デフォルトの認証を設定しました
アーロン

Appengineプロジェクトは、それぞれのバケットですでに認証されています。追加の認証は必要ありません-https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/setting-up-cloud-storageに従ってバケットが作成されたら

その後、これらのドキュメントまたはblobstorehttps //cloud.google.com/appengine/docs/java/blobstore/に従ってバケットを使用できます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

AppengineのGolangでGoogle Cloud Storageを使用する

Go AppEngineでGoogle Cloud Storage APIを使用する

PHP Google Cloud Storage

Google Cloud Storage Client

Google Cloud Storage

Google Cloud Storage ::制限

Google Cloud Appengine FlexWebSocketのサポート

Google Cloud AppEngine1.9.54リリース

Load big file from Google Cloud Storage into Google Cloud Functions?

在 Google Cloud Build 中使用 Google Cloud Storage

Google Cloud Storage returning wrong identity

What is the Google Cloud Storage public read uri?

Google Cloud Storage認証の使用

Generating getServingUrl() in google cloud storage with NodeJs sdk

Google Cloud Storage - Knowing who uploaded

Snowflake Connection to Google Cloud Storage in Australia

Is it possible to upload files directly to the Google Cloud Storage?

How to initialize Google Cloud Storage with credentials

Moving Google Cloud Storage bucket to another project

gsutil zip directory on google cloud storage

Concat Avro files in Google Cloud Storage

Delete a file inside a folder in Google cloud storage

Google Cloud Storage Notification with Pub/Sub and docs

Accessing files from Google cloud storage in RStudio

Google Cloud Storage WebUIの制限

Composerを介してgoogle \ appengine \ api \ cloud_storage \ CloudStorageToolsをインストールするにはどうすればよいですか?

AppEngine for Google Cloud Storageを使用せずにサーブURLを取得するにはどうすればよいですか?

Google Appengine appengine.version

Google Takeout from G Suite Download from Google Cloud Storage

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    Modbus Python Schneider PM5300

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    どのように関係なく、それがどのように「悪い」、すべてのSSL証明書でのHttpClientを使用しないように

  6. 6

    インデックス作成時のドキュメントの順序は、Elasticsearchの検索パフォーマンスを向上させますか?

  7. 7

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    パンダは異なる名前の列に追加します

  10. 10

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  11. 11

    Elasticsearch - あいまい検索は、提案を与えていません

  12. 12

    変数値を含むElasticSearch検索結果

  13. 13

    グラフ(.PNG)ファイルをエクスポートするZabbix

  14. 14

    Elasticsearchの場合、間隔を空けた単語を使用したワイルドカード検索

  15. 15

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  18. 18

    Elasticsearchでサーバー操作を最適化:低いディスク透かしに対処する

  19. 19

    テキストフィールドの値に基づいて UIslider を移動します

  20. 20

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  21. 21

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

ホットタグ

アーカイブ