このページでは、Git リポジトリを介して Cloud Data Fusion でソース管理を使用してパイプラインを管理する方法について説明します。
ソース コントロール管理について
Cloud Data Fusion には、ETL と ELT 統合のためのパイプラインを視覚的に設計する機能があります。開発と本番環境の間でパイプラインを適切に管理するため、Cloud Data Fusion では、GitHub などのバージョン管理システムを使用してパイプラインのソース コントロール管理を行うことができます。
Cloud Data Fusion のソース コントロール管理を使用すると、次のことができます。
- 各 Cloud Data Fusion の名前空間をバージョン管理システムと統合する。
- 一元的な Git リポジトリでパイプラインを管理する。
- パイプラインの変更を確認して監査する。
- パイプラインの変更を元に戻す。
- 確実に集中管理しながらチームと効果的に連携する。
始める前に
- ソース コントロール管理は、GitHub、Bitbucket Server、Bitbucket Cloud、Gitlab リポジトリとの統合をサポートしています。
- GitHub OAuth はサポートされていません。
- ソース コントロール管理はバッチ パイプラインのみをサポートします。
- ソース コントロール管理は、push オペレーションと pull オペレーションのパイプライン設計 JSON のみをサポートしています。 実行構成はサポートされていません。
- リンクされたリポジトリのサイズの上限は 5 GB です。
必要なロールと権限
Cloud Data Fusion のソース コントロール管理は、次の 2 つの主要なオペレーションで構成されます。
- ソース コントロール リポジトリの構成
- push オペレーションと pull オペレーションを使用してパイプラインを Git リポジトリと同期
ソース コントロール管理機能を使用するために必要な権限を取得するには、プロジェクトに対する次のいずれかの事前定義ロールを付与するよう管理者に依頼してください。
ソース コントロール リポジトリを構成します。
- Cloud Data Fusion オペレータ(
roles/datafusion.operator
) - Cloud Data Fusion 編集者(
roles/datafusion.editor
) - Cloud Data Fusion 管理者(
roles/datafusion.admin
)
- Cloud Data Fusion オペレータ(
Namespace からの push オペレーションまたは pull オペレーションを使用してパイプラインを同期します。
- Cloud Data Fusion オペレータ(
roles/datafusion.operator
) - Cloud Data Fusion デベロッパー(
roles/datafusion.developer
) - Cloud Data Fusion 編集者(
roles/datafusion.editor
) - Cloud Data Fusion 管理者(
roles/datafusion.admin
)
- Cloud Data Fusion オペレータ(
ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、他の事前定義ロールから取得することもできます。
Git リポジトリを設定する
GitHub で Git リポジトリを作成するには、リポジトリを作成するの手順に従ってください。
GitHub やその他のバージョン管理システムの個人用アクセス トークンの詳細については、次のページをご覧ください。
GitHub: 個人用アクセス トークンの作成ときめ細かい個人用アクセス トークンの作成
Git リポジトリを Cloud Data Fusion に接続する
Cloud Data Fusion では、各名前空間の [ソース コントロール管理] タブで Git リポジトリを構成して接続できます。名前空間を Git リポジトリにリンクする手順は次のとおりです。
Console
- Cloud Data Fusion Studio で、 [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- [リポジトリをリンクする] をクリックします。
次の詳細情報を入力します。
- プロバイダ: [GitHub] や [GitLab] などの Git サービス プロバイダを選択します。
- リポジトリの URL: リポジトリにアクセスできる URL を入力します。GitHub の場合、リポジトリの URL は
https://github.com/HOST/REPO
です。 - デフォルト ブランチ(省略可): Git の初期ブランチを入力します。このブランチは、GitHub で構成されているデフォルトのブランチと異なる場合があります。 このブランチは、GitHub のデフォルト ブランチに関係なく、パイプラインの同期に使用されます。
- パス接頭辞(省略可): Git リポジトリに保存されるパイプライン名の接頭辞を入力します。たとえば、パイプライン名が
DataFusionQuickStart
で、接頭辞をnamespaceName
として指定すると、パイプラインは Git リポジトリにnamespaceName/DataFusionQuickStart
として保存されます。 - 認証タイプ: Cloud Data Fusion では、認証タイプとしてパーソナライズされたアクセス トークンを使用できます。これは自動的に選択されます。
- トークン名: トークンに関連付けることができる名前を入力します。
- トークン: GitHub リポジトリから提供されたトークンを入力します。
- 省略可: ユーザー名: トークンのユーザー名またはオーナーを入力します。
[検証] をクリックします。接続が検証されるまで待ちます。
構成が完了したら、[保存して閉じる] をクリックして構成を確認します。
REST API
Cloud Data Fusion で、個人用アクセス トークンを含むシークレット キーを作成します。
次のコマンドを実行します。
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 の個人用アクセス トークン
次のコマンドを実行します。
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 リポジトリに同期するには、次の操作を行います。
Console
- Cloud Data Fusion Studio で、 [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
- [名前空間のパイプラインを] タブをクリックします。
Git リポジトリに push するパイプラインを検索して選択します。
パイプラインの最新バージョンが Git リポジトリに push または Git リポジトリから pull されると、[Git に接続済み] のステータスが
Connected
になります。パイプラインが GitHub に push されていない場合は、[Git に接続済み] のステータスの表示が空白(-
)になります。Git リポジトリと同期されている新しいバージョンのパイプラインをデプロイすると、[Git に接続済み] のステータスが
Connected
から空白(-
)に変わります。[リポジトリに push] をクリックします。
[commit メッセージ] を入力し、[OK] をクリックします。
push オペレーションが開始され、選択したパイプラインがリモート リポジトリに push されていることを示すメッセージが表示されます。
push オペレーションが正常に完了すると、リモート リポジトリに push されたパイプラインの数を示す成功メッセージが表示されます。
push オペレーションが失敗した場合は、GitHub でパイプラインが最新バージョンかどうかを確認します。失敗した push オペレーションごとに、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを開きます。
また、パイプライン設計スタジオから、個々のパイプラインを Git リポジトリに push することもできます。
- Cloud Data Fusion Studio で、 [メニュー] をクリックします。
- [リスト] をクリックします。
- Git リポジトリに push するパイプラインをクリックします。
- パイプライン ページで、[アクション] > [リポジトリに push] をクリックします。
- [commit メッセージ] を入力し、[OK] をクリックします。
REST API
一連のパイプラインを 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_1
、PIPELINE_NAME_2
: push されるパイプラインの名前COMMIT_MESSAGE
: Git commit の commit メッセージ。
レスポンスには、push オペレーションの ID が含まれます。例:
RESPONSE { "id": OPERATION_ID }
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 リポジトリから複数のパイプラインを名前空間に同期するには、次の操作を行います。
Console
- Cloud Data Fusion Studio で、 [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
- [リポジトリ パイプライン] タブをクリックします。 Git リポジトリに保存されているすべてのパイプラインが表示されます。
- Git リポジトリから Cloud Data Fusion Namespace に pull するパイプラインを検索して選択します。
[リポジトリから pull] をクリックします。
pull オペレーションが開始され、選択したパイプラインがリモート リポジトリから pull されていることを示すメッセージが表示されます。Cloud Data Fusion は、構成されたパスで JSON ファイルを検索し、パイプラインとして pull して Cloud Data Fusion に デプロイします。
pull オペレーションが正常に完了すると、リモート リポジトリから pull されたパイプラインの数を示す成功メッセージが表示されます。
pull オペレーションが失敗すると、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを開きます。
また、パイプライン設計スタジオから、Git リポジトリから個々のパイプラインを名前空間に pull することもできます。
- Cloud Data Fusion Studio で、 [メニュー] をクリックします。
- [リスト] をクリックします。
- Git リポジトリから pull するパイプラインをクリックします。
- パイプライン ページで、[アクション] > [リポジトリから pull] をクリックします。
REST API
一連のパイプラインを 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_1
、PIPELINE_NAME_2
: pull されるパイプラインの名前
レスポンスには、pull オペレーションの ID が含まれます。例:
RESPONSE { "id": OPERATION_ID }
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 リポジトリの構成を名前空間から削除するには、次の手順に従います。
Console
- Cloud Data Fusion Studio で、 [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- 削除する 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 に置き換えます。
次のステップ
- 詳細については、GitHub リポジトリを使用してパイプラインを管理するをご覧ください。