高可用性を実現するためにリージョン単位でグローバル リソースにアクセスする

Compute Engine で自動スケーリング スクリプトまたはランタイム サービスを使用すると、継続的インテグレーションと継続的デプロイ(CI/CD)パイプラインを自動化できます。 ただし、これらのリソースはグローバル API エンドポイントをクエリするときにグローバル リソース定義に大きく依存するため、このアプローチではマルチリージョン アーキテクチャ全体に単一障害点が生じる可能性があります。

このリスクを軽減するには、グローバル リソースのリージョン ビューにアクセスするようにサービスを構成します。コンピューティング ワークロードが実行される正確なリージョン内のリージョン化された読み取り専用エンドポイントに GET リクエストと LIST リクエストを送信することで、サービスはグローバル コントロール プレーンまたは他のリージョンでの潜在的な停止から API の使用を分離します。リージョン化された読み取り専用エンドポイントと復元性のベスト プラクティスの詳細については、復元性の高いコントロール プレーンの読み取りにリージョン ビューを使用するをご覧ください。

始める前に

必要なロール

グローバル リソースにリージョン単位でアクセスするために必要な権限を取得するには、プロジェクトまたは OS イメージに対するCompute インスタンス管理者(v1) (roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには グローバル リソースにリージョン単位でアクセスするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

グローバル リソースにリージョン単位でアクセスするには、次の権限が必要です。

  • プロジェクトのリージョン ビューを取得するには: compute.projects.get プロジェクトに対する
  • OS イメージのリージョン ビューを取得するには: compute.images.get と compute.images.list をプロジェクトまたは OS イメージに対して実行します

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

プロジェクト リソース

projectViews 読み取り専用エンドポイントを使用して、グローバル プロジェクト リソースのリージョン ビューを取得できます。projectViews エンドポイントをクエリすると、Compute Engine は標準のグローバル compute.Project リソース オブジェクトを返します。リソース自体はグローバルのままです。

プロジェクト リソースのリージョン ビューを取得する

Google Cloud CLI または REST API を使用して、グローバル プロジェクトのリージョン ビューを取得できます。

gcloud

特定の リージョンのコントロール プレーンを介してグローバル プロジェクトを記述するには、 gcloud compute project-views describe コマンドを実行します。

gcloud compute project-views describe \
    --region=REGION \
    --project=PROJECT_ID

次のように置き換えます。

  • REGION: API リクエストの Cloud de Confiance by S3NS リージョン(例: us-central1)。
  • PROJECT_ID: プロジェクト ID。

REST

特定の リージョンのコントロール プレーンを介してグローバル プロジェクトを記述するには、GET リクエストを projectViews メソッドに送信します。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/projectViews"

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • REGION: API Cloud de Confiance リクエストのリージョン(例: us-central1)。

API は標準の compute.Project リソース表現を直接返します。

{
  "kind": "compute#project",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-project12345",
  "commonInstanceMetadata": {
    "items": [
      {
        "key": "example-key",
        "value": "example-value"
      }
    ]
  },
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345",
  "defaultServiceAccount": "SERVICE_ACCOUNT_EMAIL"
}

OS イメージ リソース

imageViews 読み取り専用エンドポイントを使用して、グローバル OS イメージ リソースのリージョン ビューを取得できます。imageViews エンドポイントをクエリすると、Compute Engine は標準のグローバル compute.Image リソース オブジェクトを返します。リソース自体はグローバルのままです。

OS イメージ リソースのリージョン リストを取得する

gcloud CLI または REST API を使用して、特定のリージョン エンドポイントを介してプロジェクトで使用できるすべてのグローバル OS イメージを一覧表示できます。

gcloud

リージョン エンドポイントを使用してグローバル OS イメージを一覧表示するには、 gcloud compute image-views list コマンドを実行します。

gcloud compute image-views list \
    --region=REGION \
    --project=PROJECT_ID

次のように置き換えます。

  • REGION: API Cloud de Confiance リクエストのリージョン(例: us-central1)。
  • PROJECT_ID: プロジェクト ID。

REST

リージョン エンドポイントを使用してグローバル OS イメージを一覧表示するには、GET リクエストを imageViews メソッドに送信します。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews"

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • REGION: API Cloud de Confiance リクエストのリージョン(例: us-central1)。

OS イメージ リソースのリージョン ビューを取得する

gcloud CLI または REST API を使用して、リージョン エンドポイントを介して特定のグローバル OS イメージの情報を取得できます。

gcloud

リージョン エンドポイントを使用してグローバル OS イメージの詳細を取得するには、 gcloud compute image-views describe コマンドを実行します。

gcloud compute image-views describe IMAGE_NAME \
    --region=REGION \
    --project=PROJECT_ID

次のように置き換えます。

  • IMAGE_NAME: グローバル OS イメージ リソースの名前。
  • REGION: API Cloud de Confiance リクエストのリージョン(例: us-central1)。
  • PROJECT_ID: プロジェクト ID。

REST

リージョン エンドポイントを使用してグローバル OS イメージの詳細を取得するには、特定の imageViews メソッドに GET リクエストを送信します。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews/IMAGE_NAME"

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • REGION: API リクエストの Cloud de Confiance リージョン(例: us-central1)。
  • IMAGE_NAME: グローバル OS イメージ リソースの名前。

API は標準の compute.Image リソース表現を直接返します。

{
  "kind": "compute#image",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-image12345",
  "sourceDisk": "https://www.googleapis.com/compute/v1/projects/my-project12345/zones/us-central1-a/disks/my-disk12345",
  "sourceDiskId": "1234567890123456789",
  "sourceType": "RAW",
  "status": "READY",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345/global/images/my-image12345"
}

次のステップ