Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
このページでは、Cloud Composer で保存されたデータを指定したロケーション内に保持するようにリソース ロケーションの制限を構成する方法について説明します。
ロケーション制限の仕組み
Cloud Composer のロケーション制限は、Cloud Composer 環境が作成されたプロジェクトに適用される組織のポリシーに基づいて決定されます。このポリシーは、プロジェクト内で割り当てられるか、組織から継承されます。
ロケーション制限を有効にすると、ポリシーで禁止されているリージョンに環境を作成できなくなります。リージョンが拒否リストに含まれている場合、またはリージョンが許可リストに含まれていない場合、このリージョンに環境を作成することはできません。
環境の作成を有効にするには、このリージョン内の特定のゾーンではなく、リージョン全体をポリシーで許可する必要があります。たとえば、europe-west3
リージョンで Cloud Composer 環境を作成するには、ポリシーでこのリージョンを許可する必要があります。
Cloud Composer は、次のタイミングでロケーションの制限を確認します。
- 環境の作成時。
- 環境のアップグレード時、オペレーション中に追加のリソースが作成された場合。
- 環境のアップデート時、Cloud Composer の依存関係にロケーション制限を適用しない古い環境の場合。
Cloud Composer は、ロケーションの制限を確認するだけでなく、次の処理も行います。
- ユーザーがカスタマイズした Airflow イメージをリージョンの Artifact Registry リポジトリに保存する。
- ポリシーで
US
マルチリージョンが明示的に禁止されている場合、Cloud Build の使用を無効にする。この場合、ユーザーがカスタマイズした Airflow イメージは、GKE クラスタ内に構築されます。
リソース ロケーションの制限を有するプライベート IP 環境に Python 依存関係をインストールする
プロジェクトにリソース ロケーションの制限を設定している場合、Cloud Build を使用して Python パッケージをインストールすることはできません。その結果、公共のインターネット上のリポジトリへの直接アクセスは無効になります。
ロケーションの制限で US
マルチリージョンが許可されていない場合にプライベート IP 環境に Python 依存関係をインストールするには、次に挙げる選択肢のいずれかを使用します。
VPC ネットワーク内のプロキシ サーバーを使用して、公共のインターネット上の PyPI リポジトリに接続する。プロキシのアドレスは、Cloud Storage バケットの
/config/pip/pip.conf
ファイルで指定します。セキュリティ ポリシーで外部 IP アドレスからの VPC ネットワークへのアクセスが許可されている場合は、Cloud NAT を構成できます。
ローカル ライブラリとしてインストールするために、Python の依存関係を Cloud Storage バケットの
dags
フォルダに保存します。 依存関係ツリーが大規模な場合は、この方法は適していません。
Cloud Composer ログに対してロケーションを制限する
Cloud Composer ログに機密データが含まれている場合は、Cloud Composer ログをリージョンの Cloud Storage バケットにリダイレクトすることをおすすめします。そうするには、ログシンクを使用します。ログを Cloud Storage バケットにリダイレクトすると、ログは Cloud Logging に送信されません。
gcloud
Cloud Storage バケットを新規作成する
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
以下のように置き換えます。
LOCATION
は、環境が配置されているリージョン。BUCKET_NAME
をバケット名に置き換えます。例:composer-logs-us-central1-example-environment
ログシンクを新規作成します。
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"
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。BUCKET_NAME
をバケット名に置き換えます。LOCATION
は、環境が配置されているリージョン。
上記のコマンドの出力には、サービス アカウント番号が含まれます。このサービス アカウントに Storage オブジェクト作成者のロールを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \ --role='roles/storage.objectCreator' \ --condition=None
以下のように置き換えます。
PROJECT_ID
は、プロジェクト ID に置き換えます。SA_NUMBER
は、前のステップのgcloud logging sinks create
コマンドによって指定されたサービス アカウント番号に置き換えます。
環境のログを Logging から除外します。
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"
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。