パイプライン ジョブを別の Google Cloud プロジェクトに移行する

一般的なタスクとして、Dataflow ジョブをあるGoogle Cloud プロジェクトから別のプロジェクトに移動することがあります。たとえば、テスト環境から本番環境にジョブを移動する場合などです。Dataflow ジョブは、作成されたプロジェクトにバインドされており、別のプロジェクトに直接移行することはできません。ジョブを移動するには、古いプロジェクトでジョブを停止し、新しいプロジェクトで再作成する必要があります。

ジョブを移動するには、次の操作を行います。

  1. 古いプロジェクトでジョブを停止またはドレインします。
  2. 新しいプロジェクトでジョブを再作成します。たとえば、同じパイプライン コード、テンプレート、構成を使用します。
  3. ジョブがアクセスできるように、必要な権限、サービス アカウント、リソースがすべて新しいプロジェクトに正しく設定されていることを確認します。これには、次が含まれます。
    • 権限: パイプラインを実行するユーザーまたはサービス アカウントに、新しいプロジェクトで必要な Identity and Access Management(IAM)ロール(roles/dataflow.adminroles/dataflow.worker など)があることを確認します。
    • サービス アカウント: 新しいプロジェクトでは、Dataflow ワーカー サービス アカウントが異なります。この新しいサービス アカウントに、Cloud Storage バケット、BigQuery データセット、Pub/Sub トピックなど、パイプラインに必要なすべてのリソースへのアクセス権があることを確認します。
    • リソース: パイプラインで Cloud Storage バケット、BigQuery データセット、Pub/Sub トピックなどのリソースを使用する場合は、それらが新しいプロジェクトに存在するか、新しいプロジェクトからアクセスできることを確認する必要があります。新しいリソースを作成するか、プロジェクト横断的な権限を付与する必要がある場合があります。
    • VPC Service Controls: VPC Service Controls を使用している場合は、新しいプロジェクトが同じサービス境界の一部であること、または必要なリソースへのアクセスを許可するように必要なブリッジを構成していることを確認します。

ジョブを再作成すると、新しいジョブとして開始され、古いジョブの状態は保持されません。

プロジェクト ID などのプロジェクト固有のパラメータをハードコードしないようにするには、パイプライン オプションを使用して、これらの値をパイプラインに渡します。

Dataflow ジョブの権限とセキュリティの詳細については、Dataflow のセキュリティと権限をご覧ください。

次のステップ