App Engine アプリケーションは、一定の割り当てに達するまでリソースを利用することができます。
プロジェクトに割り当てた App Engine リソースの毎日の使用状況と割り当ての消費状況は、Google Cloud Platform Console の [割り当ての詳細] ページで確認できます。
課金制限と安全上の制限
App Engine には次の 3 種類の割り当てまたは制限があります。
- 無料割り当て: 各アプリケーションには、無料で利用できるリソースの量が設定されます。有料のアプリケーションは、無料割り当てを超えて、アプリケーションの課金制限または安全上の制限(どちらか少ない方)に達するまでリソースを使用できます。
- 費用制限: プロジェクト オーナーと課金管理者は、Google Cloud Platform Console の App Engine の設定で費用制限を設定し、アプリケーションの費用を管理できます。アプリケーションが無効になっている間に、費用制限を少し超過することがあります。
- 安全上の制限: 安全上の制限は、App Engine システムの整合性を維持するために Google が設定します。これらの割り当てにより、1 つのアプリがリソースを過剰に消費し、他のアプリの実行に支障をきたすことはありません。アプリが有料かどうかに関わらず、これらの制限を超えると、エラーが発生します。
費用制限
プロジェクト オーナーと課金管理者を兼ねている場合は、プロジェクトの課金を有効にできます��これにより、無料割り当て枠を超えるリソースの使用が可能になります。アプリケーションが無料割り当て枠を超えるリソースを使用すると、超過分の料金が課金されます。
アプリケーションの課金を有効にした後で費用制限を設定すると、1 日の料金の上限を設定できます。デフォルトでは、費用制限は設定されていません。アプリケーションの費用を細かく管理できるように、費用制限を指定するようにしてください。アプリケーションが無効になっている間に、費用制限を少し超過することがあります。
アプリケーションの課金を有効にすると、アプリケーションの安全上の上限が上がります。詳細については、リソースをご覧ください。
安全上の制限
安全上の制限には、毎日の割り当てと分単位の割り当てがあります。
- 毎日の割り当ては、太平洋時間の午前 0 時にリセットされます。有料のアプリケーションは、費用制限または安全上の制限(どちらか少ない方)に達するまで、この無料割り当て枠を超えてリソースを使用できます。
- 分単位の割り当ては、アプリケーションが短時間ですべてのリソースを消費しないように制限します。また、別のアプリケーションが特定のリソースを占有しないように制限します。アプリケーションが短時間でリソースを消費し、分単位の割り当てを超えると、GCP Console の [割り当ての詳細] 画面で、該当する割り当ての横に「制限中」と表示されます。1 分間の最大値に達しているリソースに対するリクエストは拒否されます。
割り当てを超過した場合に起きる状況とその対処方法については、リソースがすべて消費された場合をご覧ください。
ヒント: 有料のアプリの場合、1 分間の最大割り当ては、トラフィック量が多いレベルに合わせて調整されており、ニュースでサイトが取り上げられてトラフィックが急増しても対処できるレベルになっています。特定の割り当てがこの条件を満たしていないと思われる場合には、問題管理ツールで機能リクエストを作成してお送りください。これにより、特定のアプリの割り当てが実際に増えるわけではありませんが、Google では一般的な事例で低すぎる可能性がある割り当てを特定するために機能リクエストを利用しています。
非常に高いトラフィック レベルが予想される場合や、なんらかの理由でアプリケーションに特に高い割り当てが必要な場合(重要な商品の発売、大規模なロードテストなど)、シルバー、ゴールド、プラチナ サポートのご契約をおすすめします。
リソースの補充
App Engine は、システムのリソース割り当てに対するアプリケーションの利用状況を記録しています。App Engine は、毎日午前 0 時にすべてのリソース測定をリセットします。ただし、保存データの場合には、その時点でのデータストア ストレージの使用量を表します。無料アプリケーションがリソースの割り当ての上限に達した場合、割り当てが補充されるまでそのリソースを使用することはできません。有料のアプリは、費用制限に達するまで、無料割り当て枠を超えてリソースを使用できます。
毎日の割り当ては毎日、太平洋時間の午前 0 時にリセットされます。分単位の割り当ては 60 秒ごとにリセットされます。
リソースがすべて消費された場合
アプリケーションが割り当てられたリソースをすべて消費すると、割り当てが補充されるまで、そのリソースは使用できなくなります。つまり、割り当てが補充されるまでアプリケーションが動作しない場合があります。
リクエストの開始に必要なリソースの場合、リソースがすべて消費されると、App Engine はリクエスト ハンドラを呼び出さずに、HTTP 403 または 503 エラーコードを返します。このエラーは、次のリソースがすべて消費された場合に発生します。
- 帯域幅(受信と送信)
- インスタンス時間
ヒント: アプリケーションが割り当てを超えたときに、カスタム エラーページを表示するようにアプリケーションを設定することもできます。詳しくは、Python、Java、Go の設定ファイルのリファレンスをご覧ください。
他のリソースの場合、リソースがすべて消費されたときにアプリケーションがリソースを利用しようとすると、例外が発生します。この例外はアプリケーションで処理できます。たとえば、わかりやすいエラー メッセージをユーザーに表示できます。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.')
アプリがデフォルトの制限を超えている場合: メール割り当てを増加するには、SendGrid でメールを送信できます。他の割り当てを増加させる場合、シルバー、ゴールド、プラチナ サポート パッケージの契約があれば、サポート担当者に連絡してスループット上限の変更を依頼できます。それ以外の場合には、機能リクエストを送信できます。
App Engine フレキシブル環境の割り当て
アプリケーションを App Engine フレキシブル環境にデプロイする場合、一部の Google Cloud Platform リソースが消費されます。これらのリソースを変更することはできず、割り当てに対してカウントされます。
リソース
アプリケーションでは、割り当てに従って次のリソースを使用できます。課金可能な制限が適用されるリソースには「課金対象」の印が付いています。リソースの量は 24 時間の割り当て量を表します。
追加リソースの料金については、料金ページをご覧ください。
デフォルトの Google Cloud Storage バケット
アプリケーションでは、デフォルトの Default Google Cloud Storage バケットを使用できます。このバケットには無料の割り当て枠が設定されています。アプリで課金を有効にする必要はありません。この無料のデフォルト バケットは、Google Cloud Platform Console の [App Engine の設定] ページでプロジェクトに作成します。
以下の割り当ては、デフォルトのバケットを使用する場合に適用されます。これらの割り当ての詳細については、Google Cloud Storage マルチリージョン バケットの料金をご覧ください。
- デフォルトの Google Cloud Storage バケットに保存されるデータ、I/O、下り
-
デフォルトの Google Cloud Storage バケットに無料で保存できるデータの合計量は制限されています。
Cloud Storage のオペレーションとネットワーク下りの新しい料金(2016 年 12 月より) 2016 年 12 月からデフォルトの Google Cloud Storage バケットのオペレーションへの課金が始まります。毎日の使用量に対しては次のように無料割り当て枠が設定されています。詳細な定義と料金情報については、Google Cloud Storage の料金をご覧ください。デフォルト バケットからのネットワーク下りも毎日の送信帯域幅割り当て(1GB)の対象となります。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 |
|---|---|---|
| デフォルトの Google Cloud Storage バケットに保存されるデータ | 5 GB | 最初の 5 GB は無料。上限なし。 |
| デフォルトの Google Cloud Storage バケットでのクラス A オペレーション | 20,000 回/日 | 最初の 20,000 回/日は無料。上限なし。 |
| デフォルトの Google Cloud Storage バケットでのクラス B オペレーション | 50,000 回/日 | 最初の 50,000 回/日は無料。上限なし。 |
| デフォルトの Google Cloud Storage バケットからのネットワーク送信 | 送信帯域幅の割り当てまで | 送信帯域幅の割り当てまでは無料。上限なし。 |
Blobstore
以下の割り当ては、Blobstore を使用する場合に適用されます。
- Blobstore の保存データ
- Blobstore に保存されているデータの合計量。有料と無料の両方に適用されます。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 |
|---|---|---|
| Blobstore の保存データ | 5 GB | 最初の 5 GB は無料。上限なし。 |
コードと静的データのストレージ
- 静的データ
- 1 つの静的データファイルのサイズは 32 MB 以下にする必要があります。
- ストレージの合計
- ストレージの割り当ては、アプリのすべてのバージョンのコードと静的データを合計した量に適用されます。保存されているコードと静的データの合計サイズはメイン ダッシュボードの表に表示されます。個々のサイズは、[バージョン] 画面と [バックエンド] 画面にそれぞれ表示されます。無料アプリでアップロードできるのは、コードと静的データを合わせて 1 GB までです。有料アプリの場合、1 GB を超えるアップロードも可能ですが、1 GB を超えるコードと静的データを保存すると、毎月 1 GB あたり $ 0.026 が課金されます。
| リソース | 料金 |
|---|---|
| コードと静的データの保存 - 最初の 1 GB | 無料 |
| コードと静的データの保存 - 1 GB を超えた場合 |
データストア
保存データ(課金対象)の割り当ては、データストア、Blobstore、タスクキューのアプリケーションで保存しているすべてのデータが対象になります。Google Cloud Platform Console で [割り当ての詳細] 画面の [データストア] に表示される他の割り当ては、データストア サービスの割り当てを表します。
- 保存データ(課金対象)
-
データストア エンティティに保存されているデータと、それに対応するインデックス、タスクキュー、Blobstore の合計数。
データストアに保存されているデータの場合、大きなオーバーヘッドが発生する可能性があります。オーバーヘッドの量は、関連するプロパティの数や種類によって異なります。オーバーヘッドには組み��みインデックスとカスタム インデックスで使用される容量も含まれます。データストアに保存される個々のエンティティには、以下のメタデータが必要となります。
- エンティティ キー。種類、ID またはキー名、エンティティの祖先のキーも含まれます。
- 各プロパティの名前と値。データストアにはスキーマが存在しないため、どのエンティティに対しても各プロパティの名前と値を一緒に保存しておく必要があります。
- このエンティティを参照するすべての組み込みインデックス行とカスタム インデックス行。個々の行には、エンティティの種類、任意の数のプロパティ値(インデックスの定義によって異なる)、エンティティ キーが含まれます。
Bigtable レベルでのエンティティとインデックスの保存に必要なメタデータの詳細については、エンティティとインデックスの保存方法をご覧ください。
- インデックス数
- アプリケーションに存在するデータストア インデックスの数。アプリケーションの設定に表示されていなくても、削除されていない以前のインデックスも含まれます。制限について詳しくは、Datastore の制限のページをご覧ください。
- 書き込みオペレーション
- データストア書き込みオペレーションの合計数。
- 読み取りオペレーション
- データストア読み取りオペレーションの合計数。
- 小規模なオペレーション
- データストアで実行された小規模オペレーションの合計数。データストア ID を割り当てるための呼び出しや、キーのみのクエリなどが含まれます。
| リソース | 無料のデフォルト制限(毎日) | 課金を有効にした場合のデフォルト制限 |
|---|---|---|
| 保存データ(課金対象) | 1 GB * | 1 GB まで無料。上限なし。 |
| インデックス数 | 200 * | 200 |
| エンティティの読み込み数 | 50,000 | |
| エンティティの書き込み数 | 20,000 | |
| エンティティの削除数 | 20,000 | |
| 小規模オペレーション | 無制限 | 該当なし |
*1 日の制限ではなく、合計数に対する制限です。1 つのプロパティに自動生成される昇順のインデックスはこの制限に含まれません。
注: データストア管理者とデータストア閲覧者が行ったデータストア オペレーションはアプリケーションの割り当て制限の対象となります。
デプロイ
- デプロイ
- デベロッパーがアプリケーションをアップロードした回数。現在の上限は 1 日あたり 10,000 回です。
1 つのアプリケーションでバージョンごとにアップロードできるファイル数は 10,000 個までです。各ファイルのサイズは最大 32 MB に制限されます。すべてのバージョンのファイルの合計サイズが無料の 1 GB の制限を超えると、毎月 1 GB ごとに $ 0.026 が課金されます。
インスタンス時間
インスタンスの使用時間には、インスタンスの稼働時間に応じて所定の金額が課金されます。インスタンスが起動すると課金が開始し、インスタンスがシャットダウンして 15 分後に課金が終了します。GCP Console の [パフォーマンス設定] タブで設定したアイドル インスタンス最大数を超えるアイドル インスタンスについては課金されません。
フロントエンドとバックエンドのインスタンスには毎日の無料割り当て枠が別々に設定されています。App Engine サービスを使用する場合、適用される割り当てはサービスのインスタンス クラスによって決まります。
| リソースまたは API 呼び出し | 無料の割り当て |
|---|---|
| フロントエンド インスタンス(自動スケーリング モジュール) | 28 時間の無料 F1 インスタンス/日 |
| バックエンド インスタンス(基本 / 手動スケーリング モジュール) | 9 時間の無料 B1 インスタンス/日 |
ログ
ログデータが取得されると、Logs API が課金されます。この API は有料と無料の両方のアプリで使用できます。
ログの取得上限は、アプリケーションのリクエストログとアプリケーション ログのデータが対象となり、有料と無料の両方のアプリで使用できます。App Engine アプリのログは Stackdriver によって提供されます。料金と制限について詳しくは、Stackdriver の料金をご覧ください。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 |
|---|---|---|
| ログデータの取得 | 100 MB | 有料アプリの場合、上限なし。 |
| ログの取得上限 | 5 GB のログデータを最大 7 日保存。 | ログデータを最大 30 日保存。詳しくは Stackdriver の料金をご覧ください。 |
メール
App Engine ではメッセージ単位でメールの課金を行います。受信者ごとにメッセージを 1 通とします。たとえば、同じメールを 10 人に送信した場合、10 通のメッセージとして計算します。
- Mail API の呼び出し回数
- アプリケーションがメールサービスにアクセスしてメッセージを送信した回数。
- 送信済みメッセージ
- アプリケーションから送信されたメッセージの総数。アプリケーションの最初の課金が処理されるまで、送信されたメッセージ数の上限は無料レベルのままになります。
- 送信済み管理者メッセージ
- アプリケーションから管理者に送信したメッセージの総数。各管理者メールのサイズの上限は 16 KB です。この中にはヘッダー、添付ファイル、本文が含まれます。
- メッセージの本文として送信されたデータ
- メールの本文で送信されたデータ量。送信帯域幅の上限が適用されます。
- 送信された添付ファイルの数
- メールと一緒に送信された添付ファイルの総数。
- 添付ファイルとして送信されたデータ
- メールの添付ファイルとして送信されたデータ量。送信帯域幅の上限が適用されます。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 | すべてのアプリに対する最大レート |
|---|---|---|---|
| Mail API の呼び出し回数 | 10 回 | 7,000 回 | 32 回/分 |
| メール受信者 | 10 通 | 100 通 | 8 通/分 |
| 管理者メール | 5,000 通 | 5,000 通 | 24 通/分 |
| メッセージの本文として送信されたデータ | 60 MB | 60 MB | 340 KB/分 |
| 送信された添付ファイルの数 | 2,000 個 | 2,000 個 | 8 個/分 |
| 添付ファイルとして送信されたデータ | 100 MB | 100 MB | 10 MB/分 |
Mail API に追加できる承認送信者の上限は 50 です。
毎日のメール割り当てを超えるメールの送信
アプリで 1 日に 7,000 通以上のメールを送信する必要がある場合には、割り当て上限の高い SendGrid、Mailjet、Mailgun などのサードパーティのメール プロバイダを使用できます。
リクエスト数
- 送信帯域幅(課金対象)
-
リクエストに応答してアプリケーションが送信したデータ量。
次のものが含まれます。
- アプリケーション サーバー、静的ファイル サーバー、Blobstore がリクエストへのレスポンスで送信したデータ。保護されたリクエストも保護されていないリクエストも含まれます。
- メールで送信されたデータ。
- URL 取得サービスが送信した HTTP 送信リクエストに含まれるデータ。
- 受信帯域幅
-
アプリケーションがリクエストから受信したデータ量。HTTP 受信リクエストのサイズは 32 MB 以下です。
次のものが含まれます。
- 保護されたリクエストまたは保護されていないリクエストからアプリケーションが受信したデータ
- Blobstore へのアップロード
- URL 取得サービスが HTTP リクエストのレスポンスで受信したデータ
- 保護された送信帯域幅
- リクエストに応答して、保護された接続経由でアプリケーションが送信したデータの量。保護された送信帯域幅には、送信帯域幅の上限が適用されます。
- 保護された受信帯域幅
- 保護された接続経由でアプリケーションがリクエストから受信したデータ。保護された受信帯域幅には、受信帯域幅の上限が適用されます。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 | ||
|---|---|---|---|---|
| 毎日の制限 | 最大レート | 毎日の制限 | 最大レート | |
| 送信帯域幅(課金対象、HTTPS を含む) | 1 GB | 56 MB/分 | 1 GB まで無料。最大 14,400 GB まで。 | 10 GB/分 |
| 受信帯域幅(HTTPS を含む) | 1 GB。最大 14,400 GB まで。 | 56 MB/分 | なし | なし |
検索
以下の表に、検索の無料割り当てを示します。検索呼び出しの種類の詳細については、Java、Python、Go のドキュメントをご覧ください。
課金を有効にすると、料金表に従って Search API のリソースが課金されます。
| リソースまたは API 呼び出し | 無料の割り当て |
|---|---|
| ストレージの合計(ドキュメントとインデックス) | 0.25 GB |
| クエリ | 1,000 クエリ/日 |
| ドキュメントのインデックス登録 | 0.01 GB/日 |
アプリケーション コンソールでは、割り当てに API リクエストの実際の数が表示されます。1 回の呼び出しで複数のドキュメントのインデックスを作成した場合、ドキュメントの数が呼び出し回数になります。
サービスの信頼性を維持するため、Search API には次の制限が設定されています。
- アプリまたはインデックス内での実行できるクエリの回数は 1 分あたり合計で 100 分まで。
- 1 分間に追加または削除できるドキュメントは 15,000 個まで。
注: これらの制限は分単位で適用されますが、GCP Console には各制限についての日単位の合計数が表示されます。シルバー、ゴールド、プラチナ サポートをご契約の方は、サポート担当者に連絡して、スループットの上限を引き上げることができます。
ソケット
- 毎日のデータ制限と分単位のデータ制限(急増制限)があります。
- ソケットを使用するアプリケーションには、分単位または日単位で制限がかかります。分単位の制限を設定すると、アプリケーションで急増した動作に対処できます。
| リソース | 1 日あたりの制限 | 分単位(急増)の制限 |
|---|---|---|
| ソケット バインド数 | 3,456,000 | 19,200 |
| ソケットの作成数 | 3,456,000 | 19,200 |
| ソケットの接続数 | 3,456,000 | 19,200 |
| ソケットの送信数 | 663,552,000 | 3,686,400 |
| ソケットの受信数 | 663,552,000 | 3,686,400 |
| ソケットの受信バイト数 | 3.3 TB | 2.4 GB |
| ソケットの送信バイト数 | 3.3 TB | 2.4 GB |
タスクキュー
- Task Queue API の呼び出し回数
- タスクをキューに入れるためにアプリケーションが Task Queue API を呼び出した回数。
- タスクキューの保存タスク数
- アプリケーションがキューに入れた未実行のタスクの合計数。
- タスクキュー保存タスクのバイト数
- アプリケーションが未実行のタスクをキューに入れるときに実行したタスクのバイト数。この割り当ては、保存データ(課金対象)の一部として扱われます。
タスクが実行されると、関連するリクエストがアプリケーションのリクエスト割り当てと比較されます。
これらの制限はすべてのタスクキューに適用されます。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 | ||
|---|---|---|---|---|
| 毎日の制限 | 最大レート | 毎日の制限 | 最大レート | |
| Task Queue API の呼び出し回数 | 100,000 | 該当なし | 1,000,000,000 | 該当なし |
| タスクキュー管理の呼び出し(GCP Console を使用) | 10,000 | 該当なし | 10,000 | 該当なし |
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 |
|---|---|---|
| タスクキューの保存タスク数 | 1,000,000 | 10,000,000,000 |
| タスクキュー保存タスクのバイト数 | 500 MB。1 GB まで設定可能。 | なし。保存データ(課金対象)まで設定可能。 |
| キューの最大数(push と pull の両方のキーを含むが、デフォルトのキューは対象外) | 10 個 | 100 個 |
注: タスクを実行または削除すると、タスクが使用しているストレージが解放されます。ストレージの割り当ては定期的に更新されています。回収された容量がすぐに反映されるとは限りません。キューの設定を調節して、保存タスクのバイト数制限を設定できます。詳しくは、Python、Java、Go、PHP のドキュメントをご覧ください。
以下の制限は、タスクキューの種類別に適用されます。
| push キューの制限 | |
|---|---|
| タスクの最大サイズ | 100 KB |
| キューの実行レート | 1 つのキューで 1 秒あたり 500 回のタスク呼び出し |
| タスクの最大延期期間 / ETA | 現在の日時から 30 日間 |
| バッチに追加可能なタスクの最大数 | 100 個 |
| トランザクションに追加可能なタスクの最大数 | 5 個 |
| タスクキューのデフォルトの最大数 | 100 個。上限を増やす場合には、サポートにお問い合わせください。 |
| pull キューの制限 | |
|---|---|
| タスクの最大サイズ | 1 MB |
| タスクの最大延期期間 / ETA | 現在の日時から 30 日 |
| バッチに追加可能なタスクの最大数 | 100 個 |
| トランザクションに追加可能なタスクの最大数 | 5 個 |
| 1 回のオペレーションでリース可能なタスクの最大数 | 1,000 個 |
| タスクバッチのリース時のペイロードの最大サイズ | 32 MB |
| タスクキューのデフォルトの最大数 | 100 個。上限を増やす場合には、サポートにお問い合わせください。 |
cron
以下の割り当ては、cron ジョブに適用されます。
- cron ジョブ
- cron ジョブの数。有料と無料の両方に適用されます。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 |
|---|---|---|
| cron ジョブ | 20 個の cron ジョブ | 250 個の cron ジョブ |
URL 取得
- URL Fetch API の呼び出し回数
- アプリケーションが URL 取得サービスにアクセスして HTTP または HTTPS リクエストを実行した回数。
- URL 取得の送信データ
- リクエストで URL 取得サービスに送信されたデータの量。送信帯域幅の上限が適用されます。
- URL 取得の受信データ
- レスポンスで URL 取得サービスから受信したデータの量。受信帯域幅の上限が適用されます。
| リソース | 無料のデフォルト制限 | 課金を有効にした場合のデフォルト制限 | ||
|---|---|---|---|---|
| 毎日の制限 | 最大レート | 毎日の制限 | 最大レート | |
| UrlFetch API の呼び出し回数 | 657,000 回 | 3,000 回/分 | 860,000,000 回 | 660,000 回/分 |
| UrlFetch の送信データ | 4 GB | 22 MB/分 | 4.5 TB | 3,600 MB/分 |
| UrlFetch の受信データ | 4 GB | 22 MB/分 | 4.5 TB | 3,600 MB/分 |

