Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
このページは、環境の作成のメインページに関連しています。Terraform を使用して、既存の Google Cloud プロジェクトでこの環境用に Cloud Composer 環境とユーザー管理サービス アカウントを設定する方法を示します。このページを手始めとして、必要に応じて環境の構成パラメータを追加できます。
始める前に
このガイドでは、課金が設定済みの Google Cloud プロジェクトがあることを前提としています。
- 既存のプロジェクトを使用できます。
- 新しいプロジェクトは、Google Cloud コンソール、Google Cloud CLI、API または Python クライアント ライブラリを使用して作成できます。
- Terraform を使用してプロジェクトを作成、管理できます。詳細については、
google_project
リソースの Terraform ドキュメントをご覧ください。
Google Cloud での認証
Google Cloud で認証するには、次のコマンドを実行します。
gcloud auth application-default login
このコマンドの詳細については、gcloud auth application-default
をご覧ください。
Terraform で Google プロバイダを構成する
既存のプロジェクト ID とリソースのデフォルト リージョンを指定します。Cloud Composer 環境では、そのリージョンが使用されます。
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Cloud Composer API を有効にする
プロジェクトで Cloud Composer API を有効にします。
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
// This parameter prevents automatic disabling
// of the API when the resource is destroyed.
// We recommend to disable the API only after all environments are deleted.
disable_on_destroy = false
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
プロジェクトに環境のサービス アカウントを作成する
このガイドでは、Cloud Composer 環境を実行するために必要なすべての権限を持つ環境のサービス アカウントを作成する方法について説明します。
このガイドで説明するように、DAG で環境とオペレーションを実行するために必要な権限のみを持つ Cloud Composer 環境にユーザー管理のサービス アカウントを設定することを強くおすすめします。
この方法は使用しないことをおすすめしますが、環境のサービス アカウントを指定しないと、Cloud Composer 環境はデフォルトの Compute Engine サービス アカウントを使用します。
環境のサービス アカウントでプロジェクト内の他のリソースにアクセスするには、追加の権限が必要になる場合があります。たとえば、DAG が BigQuery にデータを転送する場合、このアカウントには BigQuery に固有の権限またはロールが必要になることがあります。
次のロールと権限を持つカスタム サービス アカウントを定義します。
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
環境の作成
Terraform を使用して環境を作成します。
この例では、カスタム サービス アカウントを使用する環境の作成方法を示します。環境の他の構成パラメータ(カスタム スケールとパフォーマンスのパラメータ、追加の PyPI パッケージなど)を定義するパラメータを追加できます。
その他のパラメータの詳細については、環境を作成するをご覧ください。
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-1.20.12-airflow-1.10.15"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Terraform の完全なスクリプト
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
disable_on_destroy = false
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-1.20.12-airflow-1.10.15"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
次のステップ
Terraform を使用した環境の構成については、他のドキュメント ページをご覧ください。次に例を示します。