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 コンソールを使用している場合は、関数を作成してデプロイするときにリージョンを選択できます。
Google Cloud コンソールで、Cloud Functions の概要ページに移動します。
Cloud Functions を有効にしたプロジェクトが選択されていることを確認します。
[関数の作成] をクリックします。
[リージョン] フィールドでリージョンを選択します。
関数をプロジェクト内の別のリージョンにデプロイすることもできますが、関数にリージョンを選択した後でリージョンの変更はできません。
特定のプロジェクトの特定のリージョンで使用する関数には一意の名前を付ける必要があります(大文字小文字が区別されます)。リージョンまたはプロジェクトが異なる場合、関数には同じ名前を使用できます。
デフォルト リージョンの設定
デフォルトのリージョンは、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 回)のイベント配信セマンティックを採用しています。つまり、状況によってはイベントを重複して受け取る可能性があるため、実装は必ずべき等にする必要があります。関数がすでにべき等になっている場合は、同じイベント トリガーを使用して新しいリージョンに関数を再デプロイし、新しい関数がトラフィックを正しく受け取っていることを確認してから古い関数を削除します。この移行中は、どちらの関数もイベントを受信します。
関数が正しくべき等になっていない場合や、べき等性がリージョンを超えて拡張できない場合は、最初にべき等性を実装してから関数を移動してください。