ソース コントロール管理を使用してパイプラインを管理する

このページでは、Git リポジトリを介して Cloud Data Fusion でソース管理を使用してパイプラインを管理する方法について説明します。

ソース コントロール管理について

Cloud Data Fusion には、ETL と ELT 統合のためのパイプラインを視覚的に設計する機能があります。開発と本番環境の間でパイプラインをより適切に管理するために、Cloud Data Fusion では GitHub を使用してパイプラインのソース コントロール管理を行うことができます。

Cloud Data Fusion のソース管理を使用すると、次のことができます。

  • Cloud Data Fusion の各名前空間を GitHub と統合する。
  • パイプラインを中央の Git リポジトリで管理する。
  • パイプラインの変更を確認して監査する。
  • パイプラインの変更を元に戻す。
  • 確実に集中管理しながらチームと効果的に連携する。

準備

  • ソース コントロール管理は、GitHub リポジトリとの統合のみをサポートしています。
  • GitHub OAuth はサポートされていません。
  • ソース コントロール管理はバッチ パイプラインのみをサポートします。
  • ソース コントロール管理は、push オペレーションと pull オペレーションのパイプライン設計 JSON のみをサポートしています。 実行構成はサポートされていません。
  • リンクされたリポジトリのサイズの上限は 5 GB です。

必要なロールと権限

Cloud Data Fusion のソース コントロール管理は、次の 2 つの主要なオペレーションで構成されます。

  • ソース コントロール リポジトリの構成
  • push オペレーションと pull オペレーションを使用したパイプラインと Git リポジトリの同期

ソース コントロール管理機能を使用するために必要な権限を取得するには、プロジェクトに対する次のいずれかの事前定義ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、他の事前定義ロールから取得することもできます。

Git リポジトリを設定する

GitHub で Git リポジトリを作成するには、リポジトリを作成するの手順に従ってください。

GitHub の個人用アクセス トークンの詳細については、次のドキュメントをご覧ください。

Git リポジトリを Cloud Data Fusion に接続する

Cloud Data Fusion では、各名前空間の [ソース コントロール管理] タブで Git リポジトリを構成して接続できます。名前空間を Git リポジトリにリンクするには、次の手順に沿って操作します。

コンソール

  1. Cloud Data Fusion ウェブ インターフェースで、 [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. [リポジトリをリンクする] をクリックします。
  5. 次の詳細情報を入力します。

    • プロバイダ: Git サービス プロバイダを選択します。ソース コントロール管理は GitHub リポジトリとの統合のみをサポートしているため、GitHub を選択します。
    • リポジトリ URL: リポジトリにアクセスできる URL を入力します。GitHub の場合、リポジトリ URL は https://github.com/HOST/REPO です。
    • デフォルトのブランチ(省略可): Git の初期ブランチを入力します。このブランチは、GitHub で構成されているデフォルトのブランチと異なる場合があります。 このブランチは、GitHub のデフォルトのブランチに関係なく、パイプラインを同期するために使用されます。
    • パス接頭辞(省略可): Git リポジトリに保存されるパイプライン名の接頭辞を入力します。たとえば、パイプライン名が DataFusionQuickStart で、接頭辞として namespaceName を指定した場合、パイプラインは Git リポジトリに namespaceName/DataFusionQuickStart として保存されます。
    • 認証タイプ: Cloud Data Fusion では、認証タイプとしてパーソナライズされたアクセス トークンを使用できます。これは自動的に選択されます。
    • トークン名: トークンに関連付けることができる名前を入力します。
    • トークン: GitHub リポジトリから提供されたトークンを入力します。
    • ユーザー名(省略可): トークンのユーザー名またはオーナーを入力します。
  6. [検証] をクリックします。接続が確認されるまで待ちます。

  7. 構成が完了したら、[保存して閉じる] をクリックして構成を確認します。

Git リポジトリを Cloud Data Fusion に接続します。

REST API

  1. 個人用のアクセス トークンを含む Cloud Data Fusion で秘密鍵を作成します。

  2. 次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/securekeys/PASSWORD_SECRET_KEY -X PUT -d '{ "description": "Example Secure Key","data": "PERSONAL_ACCESS_TOKEN"}'
    

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

    • NAMESPACE_ID: 名前空間の ID
    • PASSWORD_SECRET_KEY: 個人用アクセス トークンを含む秘密鍵の名前
    • PERSONAL_ACCESS_TOKEN: GitHub の個人用アクセス トークン
  3. 次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository -X PUT -d '{"test": "TEST_ONLY", "config": {"provider": "PROVIDER_TYPE", "link": "REPO_URL", "defaultBranch": "DEFAULT_BRANCH", "pathPrefix": "PATH_TO_DIRECTORY", "auth": {"type": "AUTH_TYPE", "patConfig": {"passwordName": "PASSWORD_SECRET_KEY", "username": "USER_NAME"}}}}'
    

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

    • NAMESPACE_ID: 名前空間の ID
    • TEST_ONLY: 構成のみを検証し、追加はしない場合は true に設定します。
    • PROVIDER_TYPE: Git プロバイダ名(GITHUB
    • REPO_URL: リンクするリポジトリ URL。https URl を使用します(例: https://github.com/user/repo.git)。
    • DEFAULT_BRANCH: push オペレーションと pull オペレーションに使用されるブランチ。省略した場合は、リポジトリ内のデフォルト構成ブランチ(メインブランチなど)が使用されます。
    • PATH_TO_DIRECTORY: 構成ファイルが格納されているリポジトリ内のディレクトリへのパス
    • AUTH_TYPE: 認証タイプ。 PAT のみがサポートされています。GitHub のきめ細かい個人用アクセス トークンをご覧ください。
    • PASSWORD_SECRET_KEY: 認証タイプ PAT の個人用アクセス トークンを含む秘密鍵の名前
    • USER_NAME: 認証タイプ PAT の場合は、この値を省略できます。

Cloud Data Fusion パイプラインをリモート リポジトリと同期する

名前空間を使用して Git リポジトリを構成したら、パイプラインを push および pull し、Git リポジトリと同期できます。

Cloud Data Fusion から Git リポジトリにパイプラインを push する

複数のデプロイ済みパイプラインを名前空間から Git リポジトリに同期するには、次の手順を行います。

コンソール

  1. Cloud Data Fusion ウェブ インターフェースで、 [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
  5. [名前空間のパイプラインを] タブをクリックします。
  6. Git リポジトリに push するパイプラインを検索して選択します。

    パイプラインの最新バージョンが Git リポジトリに push または Git リポジトリから pull されると、[Git に接続済み] のステータスが Connected になります。パイプラインが GitHub に push されていない場合は、[Git に接続済み] のステータスの表示が空白(-)になります。

    Git リポジトリと同期されている新しいバージョンのパイプラインをデプロイすると、[Git に接続済み] のステータスが Connected から空白(-)に変わります。

  7. [リポジトリに push] をクリックします。

  8. [commit メッセージ] を入力し、[OK] をクリックします。

    push オペレーションが開始され、選択したパイプラインがリモート リポジトリに push されているというメッセージが表示されます。

パイプラインを Cloud Data Fusion から Git リポジトリに push します。

push オペレーションが正常に完了すると、リモート リポジトリに push されたパイプラインの数を示す成功メッセージが表示されます。

push オペレーションが失敗した場合は、GitHub のパイプラインをチェックして、最新バージョンであるかどうかを確認します。push オペレーションが失敗するたびに、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを展開します。

パイプライン設計スタジオから個々のパイプラインを Git リポジトリに push することもできます。

  1. Cloud Data Fusion ウェブ インターフェースで、 [メニュー] をクリックします。
  2. [リスト] をクリックします。
  3. Git リポジトリに push するパイプラインをクリックします。
  4. パイプライン ページで、[アクション] > [リポジトリに push] をクリックします。
  5. [commit メッセージ] を入力し、[OK] をクリックします。

パイプライン設計スタジオからパイプラインを push します。

REST API

  1. Cloud Data Fusion から Git リポジトリに一連のパイプラインを push します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository/apps/push -X POST
    -d '{"apps": ["PIPELINE_NAME_1", "PIPELINE_NAME_2"]}, "commitMessage": "COMMIT_MESSAGE"'
    

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

    • NAMESPACE_ID: 名前空間の ID
    • PIPELINE_NAME_1PIPELINE_NAME_2: push されるパイプラインの名前
    • COMMIT_MESSAGE: Git commit の commit メッセージ

    レスポンスには、push オペレーションの ID が含まれます。次に例を示します。

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. push オペレーションのステータスをポーリングするには、次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/operations/OPERATION_ID
    

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

    • NAMESPACE_ID: 名前空間の ID
    • OPERATION_ID: push オペレーションから受信したオペレーション ID。

    レスポンスには、push オペレーションのステータスが含まれます。次に例を示します。

    RESPONSE
    {
    "id": OPERATION_ID
    "done": True/False
    "status": STARTING/RUNNING/SUCCEEDED/FAILED
    "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]}
    }
    

    push オペレーションが完了したかどうかを確認するには、レスポンスの done プロパティを確認します。オペレーションが失敗した場合は、error プロパティの詳細を確認してください。

Git リポジトリから Cloud Data Fusion にパイプラインを pull する

Git リポジトリから名前空間に複数のパイプラインを同期するには、次の手順を行います。

コンソール

  1. Cloud Data Fusion ウェブ インターフェースで、 [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
  5. [リポジトリ パイプライン] タブをクリックします。Git リポジトリに保存されているすべてのパイプラインが表示されます。
  6. Git リポジトリから Cloud Data Fusion 名前空間に pull するパイプラインを検索して選択します。
  7. [リポジトリから pull] をクリックします。

    pull オペレーションが開始され、選択したパイプラインがリモート リポジトリから pull されているというメッセージが表示されます。Cloud Data Fusion は、構成されたパスで JSON ファイルを検索し、パイプラインとして pull して Cloud Data Fusion に デプロイします。

Git リポジトリから Cloud Data Fusion にパイプラインを pull します。

pull オペレーションが正常に完了すると、リモート リポジトリから pull されたパイプラインの数を示す成功メッセージが表示されます。

pull オペレーションが失敗すると、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを展開します。

また、パイプライン設計スタジオから、Git リポジトリから個々のパイプラインを名前空間に pull することもできます。

  1. Cloud Data Fusion ウェブ インターフェースで、 [メニュー] をクリックします。
  2. [リスト] をクリックします。
  3. Git リポジトリから pull するパイプラインをクリックします。
  4. パイプライン ページで、[アクション] > [リポジトリから pull] をクリックします。

パイプライン設計スタジオからパイプラインを pull します。

REST API

  1. Git リポジトリから Cloud Data Fusion に一連のパイプラインを pull します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository/apps/pull -X POST -d '{"apps": ["PIPELINE_NAME_1", "PIPELINE_NAME_2"]}'
    

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

    • NAMESPACE_ID: 名前空間の ID
    • PIPELINE_NAME_1PIPELINE_NAME_2: pull されるパイプラインの名前

    レスポンスには、pull オペレーションの ID が含まれます。次に例を示します。

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. pull オペレーションのステータスをポーリングするには、次のコマンドを実行します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
    ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/operations/OPERATION_ID
    

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

    • NAMESPACE_ID: 名前空間の ID
    • OPERATION_ID: pull オペレーションから受信したオペレーション ID。

    レスポンスには、pull オペレーションのステータスが含まれます。次に例を示します。

    RESPONSE
    {
    "id": OPERATION_ID
    "done": True/False
    "status": STARTING/RUNNING/SUCCEEDED/FAILED
    "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]}
    }
    

    pull オペレーションが完了したかどうかを確認するには、レスポンスの done プロパティを確認します。オペレーションが失敗した場合は、error プロパティの詳細を確認してください。

Git リポジトリの構成を削除する

Git リポジトリの構成を名前空間から削除するには、次の手順に従います。

コンソール

  1. Cloud Data Fusion ウェブ インターフェースで、 [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. 削除する Git 構成の > [削除] をクリックします。

REST API

Git リポジトリの構成を削除します。

curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository -X DELETE

NAMESPACE_ID は、オペレーションの ID に置き換えます。

次のステップ