Cloud Functions のロケーション

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

Cloud Functions を実行するリージョンを選択するときは、レイテンシと可用性を第一に考慮してください。一般的には、Cloud ファンクションのユーザーに最も近いリージョンを選択しますが、アプリで使用されている他の Google Cloud プロダクトやサービスのロケーションも考慮する必要があります。使用するサービスが複数のロケーションにまたがっていると、アプリのレイテンシだけでなく、料金にも影響します。

Cloud Functions で利用可能なリージョンを以下に示します。Cloud Functions のバージョンによって、利用できるリージョンが異なります。表の「サポートされているプロダクトのバージョン」列をご覧ください。

Tier 1 料金設定

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

リージョン ロケーション サポートされているプロダクト バージョン 二酸化炭素排出量
asia-east1 台湾 第 1 世代、第 2 世代
asia-east2 香港 第 1 世代
asia-northeast1 東京 第 1 世代、第 2 世代
asia-northeast2 大阪 第 1 世代、第 2 世代
europe-north1 フィンランド 第 2 世代 リーフアイコン 低 CO2
europe-southwest1 マドリッド 第 2 世代
europe-west1 ベルギー 第 1 世代、第 2 世代 リーフアイコン 低 CO2
europe-west2 ロンドン 第 1 世代
europe-west4 オランダ 第 2 世代
europe-west8 ミラノ 第 2 世代
europe-west9 パリ 第 2 世代 リーフアイコン 低 CO2
me-west1 テルアビブ 第 2 世代
us-central1 アイオワ 第 1 世代、第 2 世代 リーフアイコン 低 CO2
us-east1 サウスカロライナ 第 1 世代、第 2 世代
us-east4 北バージニア 第 1 世代、第 2 世代
us-east5 コロンバス 第 2 世代
us-south1 ダラス 第 2 世代
us-west1 オレゴン 第 1 世代、第 2 世代 リーフアイコン 低 CO2

Tier 2 料金設定

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

リージョン ロケーション サポートされているプロダクト バージョン 二酸化炭素排出量
asia-east2 香港 第 2 世代
asia-northeast3 ソウル 第 1 世代、第 2 世代
asia-southeast1 シンガポール 第 1 世代、第 2 世代
asia-southeast2 ジャカルタ 第 1 世代、第 2 世代
asia-south1 ムンバイ 第 1 世代、第 2 世代
asia-south2 デリー(インド) 第 2 世代
australia-southeast1 シドニー 第 1 世代、第 2 世代
australia-southeast2 メルボルン 第 2 世代
europe-central2 ワルシャワ 第 1 世代、第 2 世代
europe-west2 ロンドン 第 2 世代
europe-west3 フランクフルト 第 1 世代、第 2 世代 リーフアイコン 低 CO2
europe-west6 チューリッヒ 第 1 世代、第 2 世代 リーフアイコン 低 CO2
europe-west10 ベルリン 第 2 世代
europe-west12 トリノ 第 2 世代
me-central1 ドーハ 第 2 世代
me-central2 ダンマーム 第 2 世代
northamerica-northeast1 モントリオール 第 1 世代、第 2 世代 リーフアイコン 低 CO2
northamerica-northeast2 トロント 第 2 世代 リーフアイコン 低 CO2
southamerica-east1 サンパウロ 第 1 世代、第 2 世代 リーフアイコン 低 CO2
southamerica-west1 サンティアゴ(チリ) 第 2 世代
us-west2 ロサンゼルス 第 1 世代、第 2 世代
us-west3 ソルトレイクシティ 第 1 世代、第 2 世代
us-west4 ラスベガス 第 1 世代、第 2 世代

リージョンの選択

デプロイ時に、関数のリージョンを選択できます。

gcloud

Google Cloud CLI を使用している場合は、--region フラグを使用してリージョンを指定できます。

gcloud functions deploy FUNCTION_NAME --region=REGION ...

REGION は、上のいずれかのリージョンです。

コンソール

Google Cloud コンソールを使用している場合は、関数を作成してデプロイするときにリージョンを選択できます。

  1. Google Cloud コンソールで、Cloud Functions の概要ページに移動します。

    Cloud Functions の概要ページに移動

    Cloud Functions を有効にしたプロジェクトが選択されていることを確認します。

  2. [関数の作成] をクリックします。

  3. [リージョン] フィールドでリージョンを選択します。

関数をプロジェクト内の別のリージョンにデプロイすることもできますが、関数にリージョンを選択した後でリージョンの変更はできません。

特定のプロジェクトの特定のリージョンで使用する関数には一意の名前を付ける必要があります(大文字小文字が区別されます)。リージョンまたはプロジェクトが異なる場合、関数には同じ名前を使用できます。

デフォルト リージョンの設定

デフォルトのリージョンは、Google Cloud CLI を使用して次のように設定できます。

gcloud config set functions/region REGION

次に例を示します。

gcloud config set functions/region europe-west1

データ所在地

Cloud Functions では、関数の実行範囲(Scope A Compliance - 関数の実行)でデータ所在地が保証され、特定の関数は関数の呼び出しと実行のためのデータ所在地に使用されます。

このコンプライアンスは、HTTP 関数とイベント ドリブン関数の両方に適用されます。イベント ドリブン関数の場合、Cloud Functions は、アップストリーム プロダクト(トリガーしているプロダクト)が Cloud Functions にイベントを配信した時点からデータ所在地に適合します。そのため、アップストリーム プロダクト(Cloud Storage や Pub/Sub など)がデータ所在地に適合していることを確認する必要があります。

リージョン変更のベスト プラクティス

関数を配置するリージョンを変更する必要がある場合は、以下の推奨事項に従ってください。

HTTP 関数

HTTP 関数の場合は、まず HTTP 関数を宛先のリージョン(同じ名前でもかまいません)に再度デプロイし、HTTP リクエストを新しい関数にリダイレクトするように元の関数を変更することをおすすめします。HTTP 関数のクライアントがリダイレクトをサポートしている場合は、HTTP リダイレクト ステータス(301)と新しい関数の URL を返すように元の関数を変更します。リダイレクトにうまく対応できないクライアントの場合は、元の関数から新しい関数へリクエストをプロキシするという方法があります。これを行うには、元の関数から新しい関数に対して新しいリクエストを開始します。最終的には、すべてのクライアントが新しい関数を呼び出すようにします。

イベント ドリブン関数

イベント ドリブン関数では、at-least-once(少なくとも 1 回)のイベント配信セマンティックを採用しています。つまり、状況によってはイベントを重複して受け取る可能性があるため、実装は必ずべき等にする必要があります。関数がすでにべき等になっている場合は、同じイベント トリガーを使用して新しいリージョンに関数を再デプロイし、新しい関数がトラフィックを正しく受け取っていることを確認してから古い関数を削除します。この移行中は、どちらの関数もイベントを受信します。

関数が正しくべき等になっていない場合や、べき等性がリージョンを超えて拡張できない場合は、最初にべき等性を実装してから関数を移動してください。