コンテンツに移動
データ分析

Cloud Run と Cloud Schedule を使用して GCP のコマンドをスケジュールする

2022年8月2日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 8 月 2 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud CLI を使用することで、エンジニアは Google Cloud Platform 上での初期開発を素早く簡単に行うことができ、多くの一般的なクラウドタスクを実行できます。初期開発の多くは、gsutil や gcloud のようなツールを使用してコマンドライン インターフェースで行われますが、コードを本番環境で使用するには、前処理や後処理が必要なコードを書くか API レベルの統合を構築する必要があります。

デベロッパーは多くの場合、スケジュールに合わせて、本番環境で簡単なコマンドを実行しなければなりません。これを適切に行うためには、Data Fusion や Cloud Composer のようなオーケストレーション ツール内でコーディングし、スケジュールを作成する必要があります。

ひとつの例は、あるバケットから別のバケットへオブジェクトをコピー(例: GCS から GCS、または S3 から GCS)することで、これには一般的に gsutil が使用されます。Gsutil は Python アプリケーションで、コマンドラインから Google Cloud Storage にアクセスすることが可能です。バケットやオブジェクトの管理タスク(バケットの作成および削除、オブジェクトのアップロード、ダウンロード、削除、コピー、移動など)を含む幅広い機能を実行できます。

この投稿では、Cloud Run と Cloud Scheduler を使用して Gsutil のようなコマンドをスケジュールするための、洗練された効率的な方法をご紹介します。この方法によって、API レベルの統合を構築するための事前準備や設定にかかる労力を減らし、時間を節約することができます。

このソリューションの完全なソースコードは、GitHub 内にあります。

このプロセスのアーキテクチャは次のとおりです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Scheduling_a_command.max-1800x1800.jpg

使用されている Google Cloud Platform(GCP)サービスは次の 3 つです。

  • Cloud Run: コードはコンテナ内でラップされ、gcloud SDK がインストールされます(もしくは、すでにインストール済みの gcloud SDK でベースイメージを使用することも可能です)。

  • Cloud Scheduler: Cloud Scheduler ジョブは Cloud Run で作成されたジョブを定期的なスケジュールや頻度で呼び出します。

  • Cloud Storage: Google Cloud Storage(GCS)は、さまざまな大きさのデータの保存や復元に使用されます。

この例では、Cloud Run と Cloud Scheduler の環境を構築する必要があります。Cloud Run ジョブを作成してコンテナイメージとしてパッケージ化し、それを Container Registry にアップロードして、Cloud Run にデプロイします。さらに、ジョブのモニタリング機能を構築し、アラートを作成できます。これを実現するための手順は、以下のとおりです。

ステップ 1: サービス(Cloud Scheduler、Cloud Run)を有効にし、サービス アカウントを作成する。

読み込んでいます...

ユーザー管理のサービス アカウントを使用して Cloud Run サービスをデプロイするには、そのサービス アカウントの権限を借用できる権限(am.serviceAccounts.actAs)が必要です。この権限は、roles/iam.serviceAccountUser IAM ロールによって付与されます。

読み込んでいます...

ステップ 2: docker イメージを作成し、GCR に push する。  gcs-to-gcs フォルダに移動し、イメージを push する。

読み込んでいます...

ステップ 3: GCS_SOURCE と GCS_DESTINATION を使用して gcs-to-gcs バケットのためのジョブを作成する。この際、roles/storage.legacyObjectReader の権限を GCS_SOURCE に、roles/storage.legacyBucketWriter の権限を GCS_DESTINATION に付与する。

読み込んでいます...

ステップ 4: ジョブを実行するためのスケジュールを作成する。

読み込んでいます...

ステップ 5: Cloud Run が失敗していないかを確認するためのモニタリングとアラートを作成する。

Cloud Run は Cloud Monitoring と自動的に統合され、設定や構成の必要はありません。Cloud Run サービスの指標は、実行中に自動的に取得されます。

指標は、Cloud Monitoring またはコンソールの Cloud Run ページで確認できます。Cloud Monitoring では、グラフとフィルタのオプションがより充実しています。Cloud Run で指標を作成し確認するにはこの手順を実施してください。

ブログ内で説明した手順は、デベロッパーに最もよく使用されている CLI コマンドを、本番環境でスケジュール通りに呼び出すシンプルな方法です。上記のコードと例は、簡単に使用でき、gsutil や gcloud などのコマンドをスケジュールするための API レベルの統合を不要にするうえで役立ちます。

- 戦略的クラウド エンジニア Bipin Upadhyaya

- クラウド コンサルタント Akanksha Khushboo
投稿先