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

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

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

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

  • BigQuery インスタンスとデータセット
  • Cloud Build API
  • Cloud Storage バケット
  • サービス アカウント
  • Cloud Resource Manager API
  • Data Catalog API(Datamesh をデプロイする場合)
  • ワークフローの実行(Cortex for Meridian をデプロイする場合)
  • AI プラットフォーム(Cortex for Meridian をデプロイする場合)

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 サービスを有効にできます。

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

実行ユーザーに権限を付与する

Google Cloud コンソールまたは Google Cloud CLI を使用して、Cloud Build がトリガーされるプロジェクトでデプロイを実行する実行ユーザーに次の権限を付与します。

  • Service Usage ユーザー (roles/serviceusage.serviceUsageConsumer)
  • Storage オブジェクト閲覧者(roles/storage.objectViewer
  • ストレージ管理者(roles/storage.admin
  • Cloud Build 編集者(roles/cloudbuild.builds.editor
  • プロジェクト閲覧者(roles/reader
  • BigQuery ジョブユーザー(roles/bigquery.jobUser
  • BigQuery データ編集者(roles/bigquery.dataEditor

コンソール

  1. Google Cloud コンソールで [IAM] ページを開きます。

    [IAM] ページを開く

  2. プロジェクトを選択し、[続行] をクリックします。

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

  4. 実行するユーザーのメールアドレスを入力します。

  5. プルダウン メニューから次のロールを選択します。

    • Service Usage ユーザー (roles/serviceusage.serviceUsageConsumer)
    • Storage オブジェクト閲覧者(roles/storage.objectViewer
    • ストレージ管理者(roles/storage.admin
    • Cloud Build 編集者(roles/cloudbuild.builds.editor
    • プロジェクト閲覧者(roles/reader
    • BigQuery ジョブユーザー(roles/bigquery.jobUser
    • BigQuery データ編集者(roles/bigquery.dataEditor
  6. [保存] をクリックします。

gcloud

ユーザーにロールを付与するには、add-iam-policy-binding コマンドを実行します。

  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="user:USER_EMAIL" \
    --role="roles/serviceusage.serviceUsageConsumer"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="user:USER_EMAIL" \
    --role="roles/storage.objectViewer"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="user:USER_EMAIL" \
    --role="roles/storage.admin"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="user:USER_EMAIL" \
    --role="roles/cloudbuild.builds.editor"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="user:USER_EMAIL" \
    --role="roles/reader"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="user:USER_EMAIL" \
    --role="roles/bigquery.jobUser"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
    --member="user:USER_EMAIL" \
    --role="roles/bigquery.dataEditor"

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

  • SOURCE_PROJECT: ソース プロジェクト ID。
  • USER_EMAIL は、実行するユーザーのメールアドレスに置き換えます。たとえば、user:my-user@example.com です。プリンシパル(member)タイプの完全なリストについては、ポリシー バインディングのリファレンスをご覧ください。

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

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

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

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

始める前に、IAM API を有効にし、認証を設定し、IAM サービス アカウントとロールについて理解しておく必要があります。詳細については、サービス アカウントの作成をご覧ください。

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

コンソール

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

    サービス アカウント

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

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

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

    • 名前: 「cortex-deployer」。
    • 説明: 「Cortex Deployer Service Account」。
    • 表示名: 「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. 次のコマンドを使用して、IAM ポリシーを Google Cloud プロジェクトに追加します。

    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\
    --member="user:USER_EMAIL" \
    --role="roles/iam.serviceAccountTokenCreator"
    

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

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

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

権限を付与する

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

  • 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. Google Cloud コンソールで、[IAM] ページに移動します。

    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:CLOUD_BUILD_SA" \
      --role="roles/cloudbuild.builds.builder"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:CLOUD_BUILD_SA" \
      --role="roles/iam.serviceAccountUser"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:CLOUD_BUILD_SA" \
      --role="roles/bigquery.dataEditor"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:CLOUD_BUILD_SA" \
      --role="roles/bigquery.jobUser"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:CLOUD_BUILD_SA" \
      --role="roles/logging.logWriter"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:CLOUD_BUILD_SA" \
      --role="roles/aiplatform.colabEnterpriseAdmin"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:CLOUD_BUILD_SA" \
      --role="roles/storage.objectUser"
  gcloud projects add-iam-policy-binding SOURCE_PROJECT \
      --member="serviceAccount:CLOUD_BUILD_SA" \
      --role="roles/workflows.editor"

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

  • SOURCE_PROJECT: ソース プロジェクト ID。
  • Cloud Build サービス アカウントの CLOUD_BUILD_SA(形式: CLOUD_BUILD_SA@SOURCE_PROJECT.gserviceaccount.com)。

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

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

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

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

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


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

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

  • PROJECT_ID: 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

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

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/bigquery.dataViewer'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/bigquery.jobUser'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/bigquery.readSessionUser'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/cloudbuild.builds.editor'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/aiplatform.colabEnterpriseAdmin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/logging.logWriter'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/aiplatform.notebookRuntimeAdmin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/storage.admin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/storage.objectUser'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/aiplatform.colabServiceAgent'

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

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

省略可能な手順

デプロイをより適切にカスタマイズするには、次の省略可能な手順を検討してください。

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

次の手順で、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://DAG_BUCKET_NAME -l REGION/MULTI_REGION
    

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

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

    gcloud storage buckets add-iam-policy-binding gs://DAG_BUCKET_NAME --member=serviceAccount:CLOUD_BUILD_SA --role=roles/storage.objectCreator
    

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

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

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

Cloud Build プロセス用に、ログを保存する特定のバケットを作成できます。これは、ログに保存される可能性のあるデータを特定のリージョンに制限する場合に便利です。ログのストレージ バケットは、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:CLOUD_BUILD_SA --role=roles/storage.objectAdmin
    

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

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

次のステップ

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

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