Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

CloudFunctionsの場所

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Cloud Functions は地域的です。つまり、Cloud Function を実行するインフラストラクチャは特定の地域に配置され、それらの地域内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。

関数を実行するリージョンを選択するときは、主に待機時間と可用性を考慮する必要があります。通常、ユーザーに近いリージョンを選択できますが、アプリが使用する他の製品やサービスの場所も考慮する必要があります。複数のリージョンでサービスを使用すると、アプリのレイテンシと価格に影響する可能性があります。

Cloud Functions は、 Tier 1 の料金設定で次のリージョンで利用できます。

  • us-central1 (アイオワ)
  • us-east1 (サウスカロライナ州)
  • us-east4 (バージニア北部)
  • us-west1 (オレゴン州)
  • europe-west1 (ベルギー)
  • europe-west2 (ロンドン)
  • asia-east1 (台湾)
  • asia-east2 (香港)
  • asia-northeast1 (東京)
  • asia-northeast2 (大阪)

Cloud Functions は、 Tier 2 料金で次のリージョンで利用できます。

  • us-west2 (ロサンゼルス)
  • us-west3 (ソルトレイクシティ)
  • us-west4 (ラスベガス)
  • northamerica-northeast1 (モントリオール)
  • southamerica-east1 (サンパウロ)
  • europe-west3 (フランクフルト)
  • europe-west6 (チューリッヒ)
  • europe-central2 (ワルシャワ)
  • australia-southeast1 (シドニー)
  • asia-south1 (ムンバイ)
  • asia-southeast1 (シンガポール)
  • asia-southeast2 (ジャカルタ)
  • asia-northeast3 (ソウル)

特定のプロジェクトの特定のリージョン内の関数には、一意の (大文字と小文字を区別しない) 名前を付ける必要がありますが、リージョン間またはプロジェクト間で関数が同じ名前を共有する場合があります。

リージョンを変更するためのベスト プラクティス

デフォルトでは、関数はus-central1リージョンで実行されます。これは、Cloud Storage バケットなどのイベント ソースのリージョンとは異なる場合があることに注意してください。関数が実行されるリージョンを変更する必要がある場合は、関数トリガーの種類ごとに、このセクションの推奨事項に従ってください。

関数が実行されるリージョンを設定するには、次のように関数定義でregionパラメータを設定します。

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

functions.region()でカンマ区切りの複数の地域文字列を渡すことで、複数の地域を指定できます。推奨される手順の詳細については、関数のリージョンを変更するを参照してください。

HTTP およびクライアント呼び出し可能関数

HTTP および呼び出し可能な関数の場合、最初に関数を宛先リージョン、または最も予想される顧客がいる場所に最も近い場所に設定してから、元の関数を変更して HTTP 要求を新しい関数にリダイレクトすることをお勧めします (それらは同じものを持つことができます)。名前)。 HTTP 関数のクライアントがリダイレクトをサポートしている場合、元の関数を変更して、新しい関数の URL と共に HTTP リダイレクト ステータス (301) を返すことができます。クライアントがリダイレクトを適切に処理しない場合は、元の関数から新しい関数への新しい要求を開始することで、元の関数から新しい関数への要求をプロキシできます。最後のステップは、すべてのクライアントが新しい関数を呼び出していることを確認することです。

呼び出し可能な関数のクライアント側の場所の選択

呼び出し可能な関数に関して、クライアントの呼び出し可能なセットアップは、HTTP 関数と同じガイドラインに従う必要があります。クライアントはリージョンを指定することもできます。関数がus-central1以外のリージョンで実行される場合は、リージョンを指定する必要があります。

クライアントでリージョンを設定するには、初期化時に目的のリージョンを指定します。

迅速

lazy var functions = Functions.functions(region:"europe-west1")

Objective-C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

ウェブ


var functions = firebase.app().functions('europe-west1');

アンドロイド

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

C++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

団結

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

バックグラウンド機能

バックグラウンド関数は、少なくとも 1 回のイベント配信セマンティックを採用しています。これは、状況によっては、重複したイベントを受け取る可能性があることを意味します。したがって、べきになるように関数を実装する必要があります。関数が既にべき等である場合は、同じイベント トリガーを使用して新しいリージョンに関数を再デプロイし、新しい関数がトラフィックを正しく受信していることを確認してから古い関数を削除できます。この移行中、両方の関数がイベントを受け取ります。関数の領域を変更するためのコマンドの推奨シーケンスについては、関数の領域の変更を参照してください。

関数が現在べき等でない場合、またはそのべき等性が領域を超えて拡張されていない場合は、関数を移動する前に最初にべき等性を実装することをお勧めします。

最適な地域の推奨事項は、イベント トリガーの種類によって異なります。

トリガーの種類地域のおすすめ
クラウド ファイアストアCloud Firestore インスタンスの場所に最も近いリージョン(次のセクションを参照)
リアルタイム データベース常にus-central1
クラウドストレージCloud Storage バケットの場所に最も近いリージョン(次のセクションを参照)
その他関数内で Realtime Database インスタンス、Cloud Firestore インスタンス、または Cloud Storage バケットを操作している場合、推奨されるリージョンは、これらのリソースのいずれかによってトリガーされる関数がある場合と同じです。それ以外の場合は、 us-central1のデフォルト リージョンを使用します。 Firebase Hosting に接続された関数はus-central1に配置する必要があることにも注意してください。

Cloud Firestore と Cloud Storage の場所に基づくリージョンの選択

関数に使用できるリージョンは、Cloud Firestore データベースと Cloud Storage バケットに使用できるリージョンと常に正確に一致するとは限りません。

関数とリソース(データベース インスタンスまたは Cloud Storage バケット)が別の場所にある場合、潜在的にレイテンシと課金コストが増加する可能性があることに注意してください。

同じリージョンがサポートされていない場合に備えて、Cloud Firestore と Cloud Storage で関数がサポートされている最も近いリージョンのマッピングを次に示します。

Cloud Firestore と Cloud Storage のリージョン / マルチリージョン関数の最も近い領域
nam5またはus-central (マルチリージョン) us-central1
eur3またはeurope-west (マルチリージョン) europe-west1
asia-south1 (ムンバイ) asia-east2