Compute Engine で自動スケーリング スクリプトまたはランタイム サービスを使用すると、継続的インテグレーションと継続的デプロイ(CI/CD)パイプラインを自動化できます。 ただし、これらのリソースはグローバル API エンドポイントをクエリするときにグローバル リソース定義に大きく依存するため、このアプローチではマルチリージョン アーキテクチャ全体に単一障害点が生じる可能性があります。
このリスクを軽減するには、グローバル リソースのリージョン ビューにアクセスするようにサービスを構成します。コンピューティング ワークロードが実行される正確なリージョン内のリージョン化された読み取り専用エンドポイントに GET リクエストと LIST リクエストを送信することで、サービスはグローバル コントロール プレーンまたは他のリージョンでの潜在的な停止から API の使用を分離します。リージョン化された読み取り専用エンドポイントと復元性のベスト プラクティスの詳細については、復元性の高いコントロール プレーンの読み取りにリージョン ビューを使用するをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
Console
コンソール Google Cloud を使用してサービス Google Cloud と API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。
-
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、 gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。
詳細については、 REST を使用して認証する 認証ドキュメントの Google Cloud をご覧ください。
必要なロール
グローバル リソースにリージョン単位でアクセスするために必要な権限を取得するには、プロジェクトまたは 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 リクエストの Google Cloud リージョン(例: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 Google Cloud リクエストのリージョン(例: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 Google Cloud リクエストのリージョン(例: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 Google Cloud リクエストのリージョン(例: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 Google Cloud リクエストのリージョン(例: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 リクエストの Google Cloud リージョン(例: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"
}
次のステップ
- プロジェクト リソースの詳細を確認する。
- OS イメージの詳細を確認する。
- グローバル リソースのリージョン ビューのトラブルシューティング方法を確認する。