リソース ロケーションの制限

このページでは、Cloud Composer で保存されたデータを指定したロケーション内に保持するようにリソース ロケーションの制限を構成する方法について説明します。

リソース ロケーション制限がサポートされていないリージョン

Cloud Composer では、ワルシャワ(europe-central2)リージョンのリソース ロケーション制限はサポートされていません。

ロケーション制限の仕組み

Cloud Composer のロケーション制限は、Cloud Composer 環境が作成されたプロジェクトに適用される組織のポリシーに基づいて決定されます。このポリシーは、プロジェクト内で割り当てられるか、組織から継承されます。

ロケーション制限を有効にすると、ポリシーで禁止されているリージョンに環境を作成できなくなります。リージョンが拒否リストに含まれている場合、またはリージョンが許可リストに含まれていない場合、このリージョンに環境を作成することはできません。

Cloud Composer はリージョン ベースです。環境の作成を有効にするには、このリージョン内の特定のゾーンではなく、リージョン全体をポリシーで許可する必要があります。たとえば、europe-west3 リージョンで Cloud Composer 環境を作成するには、ポリシーでこのリージョンを許可する必要があります。

ロケーションの制限は、次のタイミングで確認されます。

  • 環境の作成時。
  • 環境のアップグレード時、オペレーション中に追加のリソースが作成された場合。
  • 環境のアップデート時、Cloud Composer の依存関係にロケーション制限を適用しない古い環境の場合。

上記の制限に加えて、Cloud Composer では次の処理も行われます。

  • ユーザーがカスタマイズした Airflow イメージをリージョンの Artifact Registry リポジトリに保存する。
  • ポリシーで US マルチリージョンが明示的に禁止されている場合、Cloud Build の使用を無効にする。この場合、ユーザーがカスタマイズした Airflow イメージは GKE クラスタ内に構築されます。

リソース ロケーションの制限を有するプライベート IP 環境に Python 依存関係をインストールする

プロジェクトでロケーション制限を使用すると、一部のツールが使用できなくなります。特に、Cloud Build で Python パッケージをインストールすることはできないため、公共のインターネット上のリポジトリへの直接アクセスは無効になります。

ロケーション制限で US マルチリージョンが許可されていない場合は、プライベート IP Composer 環境用の Python 依存関係をインストールするには、次のいずれかのオプションを使用します。

Cloud Composer ログに対するロケーションの制限

ログに機密データが含まれている場合は、ログルーターを使用して Cloud Composer ログをリージョンの Cloud Storage バケットにリダイレクトすることをおすすめします。これにより、ログが Cloud Logging に送信されなくなります。Cloud カスタマーケアによるサポートが必要な場合は、Google サポート エンジニアに Cloud Storage に保存されている Cloud Composer ログへのアクセス権を付与する必要があります。

gcloud

  1. 新しい Cloud Storage バケットを作成します(例: composer-logs-us-central1-example-environment)。

    gsutil mb -l LOCATION gs://ENVIRONMENT_NAME
    
  2. ログシンクを新規作成します。

    gcloud logging sinks create \
    composer-log-sink-ENVIRONMENT_NAME \
    storage.googleapis.com/BUCKET_NAME \
    --log-filter "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    
  3. このバケットのサービス アカウントに適切なロールを付与します(前のコマンドの結果を参照)。

    gcloud projects add-iam-policy-binding PROJECT \
    --member="serviceAccount:serviceAccountNumber@gcp-sa-logging.iam.gserviceaccount.com" \
    --role='roles/storage.objectCreator' --condition=None
    
  4. 新しい環境のログを Monitoring から除外します。

    gcloud logging sinks update _Default \
    --add-exclusion name=ENVIRONMENT_NAME-exclusion, \
    filter="resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"