Cloud Data Fusion でパイプラインの実行に失敗した場合の対処方法
困っていた内容
Cloud Data Fusion を利用して BigQuery へのバッチパイプラインを作成したところ、デプロイは完了するのですがパイプラインの実行に失敗します。
-
デプロイを実行
-
デプロイの完了後にパイプラインを実行
-
パイプラインの実行に失敗
パイプラインの各ノード上では Errors: 0 と表示されているのに、なぜパイプラインの実行に失敗するのでしょうか。確認が必要な設定箇所があれば教えてください。
回答
Cloud Data Fusion 利用開始時に作成されるサービス エージェント(service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com)に対して、サービスアカウントユーザーロール (roles/iam.serviceAccountUser)が付与されているかご確認ください。
説明
Cloud Data Fusion はパイプラインの実行時に、一時的な Dataproc クラスターを自動作成してデータを処理します。
Cloud Data Fusion の動作
Cloud Data Fusion サービス:パイプラインの管理・監視を行う
Dataproc クラスター:実際のデータ処理を実行する
また、Cloud Data Fusion においては、以下の 2 つのサービスアカウントが連携して動作しています。
サービスアカウント | 説明 |
---|---|
service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com |
サービスエージェント。Cloud Data Fusion APIサービスエージェントと呼ばれ、Cloud Data Fusionがお客様のリソースにアクセスするために作成されるため、お客様に代わって動作できます。テナントプロジェクトでお客様のプロジェクトのリソースにアクセスするために使用されます。たとえば、プレビューはDataprocクラスタではなくメモリで実行されます。 |
CUSTOMER_PROJECT_NUMBER-compute@developer.gserviceaccount.com |
他のGoogle CloudリソースにアクセスするジョブをデプロイするためにCloud Data Fusionが作成するデフォルトのCompute Engineサービスアカウント。デフォルトでは、パイプラインの実行中にCloud Data FusionがDataprocリソースにアクセスできるようにするために、DataprocクラスタVMに接続されています。Cloud Data FusionのEnterpriseエディションでは、Cloud Data Fusionコンソール→[システム管理者]→[構成]タブに移動してプロファイルを作成し、カスタムサービスアカウントを追加することによって、ユーザーが管理するサービスアカウントからパイプラインを実行できます。バージョン6.2.3以降では、Cloud Data Fusionインスタンスを作成するときにDataprocクラスタに接続されるカスタムサービスアカウントを選択できます。詳しくは、Dataprocのサービスアカウントをご覧ください。 |
Cloud Data Fusion が、他の Google Cloud サービス(BigQuery、Cloud Storage 等)へアクセスする際に、一時的に作成した Dataproc クラスターのサービスアカウント(CUSTOMER_PROJECT_NUMBER-compute@developer.gserviceaccount.com)を利用します。作成したリソースのサービスアカウントを利用する為には、サービスアカウントユーザーロール (roles/iam.serviceAccountUser)が必要となります。
権限付与の手順
Google Cloud コンソールを利用して、サービスエージェントにサービスアカウントユーザーロール (roles/iam.serviceAccountUser)を付与する手順をご紹介します。
-
IAM ページにおいて「Google 提供のロール付与を含める」にチェックを入れます
-
Cloud Data Fusion API サービスエージェントを選択してから、画面右にある編集ボタンを押下します
-
「別のロールを追加」ボタンを押下します
-
ロール検索でサービスアカウントユーザーを選択します
-
サービスアカウントユーザーロールが追加されたことを確認して「保存」ボタンを押下します
以上で、サービスエージェントにサービスアカウントユーザーロールを付与できました。
まとめ
Cloud Data Fusion のパイプライン実行失敗時は、まずはサービスエージェントにサービスアカウントユーザーロールが付与されているかご確認ください。
この記事がどなたかのお役に立てば幸いです。