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 環境は、デフォルトの Compute Engine サービス アカウントを使用します。このガイドでは、Cloud Composer 環境を実行するために必要なすべての権限を持つ新しいサービス アカウントを作成して、もう一つの方法を示します。
次のロールと権限を持つカスタム サービス アカウントを定義します。環境のサービス アカウントの権限の詳細については、IAM によるアクセス制御をご覧ください。
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"
}
Cloud Composer サービス アカウントに必要な権限を付与する
環境のサービス アカウントの許可ポリシーに新しいロール バインディングを追加します。
環境のサービス アカウントの新しいプリンシパルとして Cloud Composer サービス エージェント アカウントを追加し、Cloud Composer v2 API サービス エージェント拡張機能のロールを付与します。
Terraform を使用してプロジェクトの許可ポリシーを定義していない場合は、次の例を使用しないでください。代わりに、他の方法でこのバインディングを追加します。
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
環境の作成
Terraform を使用して環境を作成します。
この例では、カスタム サービス アカウントを使用する環境の作成方法を示します。環境の他の構成パラメータ(カスタム スケールとパフォーマンスのパラメータ、追加の PyPI パッケージなど)を定義するパラメータを追加できます。
その他のパラメータの詳細については、環境を作成するをご覧ください。
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.9.7-airflow-2.9.3"
}
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_project_iam_member" "service_agent_role" {
provider = google-beta
project = "example-project"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
role = "roles/composer.ServiceAgentV2Ext"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
// Add your environment configuration here
software_config {
image_version = "composer-2.9.7-airflow-2.9.3"
}
}
}
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_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.9.7-airflow-2.9.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
次のステップ
Terraform を使用した環境の構成については、他のドキュメント ページをご覧ください。次に例を示します。