割り当てと上限

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

詳しくは、リージョン ID をご覧ください。

このドキュメントでは、App Engine の割り当てとシステムの上限について説明します。割り当てとは、使用できるカウント可能な共有リソースの量のことです。この量は、App Engine などの Google Cloud サービスによって定義されます。システムの上限は、変更できない固定値です。

Google Cloud は、割り当てを使用して公平性を確保し、リソースの使用量と可用性の急増を抑えます。割り当ては、Google Cloud プロジェクトで使用できる Google Cloud リソースの量を制限します。割り当ては、ハードウェア、ソフトウェア、ネットワーク コンポーネントなど、さまざまなリソースタイプに適用されます。たとえば、割り当てによって、サービスへの API 呼び出しの数、プロジェクトで同時に使用されるロードバランサの数、作成可能なプロジェクトの数を制限できます。割り当てを適用することで、サービスの過負荷を防ぎ、Google Cloud ユーザーのコミュニティを保護します。割り当ては、自組織で使用している Google Cloud リソースの管理にも役立ちます。

Cloud Quotas システムは次のことを行います。

  • Google Cloud のプロダクトとサービスの消費量をモニタリングする
  • これらのリソースの消費量を制限する
  • 割り当て値の変更をリクエストする手段を提供する

ほとんどの場合、割り当ての許容量を超えるリソースを消費しようとすると、システムによってリソースへのアクセスがブロックされ、実行しようとしているタスクは失敗します。

割り当ては通常、Google Cloud プロジェクト レベルで適用されます。あるプロジェクトでリソースを使用しても、別のプロジェクトで使用可能な割り当てに影響することはありません。Google Cloud プロジェクト内では、すべてのアプリケーションと IP アドレスで割り当てが共有されます。

App Engine リソースにはシステムの上限もあります。システムの上限は変更できません。

App Engine アプリケーションは、一定の割り当てに達するまでリソースを利用できます。アプリケーションの日々のリソース消費状況は、Google Cloud コンソールの [割り当ての詳細] ページで確認できます。

割り当てのタイプ

次の割り当てのタイプが App Engine アプリケーションに適用されます。

  • 無料の割り当て: アプリケーションには、無料で利用できるリソースの量が設定されます。無料の割り当ての詳細については、このページのリソース セクションをご覧ください。アプリケーションが無料の割り当てを超えると、そのリソースの追加使用に対して料金が請求されます。

    無料の割り当てが提供されるのは、App Engine スタンダード環境の場合のみです。

  • 1 日の割り当ては App Engine システムの完全性を維持し、1 つのアプリがリソースを過剰に消費して他のアプリの実行に支障をきたすことがないように設定されます。これらの上限を超えると、エラーが発生します。1 日の割り当ては、太平洋時間の午前 0 時にリセットされます。
  • 分単位の割り当ては、アプリケーションが短時間ですべてのリソースを消費しないように制限します。また、別のアプリケーションが特定のリソースを占有しないように制限します。アプリケーションが短時間でリソースを消費し、分単位の割り当てを超えると、Google Cloud コンソールの [割り当て] ページで、該当する割り当ての横に「制限中」と表示されます。1 分間の最大値に達しているリソースに対するリクエストは拒否されます。

プロジェクト オーナー課金管理者は、プロジェクトの課金を有効にできます。

割り当てを超過した場合に起こることと、割り当て超過状態の対処法については、リソースが不足した場合をご覧ください。

ヒント: 1 分あたりの最大割り当ては、トラフィック量が多いレベルに合わせて調整され、ニュースでサイトが取り上げられてトラフィックが急増しても対処できるレベルになっています。特定の割り当てがこの条件を満たしていないと思われる場合には、Issue Tracker でフィードバックをお送りください。フィードバックを送信することは、割り当て増加をリクエストすることにはなりませんが、一般的なユースケースにおいて低すぎる可能性がある割り当てを Google が把握するために役立ちます。

非常に高いトラフィック レベルが予想される場合や、なんらかの理由でアプリが特に高い割り当てを必要とする(重要なプロダクトのリリース、大規模な負荷テストなど)場合、サポート パッケージにサインアップすることをおすすめします。

リソースの補充

App Engine は、システムのリソース割り当てに対するアプリケーションの利用状況を記録しています。 App Engine は、毎日午前 0 時にすべてのリソース測定をリセットします。ただし、保存データの場合には、その時点でのデータストア ストレージの使用量を表します。

毎日の割り当ては、太平洋標準時の深夜 0 時に補充されます。分単位の割り当ては 60 秒ごとにリセットされます。

リソースがすべて消費された場合

アプリケーションが割り当てられたリソースをすべて消費すると、割り当てが補充されるまで、そのリソースは使用できなくなります。つまり、割り当てが補充されるまでアプリケーションが動作しない場合があります。

リクエストの開始に必要なリソースの場合、リソースがすべて消費されると、App Engine では、デフォルトで、リクエスト ハンドラを呼び出さずに、HTTP 403 または 503 エラーコードを返します。この動作は、インスタンス時間リソースに適用されます。

ヒント: アプリケーションが割り当てを超えたときに、カスタム エラーページを表示するようにアプリケーションを構成することもできます。詳しくは、Python(2.73)、JavaGo、PHP(5.57)、Node.js の構成ファイルのリファレンスをご覧ください。

他のリソースの場合、リソースがすべて消費されたときにアプリケーションがリソースを利用しようとすると、例外が発生します。この例外はアプリケーションで処理できます。たとえば、わかりやすいエラー メッセージをユーザーに表示できます。Python API の場合、この例外は apiproxy_errors.OverQuotaError です。Java の API の場合、この例外は com.google.apphosting.api.ApiProxy.OverQuotaException です。Go API の場合は、appengine.IsOverQuota 関数で、エラーが割り当て不足による API 呼び出しの失敗を示しているかどうかを報告します。

次の例は OverQuotaError を取得する方法を表しています。メール関連の割り当てを超過した場合に、SendMessage() メソッドでこの例外が発生します。

try:
    mail.SendMessage(to='test@example.com', from='admin@example.com',
            subject='Test Email', body='Testing')
except apiproxy_errors.OverQuotaError, message:
    # Log the error. logging.error(message)
    # Display an informative message to the user.
    self.response.out.write('The email could not be sent. '
            'Please try again later.')

アプリがデフォルトの上限を超えている場合、スループット上限の引き上げをリクエストするには、Cloud カスタマーケアにお問い合わせください。より多くのメール割り当てが必要な場合は、SendGrid を使用してメールを送信します。

リソース

アプリケーションでは、割り当てに従って次のリソースを使用できます。請求対象の上限が適用されるリソースには、「(請求対象)」と明記されています。リソースの量は 24 時間の割り当て量を表します。

追加リソースの料金については、料金ページをご覧ください。

サービス、バージョン、インスタンス

デプロイできるサービスやバージョンの最大数は、アプリが有料か無料かに応じて異なります。フレキシブル環境とスタンダード環境の両方で、サービスとバージョンは同じ上限を共有します。たとえば、同じアプリに標準バージョンとフレキシブル バージョンがある場合、それらのバージョンは同じ上限に向かってカウントされます。

上限 無料アプリ 有料アプリ
アプリごとの最大サービス数 5 210
アプリごとの最大バージョン数 15 210

基本スケーリングまたは手動スケーリングを適用する各サービスのインスタンス数には以下の上限があります。

手動 / 基本スケーリングを適用するバージョンごとの最大インスタンス数
無料アプリ 有料アプリ(米国) 有料アプリ(EU)
20 25(us-central の場合は 200) 25

また、プロジェクトとリージョンごとに実行できる標準バージョン全体にわたるインスタンス数にも上限があります。適用される上限と、そのサービスのインスタンスが割り当て使用量に与える影響は、サービスのインスタンス クラスによって決まります。たとえば、1 つの F4 インスタンスは、4 つの正規化されたフロントエンド インスタンスとしてカウントされます。

インスタンスのカウントによる割り当て使用量は、IAM の割り当てページで確認できます。

説明 上限 上限引き上げ可能かどうか
1 分間に測定されたプロジェクトとリージョンごとのフロントエンド インスタンスの最大数 選択したリージョンによって異なります。この上限は、大容量リージョンでは高く、最近開いたリージョンでは低くなる可能性があります。
1 分間に測定されたプロジェクトとリージョンあたりのバックエンド インスタンスの最大数 選択したリージョンによって異なります。この上限は、大容量リージョンでは高く、最近開いたリージョンでは低くなる可能性があります。

注: 上限の引き上げをリクエストするには、こちらのページに記載されている手順を行ってください。

また、アプリケーションの URL の文字数にも上限があります。
説明 上限
URL VERSION-dot-SERVICE-dot-PROJECT_ID のプロジェクト URL の最大文字数 63

デフォルトの Cloud Storage バケット

以下に示すように、デフォルトの Cloud Storage バケットには、毎日の使用量に対する無料の割り当て枠があります。デフォルトで無料のこのバケットは、Google Cloud コンソールでプロジェクトの App Engine の設定ページから作成できます。

以下の割り当ては、デフォルトのバケットを使用する場合に適用されます。 割り当てについては、Cloud Storage マルチリージョン バケットの料金をご覧ください。

リソース デフォルトの上限
デフォルトの Cloud Storage バケットに保存されるデータ 最初の 5 GB は無料。上限なし。
デフォルトの Cloud Storage バケットでのクラス A オペレーション 最初の 20,000 回/日は無料。上限なし。
デフォルトの Cloud Storage バケットでのクラス B オペレーション 最初の 50,000 回/日は無料。上限なし。
デフォルトの Cloud Storage バケットからのネットワーク送信(下り、外向き) 最初の 1 GB は無料。上限なし。

Blobstore

以下の割り当ては、Blobstore を使用する場合に適用されます。

Blobstore の保存データ
Blobstore に保存されているデータの合計量。有料と無料の両方に適用されます。
リソース デフォルトの上限
Blobstore の保存データ 最初の 5 GB は無料。上限なし。

コードと静的データの保存

静的データの上限
Go 以外の言語では、1 つの静的データファイルのサイズを 32 MB 以下にする必要があります。 Go での上限は 64 MB です。
ストレージの合計
ストレージの割り当ては、アプリのすべてのバージョンのコードと静的データを合計した量に対して適用されます。保存しているコードと静的ファイルの合計サイズはメイン ダッシュボードの表に表示されます。保存しているコードのサイズは [バージョン] 画面、静的データのサイズは [バックエンド] 画面にそれぞれ表示されます。1 GB を超えるコードと静的データを保存すると、毎月 1 GB あたり $ 0.026 が課金されます。

Datastore モードの Firestore(Datastore)

保存データ(請求対象)の割り当ては、データストアおよび Blobstore 内のアプリケーションのために保存されたすべてのデータが対象になります。Google Cloud コンソールで [割り当ての詳細] 画面の [データストア] セクションに表示される他の割り当ては、Datastore サービスの割り当てを表します。

保存データ(課金対象)

データストア エンティティに保存されているデータと、それに対応するインデックスと Blobstore の合計量。

データストアに保存されているデータの場合、大きなオーバーヘッドが発生する可能性があります。オーバーヘッドの量は、関連するプロパティの数や種類によって異なります。オーバーヘッドには組み込みインデックスとカスタム インデックスで使用される容量も含まれます。データストアに保存される個々のエンティティには、以下のメタデータが必要となります。

  • エンティティ キー。種類、ID またはキー名、エンティティの祖先のキーを含みます。
  • 各プロパティの名前と値。データストアにはスキーマが存在しないため、どのエンティティに対しても各プロパティの名前と値を一緒に保存しておく必要があります。
  • このエンティティを参照するすべての組み込みインデックス行とカスタム インデックス行。個々の行には、エンティティの種類、任意の数のプロパティ値(インデックスの定義によって異なる)、エンティティ キーが含まれます。
インデックス数
アプリケーションに存在するデータストア インデックスの数。アプリケーションの構成に表示されていなくても、削除されていない以前のインデックスも含まれます。制限について詳しくは、Datastore の制限のページをご覧ください。
書き込みオペレーション
データストア書き込みオペレーションの合計数。
読み取りオペレーション
データストア読み取りオペレーションの合計数。
小規模なオペレーション
データストアで実行された小規模オペレーションの合計数。小規模オペレーションには、データストア ID を割り当てるための呼び出しや、キーのみのクエリなどが含まれます。
リソース デフォルトの上限
保存データ(課金対象 1 GiB 無料。上限なし。
無料の割り当てを超えると、利用料金が適用されます。
インデックス数 200
エンティティの読み込み数 50,000 件まで無料、上限なし。
無料の割り当てを超えると、利用料金が適用されます。
エンティティの書き込み数 20,000 件まで無料、上限なし。
無料の割り当てを超えると、利用料金が適用されます。
エンティティの削除数 20,000 件まで無料、上限なし。
無料の割り当てを超えると、利用料金が適用されます。
小規模なオペレーション 無制限

注: データストア管理者データストア閲覧者によるデータストア オペレーションはアプリケーションの割り当てに対してカウントされます。

デプロイ

App Engine アプリケーションごとに 1 日あたり 10,000 回までデプロイできます。

デプロイ時に、Cloud Build によってコンテナ イメージがビルドされ、Artifact Registry に保存されます。イメージに使用される保存容量の合計が無料枠を超えると料金が発生します。

ファイル

次の割り当てが、アプリのデプロイ ファイルの合計数に適用されます。

ファイル 最大
アプリあたりのデフォルト ファイル数 10,000 ファイル
上限の引き上げをリクエストされる場合は、サポートにお問い合わせください。

インスタンス時間

インスタンスの使用時間には、インスタンスの稼働時間に応じて所定の料金が請求されます。

「F」と「B」のインスタンス クラスには、個別の無料の割り当てがあります(「フロントエンド」と「バックエンド」インスタンス クラスとも呼ばれます)。App Engine サービスを使用する場合、適用される割り当てはサービスのインスタンス クラスによって決まります。

リソース 無料の割り当て
F1 インスタンス 28 時間の無料インスタンス時間/日
B1 インスタンス 9 時間の無料インスタンス時間/日

インスタンス時間の累積はインスタンスが起動した時点で開始されます。終了時点は、インスタンスに指定したスケーリングのタイプに応じて以下のように異なります。

  • 基本または自動スケーリング: 課金はインスタンスが最後のリクエストを処理してから 15 分後に終了します。
  • 手動スケーリング: 課金はインスタンスがシャットダウンしてから 15 分後に終了します。

App Engine によって作成されるアイドル状態のインスタンスの数が、Google Cloud コンソールの [パフォーマンス設定] タブで指定した最大数を超えると、超過分のインスタンスはインスタンス時間に累積されません。

ログ

ログデータが取得されると、Logs API が課金されます。

ログの取得上限は、アプリケーションのリクエストログとアプリケーション ログのデータが対象となります。App Engine アプリのロギングは、Google Cloud Observability によって行われます。料金と上限の詳細については、Google Cloud Observability の料金をご覧ください。

メール

Mail API の使用量は、IAM の割り当てページで確認できます。

注: IAM 割り当てページでアプリケーションの割り当て使用量を表示するには、プロジェクトで App Engine レポート サービスが有効になっていることを確認します。サービスを有効にできない場合は、権限と constraints/serviceuser.services 組織ポリシーの制約を確認してください。

注: 上限の引き上げをリクエストするには、こちらのページに記載されている手順を行ってください。

App Engine ではメッセージ単位でメールの料金を請求します。1 人に送信した 1 件のメールを 1 通のメッセージとします。たとえば、同じメールを 10 人に送信した場合、10 通のメッセージとして計算します。

管理者以外に送信されたメッセージ
アプリケーションからアプリケーション管理者以外に送信されたメッセージの総数。
管理者に送信されたメッセージ
アプリケーションから管理者に送信したメッセージの総数。各管理者メールのサイズの上限は 16 KB です。この中にはヘッダー、添付ファイル、本文が含まれます。
メッセージの本文として送信されたデータ
メールの本文として送信したデータの量。
送信済み添付ファイル
メールと一緒に送信された添付ファイルの総数。
添付ファイルとして送信したデータ
メールの添付ファイルとして送信したデータの量。
リソース 1 日の上限(デフォルト) 最大レート
メール受信者 100 通 8 通/分
管理者メール 5,000 通 24 通/分
メッセージの本文として送信されたデータ 60 MB 340 KB/分
送信済み添付ファイル 2,000 件 8 件/分
添付ファイルとして送信したデータ 100 MB 10 MB/分

Mail API に追加できる承認送信者の上限は 50 件です。

毎日のメール割り当てを超えるメールの送信

アプリによるメール送信のための割り当てを引き上げる必要がある場合、サードパーティのメール プロバイダ(SendGridMailjetMailgun など)を使用できます。

リクエスト

送信帯域幅(請求対象)

リクエストに応答してアプリケーションが送信したデータの量。

次の操作が含まれます。

  • アプリケーション サーバー、静的ファイル サーバー、Blobstore がリクエストに応答して送信したデータ。保護されたリクエストも保護されていないリクエストも含まれます。
  • メールで送信したデータ。
  • URL 取得サービスが送信した HTTP 送信リクエストに含まれるデータ。
受信帯域幅

アプリケーションがリクエストから受信したデータの量。HTTP 受信リクエストのサイズは 32 MB 以下です。

次の操作が含まれます。

  • 保護されたリクエストまたは保護されていないリクエストからアプリケーションが受信したデータ
  • Blobstore へのアップロード
  • URL 取得サービスが HTTP リクエストに応答して受信したデータ
保護された送信帯域幅
安全な接続経由でアプリケーションがリクエストに応答して送信したデータの量。
保護された受信帯域幅
安全な接続経由でアプリケーションがリクエストから受信したデータの量。

以下の表に、Search API の無料割り当てを示します。検索呼び出しの各タイプの詳細については、JavaPythonGo のドキュメントをご覧ください。

料金表に従って Search API リソースの料金が請求されます。

リソースまたは API 呼び出し 無料の割り当て
保存容量の合計(ドキュメントとインデックス) 0.25 GB
クエリ 1,000 クエリ/日
インデックスへのドキュメントの追加 0.01 GB/日

アプリケーション コンソールでは、割り当てに API リクエストの実際の数が表示されます。 1 回の呼び出しで複数のドキュメントのインデックスを作成した場合、ドキュメントの数だけ呼び出し回数が増えます。

サービスの信頼性を維持するため、Search API には次の制限が設定されています。

  • アプリまたはインデックス内での実行できるクエリの回数は 1 分あたり合計で 100 分まで。
  • 1 分間に追加または削除できるドキュメントは 15,000 件まで。
また、インデックスごとにストレージの上限が 10 GB に設定されます。アプリがこの上限を超えると、割り当て不足を通知するエラーが返されます。 Google Cloud コンソールの [App Engine Search] ページからリクエストを送信することで、この上限を最大 200 GB に引き上げることができます。

注: これらの上限は分単位で適用されますが、Google Cloud コンソールには各上限についての日単位の合計数が表示されます。シルバー、ゴールド、プラチナ サポートをご契約の方は、サポート担当者に連絡して、スループットの上限を引き上げることができます。

タスクキュー

タスクが実行されると、関連するリクエストがアプリケーションのリクエスト割り当てにカウントされます。

これらの上限はすべてのタスクキューに適用されます。

リソース 1 日の上限 最大レート
タスクキュー管理の呼び出し回数(Google Cloud コンソールを使用) 10,000 なし
リソース デフォルトの上限
キューの最大数(push と pull の両方のキューを含むが、デフォルトのキューは対象外) 100 件。

注: タスクを実行または削除すると、タスクが使用したストレージが解放されます。ストレージの割り当ては一定の間隔で更新されるため、回収された容量がすぐに反映されない場合があります。詳しくは、PythonJavaGoPHP のドキュメントをご覧ください。

以下の上限は、タスクキューのタイプに応じて適用されます。

push キューの上限
タスクの最大サイズ100 KB
キューの実行レート1 件のキューで 1 秒あたり 500 回のタスク呼び出し
タスクの最大延期期間 / ETA現在の日時から 30 日
バッチに追加可能なタスクの最大数100 件
トランザクションに追加可能なタスクの最大数5 件
タスクキューのデフォルトの最大数100 件。上限の引き上げをリクエストする場合は、サポートにお問い合わせください。

cron

以下の割り当ては、cron ジョブに適用されます。

cron ジョブ
cron ジョブの数。
リソース デフォルトの上限
cron ジョブ 250 件

URL 取得

UrlFetch API の呼び出し回数
アプリケーションが URL 取得サービスにアクセスして HTTP または HTTPS リクエストを実行した回数。
UrlFetch の送信データ
リクエストで URL 取得サービスに送信されたデータの量。
UrlFetch の受信データ
レスポンスで URL 取得サービスから受信したデータの量。受信帯域幅の割り当てが適用されます。
リソース 1 日の上限 最大レート
UrlFetch API の呼び出し回数 860,000,000 回 660,000 回/分
UrlFetch の送信データ 4.5 TB 3,600 MB/分
UrlFetch の受信データ 4.5 TB 3,600 MB/分