Java 8 アプリで実行時にファイルを読み書きする、またはムービーや画像などのファイルまたはその他の静的コンテンツを提供する必要がある場合は、Cloud Storage バケットの使用をおすすめします。
アプリを作成すると、App Engine がデフォルトのバケットを作成します。このバケットでは、ストレージの最初の 5 GB が無料で提供され、Cloud Storage I/O オペレーションの無料の割り当ても用意されています。別の Cloud Storage バケットを作成することもできますが、無料の 5 GB ストレージが用意されているのは、デフォルトのバケットのみです。
App Engine での Cloud Storage の使用
App Engine アプリから Cloud Storage バケットを使用するには:
App Engine プロジェクトの既存のバケットの名前を確認します。Cloud Storage からデータをアップロードまたはダウンロードするときに、この名前を指定します。
Cloud Storage バケットの名前をアプリにハード コーディングするのではなく、アプリの環境変数に保存することをおすすめします。
ライブラリをアプリの依存関係ファイルに追加して、アプリ内で Cloud Storage を依存関係として宣言します。
Google Cloud クライアント ライブラリを使用して、バケットからデータのアップロードまたはダウンロードを行います。
デフォルト バケットの使用
アプリを作成すると、App Engine により、最初の 5 GB のストレージを無料で提供するデフォルトのバケットが作成されます。また、デフォルトのバケットには、Cloud Storage I/O オペレーション用の無料の割り当ても含まれています。詳しくは、料金、割り当て、上限をご覧ください。ストレージが 5 GB の上限を超えると課金が開始します。
デフォルト バケットの名前は、次の形式で指定されます。
project-id.appspot.com
App Engine は、アプリケーションの新しいバージョンをデプロイする際に、一時ストレージに使用するバケットも作成します。staging.project-id.appspot.com
という名前のこのバケットは、App Engine でのみ使用できます。アプリケーションはこのバケットとはやり取りできません。
バケットとオブジェクトの権限の設定
アプリに関連付けられているデフォルトのサービス アカウントには、プロジェクトのバケットの読み取りと書き込みに必要なすべての権限が割り当てられています。
これらの権限を管理するために、App Engine アプリのそれぞれがデフォルトのサービス アカウントを使用します。デフォルトのサービス アカウントにより、アプリには同じプロジェクト内にある Cloud Storage バケットに対して読み取りと書き込みを行うための完全アクセス権が与えられます。デフォルトのサービス アカウントの権限を変更することはできますが、必要な権限を IAM ロールに割り当てなければ、アプリがデータベースにアクセスできなくなる可能性があります。
他のユーザー、アプリ、プロジェクトがバケットとその内容にアクセスできるようにするには、バケットの権限の設定とオブジェクトの権限の設定をご覧ください。
ローカル開発用サーバーでの Cloud Storage の使用
App Engine のローカル開発用サーバーは、Cloud Storage をエミュレートしないため、インターネットを介して、すべての Cloud Storage リクエストを実際の Cloud Storage バケットに送信する必要があります。
料金、割り当て、上限
Cloud Storage への Cloud Storage クライアント ライブラリの呼び出しに関連する帯域幅課金はありません。ただし、オペレーション料金は適用されます。また、ライブラリは URL 取得サービスを使用して Cloud Storage とやり取りするため、呼び出しは URL の取得割り当てに対してカウントされます。
なお、Cloud Storage は従量課金サービスであり、Cloud Storage の価格表に従って課金されることに注意してください。