ステップ 4: コンポーネントを設定する

このページでは、Cortex Framework のコアである Cortex Framework Data Foundation をデプロイする 4 番目のステップについて説明します。このステップでは、デプロイに必要な Google Cloud サービスを設定します。

サービスを有効にする Google Cloud

このセクションでは、プロジェクトで次の Google Cloud サービスを有効にします。Google Cloud

Cloud Shell を使用してこれらの Google Cloud サービスを有効にします :

  1. 次のコマンドをコピーして貼り付けます。

    gcloud config set project SOURCE_PROJECT
    
    gcloud services enable bigquery.googleapis.com \
                          cloudbuild.googleapis.com \
                          composer.googleapis.com \
                          storage-component.googleapis.com \
                          cloudresourcemanager.googleapis.com \
                          dataflow.googleapis.com \
                          datacatalog.googleapis.com \
                          workflowexecutions.googleapis.com \
                          workflows.googleapis.com \
                          aiplatform.googleapis.com
    

    SOURCE_PROJECT は、実際のソース プロジェクト ID に置き換えます。

  2. 成功 メッセージが表示されたら、 Google Cloud サービスが有効になっていることを確認します。

(省略可)プロジェクトで次の Google Cloud サービスを有効にできます。Google Cloud

  • Managed Airflow (変更データ キャプチャ(CDC)処理、階層のフラット化(SAP のみ)、 データ レプリケーション(SAP 以外)用) (有向非巡回グラフ (DAG)を使用)。インスタンスを設定するには、Managed Airflow のドキュメントをご覧ください。
  • Looker をレポート テンプレートに接続するための Looker。
  • BigQuery Sharing(旧 Analytics Hub)にリンクされた データセットは、Weather DAG などの外部ソースで使用されます。高度なシナリオでは、この構造を任意のソースで埋めることができます。
  • Dataflow: Google 広告などの多くのマーケティング データセットの統合ツール。
  • Cortex Framework with Meridian の場合:
    • Colab Enterprise: 次のものにアクセスできる実行中と実行中の Colab Enterprise ノートブックを実行します。
    • Cloud Storage 上のノートブックと構成ファイル。
    • 関連する BigQuery ビューとテーブルに対してクエリを実行します。
    • 結果を Cloud Storage に書き戻します。
    • ワークフロー: ワークフローと Cloud Build を実行して、Colab Enterprise ノートブックの実行をトリガーします。

Cloud Build サービス アカウントを作成して構成する

Cloud Build は、サービス アカウントを使用してビルドを実行します。 このセクションでは、Cortex Framework デプロイ専用のサービス アカウントを作成し、Cloud Build サービス アカウントに必要な権限を付与する手順について説明します。

サービス アカウントを新規作成

セキュリティと制御を強化するために、Cortex Framework をデプロイするための専用のサービス アカウントを作成します。新しいサービス アカウント を作成したら、 サービス アカウント をデプロイ プロセスで_BUILD_ACCOUNT置換パラメータを使用して指定できます。

この新しいサービス アカウントは、 Google Cloud コンソールまたは Google Cloud CLI を使用して作成します。

コンソール

  1. [サービス アカウント] ページに移動します。

    サービス アカウント

    残りの手順は、コンソールに表示されます。 Google Cloud

  2. プロジェクトを選択します。 Google Cloud

  3. コンソールで、サービス アカウントと表示名を入力し、説明を入力します 。 Google Cloud この名前に基づいて、 Google Cloud コンソールで サービス アカウント ID が生成されます。必要に応じて ID を編集します。ID は後で変更できません。 サービス アカウントには次のデフォルト値を使用します。

    • 名前: "cortex-deployer".
    • 説明: "Cortex Deployer サービス アカウント".
    • 表示名: "Cortex Deployer".
  4. ユーザーにこのサービス アカウントへのアクセスを許可します。

    1. サービス アカウントを使用してデプロイを実行できるすべてのユーザー(自分を含む)の ID を追加します。
    2. サービス アカウント トークン作成者 のロールを割り当てます。このロールの詳細については、サービス アカウントのロールをご覧ください。
  5. [完了] をクリックして、サービス アカウントの作成を完了します。

サービス アカウントがすでにある場合は、次の操作を行います。

  1. [サービス アカウント] に移動します。
  2. [サービス アカウント] を選択します。
  3. [アクセス権を持つプリンシパル] タブをクリックします。
  4. [アクセス権を付与] をクリックします。
    1. サービス アカウントを使用してデプロイを実行できるすべてのユーザー(自分を含む)の ID を追加します。
    2. サービス アカウント トークン作成者 のロールを割り当てます。

gcloud

  1. 次のコマンドを使用して、IAM ポリシーでサービス アカウントを作成します。

    gcloud iam service-accounts create cortex-deployer \
    --description="Cortex Deployer Service Account" \
    --display-name="Cortex Deployer"
    
  2. 次のコマンドを使用して、 Google Cloud プロジェクト に IAM ポリシーを追加します。

    gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role="roles/cloudbuild.builds.editor"
    
  3. サービス アカウントを使用してデプロイを実行できるすべてのユーザー(自分を含む)の ID を追加し、次のコマンドを使用して サービス アカウント トークン作成者 のロールを割り当てます。

    gcloud iam service-accounts add-iam-policy-binding cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com \
    --member="user:USER_EMAIL" \
    --role="roles/iam.serviceAccountTokenCreator"
    

    次のように置き換えます。

    • SOURCE_PROJECT は、Cortex Framework Data Foundation デプロイのソース プロジェクトに置き換えます。
    • USER_EMAIL は、実行中のユーザーのメールアドレスに置き換えます。

新しいサービス アカウントの作成の詳細については、 サービス アカウントを作成するをご覧ください。

権限を付与する

Cloud Build サービス アカウントには、ソース プロジェクト(別のプロジェクトにデプロイする場合はターゲット プロジェクト)に対する特定の権限が必要です。コンソールまたは Google Cloud CLI を使用して次のロールを付与します。 Google Cloud

  • Cloud Build サービス アカウント(roles/cloudbuild.builds.builder
  • サービス アカウント ユーザー(roles/iam.serviceAccountUser
  • BigQuery データ編集者(roles/bigquery.dataEditor
  • BigQuery ジョブユーザー(roles/bigquery.jobUser
  • ログ書き込み(roles/logging.logWriter
  • Colab Enterprise 管理者(roles/aiplatform.colabEnterpriseAdmin - Cortex for Meridian をデプロイする場合)
  • Storage オブジェクト ユーザー(roles/storage.objectUser - Cortex for Meridian をデプロイする場合)
  • ワークフロー編集者(roles/workflows.editor - Cortex for Meridian をデプロイする場合)

コンソール

  1. コンソールで、[IAM] ページに移動します。 Google Cloud

    IAM に移動

  2. ソース プロジェクトを選択します。

  3. [**アクセス権を付与**] をクリックします。

  4. 前のステップで作成したデフォルトの Cloud Build サービス アカウントを新しいプリンシパルとして追加します。

  5. [**ロールを選択**] プルダウン メニューで、「Cloud Build サービス アカウント」を検索し、 [**Cloud Build サービス アカウント**] をクリックします。

  6. 前のステップを繰り返して、残りのロールを追加します。

    • サービス アカウント ユーザー
    • BigQuery データ編集者
    • BigQuery ジョブユーザー
    • ログ書き込み
    • Colab Enterprise 管理者Cortex for Meridian をデプロイする場合)
    • Storage オブジェクト ユーザーCortex for Meridian をデプロイする場合)
    • ワークフロー編集者Cortex for Meridian をデプロイする場合)
  7. [保存] をクリックします。

  8. サービス アカウントと対応するロールが IAM ページに表示されていることを確認します。 IAM ロールが付与されました。

gcloud

次のコマンドを使用して、Cloud Build サービス アカウントにロールを付与します。

  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/cloudbuild.builds.builder"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/iam.serviceAccountUser"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/bigquery.dataEditor"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/bigquery.jobUser"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/aiplatform.colabEnterpriseAdmin"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/storage.objectUser"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
      --role="roles/workflows.editor"

次のように置き換えます。

  • SOURCE_PROJECT は、実際のソース プロジェクト ID に置き換えます。
  • CLOUD_BUILD_SA は、Cloud Build サービス アカウントに置き換えます。形式は CLOUD_BUILD_SA@SOURCE_PROJECT.gserviceaccount.com です。

詳細については、IAM ページを使用して Cloud Build サービス アカウントにロールを付与するバケットの IAM ポリシーを設定して管理するをご覧ください。

Cortex for Meridian 用の追加のサービス アカウントを作成する

Cortex Framework をデプロイする場合は、Meridian 用に別のサービス アカウントが必要です。Meridian にデプロイしない場合は、この手順をスキップできます。次の場合は、別のサービス アカウントが必要です。

  • ワークフローと Cloud Build を実行して、Colab Enterprise ノートブックの実行をトリガーする。
  • 次のものにアクセスして Colab Enterprise ノートブックを実行する。
    • Cloud Storage 上のノートブックと構成ファイル。
    • 関連する BigQuery ビューとテーブルに対してクエリを実行します。
    • 結果を Cloud Storage に書き戻します。

次のコマンドを使用して、Cortex for Meridian のサービス アカウントを作成します。


 gcloud iam service-accounts create cortex-meridian-colab-runner --project=SOURCE_PROJECT \
        --description="Cortex for Meridian Colab Runner Service Account" \
        --display-name="Cortex Meridian Runner"

次のように置き換えます。

  • SOURCE_PROJECT は、Cortex for Meridian がデプロイされているプロジェクト ID に置き換えます。
  • cortex-meridian-colab-runner: 必要に応じて、別のサービス アカウント ID を使用できます。cortex-meridian-colab-runner はデフォルトであり、変更すると他のコマンドの調整が必要になる場合があります。

Cortex for Meridian 専用のサービス アカウントに必要な最小限のロールは次のとおりです。

  • BigQuery データ閲覧者(roles/bigquery.dataViewer
  • BigQuery ジョブユーザー(roles/bigquery.jobUser
  • BigQuery 読み取りセッション ユーザー(roles/bigquery.readSessionUser
  • Cloud Build 編集者(roles/cloudbuild.builds.editor
  • Colab Enterprise 管理者(roles/aiplatform.colabEnterpriseAdmin
  • ログ書き込み(roles/logging.logWriter
  • ノートブック ランタイム管理者(aiplatform.notebookRuntimeAdmin
  • ストレージ管理者(roles/storage.admin
  • Storage オブジェクト ユーザー(roles/storage.objectUser
  • Vertex AI Colab サービス エージェント(roles/aiplatform.colabServiceAgent

次のコマンドを使用して、Cortex for Meridian 専用のサービス アカウントにロールを付与します。

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/bigquery.dataViewer'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/bigquery.jobUser'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/bigquery.readSessionUser'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/cloudbuild.builds.editor'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/aiplatform.colabEnterpriseAdmin'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/logging.logWriter'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/aiplatform.notebookRuntimeAdmin'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/storage.admin'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/storage.objectUser'

gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
    --role='roles/aiplatform.colabServiceAgent'

次のように置き換えます。

  • SOURCE_PROJECT は、Cortex for Meridian がデプロイされているプロジェクト ID に置き換えます。
  • cortex-meridian-colab-runner は、Cortex for Meridian のサービス アカウントに置き換えます。

処理 DAG スクリプトと、デプロイ中に生成された一時ファイルを保存するには、Storage バケットが必要です。これらのスクリプトは、デプロイ後にマネージド Airflow または Apache Airflow インスタンスに手動で移動する必要があります。

Storage バケットは、Google Cloud CLI または Google Cloud コンソール から次の手順で作成できます。

コンソール

  1. [Cloud Storage] に移動します。

    Cloud Storage

  2. BigQuery データセットと同じリージョンにバケットを作成します。

  3. 作成したバケットを選択します。

  4. [Permissions] タブに移動します。

  5. Build コマンドを実行するユーザー ID または作成した サービス アカウントに、Storage Object Creator 権限を付与します。詳細については、バケットに新しい条件を設定する: コンソールをご覧ください。

gcloud

  1. 次のコマンドを使用して、Cloud Shell からバケットを作成します。

    gcloud storage buckets create gs://COMPOSER_DAG_BUCKET -l REGION/MULTI_REGION
    

    次のように置き換えます。

    • COMPOSER_DAG_BUCKET は、新しいバケットの名前に置き換えます。
    • REGION/MULTI_REGION は、BigQuery データセットと同じリージョンに置き換えます。
  2. 次のコマンドを使用して、サービス アカウントに Storage Object Creator 権限を割り当てます。

    gcloud storage buckets add-iam-policy-binding gs://COMPOSER_DAG_BUCKET \
        --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
        --role=roles/storage.objectCreator
    

    次のように置き換えます。

    • cortex-deployer は、Cloud Build サービス アカウントに置き換えます。
    • COMPOSER_DAG_BUCKET は、新しいバケットの名前に置き換えます。

ログ用の Storage バケットを作成する

Cloud Build ビルドプロセス用に特定のバケットを作成して、ログを保存できます。これは、ログに保存されるデータを特定のリージョンに制限する場合に便利です。ログ用の Storage バケットは、Google Cloud CLI または Google Cloud コンソールから作成できます。

コンソール

ログ用の特定のバケットを作成する手順は次のとおりです。

  1. [Cloud Storage] に移動します。

    Cloud Storage

  2. デプロイが実行されるリージョンと同じリージョンにバケットを作成します。

  3. 作成したバケットを選択します。

  4. [Permissions] タブに移動します。

  5. Build コマンドを実行するユーザー ID または作成したサービス アカウントに、Storage Object Admin 権限を付与します。詳細については、バケットに新しい条件を設定する: コンソールをご覧ください。

gcloud

ログ用の特定のバケットを作成するには、次のコマンドを使用します。

  1. 次のコマンドを使用して、Cloud Shell からバケットを作成します。

    gcloud storage buckets create gs://LOGS_BUCKET_NAME -l REGION/MULTI_REGION
    

    次のように置き換えます。

    • REGION/MULTI_REGION は、バケットを作成するリージョンに置き換えます。
    • LOGS_BUCKET_NAME は、新しいバケットの名前に置き換えます。
  2. 次のコマンドを使用して、サービス アカウントに Storage Object Admin 権限を割り当てます。

    gcloud storage buckets add-iam-policy-binding gs://LOGS_BUCKET_NAME \
        --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
        --role=roles/storage.objectAdmin
    

    次のように置き換えます。

    • cortex-deployer は、Cloud Build のデフォルト サービス アカウントに置き換えます。
    • LOGS_BUCKET_NAME は、新しいバケットの名前に置き換えます。

次のステップ

このステップが完了したら、次のデプロイ ステップに進みます。

  1. ワークロードを確立する
  2. リポジトリのクローンを作成する
  3. 統合メカニズムを決定する
  4. コンポーネントを設定する(このページ)。
  5. デプロイを構成する
  6. デプロイを実行する