Python×Cloud Run: サーバーレスで自動化を劇的効率化

IT・プログラミング

Python×Cloud Run: サーバーレスで自動化を劇的効率化

PythonスクリプトをCloud Runでサーバーレスに実行し、タスク自動化を劇的に効率化する方法を解説します。環境構築、デプロイ、スケジュール実行までを網羅し、インフラ管理から解放され、開発に集中できる環境を構築します。

Cloud Runとは

Cloud Runは、Google Cloudが提供するサーバーレスのコンテナ実行プラットフォームです。コンテナイメージをデプロイするだけで、インフラの管理を気にせずにアプリケーションを実行できます。自動スケーリングや従量課金制により、コスト効率の高い運用が可能です。

PythonスクリプトをCloud Runで実行するメリット

  • インフラ管理からの解放: サーバーの構築やメンテナンスが不要になります。
  • 自動スケーリング: トラフィックに応じて自動的にスケールします。
  • 従量課金制: 実際に使用したリソースに対してのみ課金されます。
  • 簡単なデプロイ: Dockerコンテナイメージをデプロイするだけで実行できます。

環境構築

必要なツール

  • Python 3.6以上
  • Docker
  • Google Cloud SDK (gcloud)

Google Cloud SDKのインストールと設定

Google Cloud SDKをインストールし、初期設定を行います。

gcloud init
gcloud config set project YOUR_PROJECT_ID

Dockerイメージの作成

PythonスクリプトをDockerコンテナイメージとしてパッケージングします。

Dockerfileの作成

Dockerfileを作成し、必要な依存関係をインストールします。

FROM python:3.9-slim-buster

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "your_script.py"]

requirements.txtの作成

必要なPythonパッケージを記述したrequirements.txtファイルを作成します。

requests
beautifulsoup4

Dockerイメージのビルドとプッシュ

Dockerイメージをビルドし、Google Container Registryにプッシュします。

docker build -t gcr.io/YOUR_PROJECT_ID/your-image:latest .
docker push gcr.io/YOUR_PROJECT_ID/your-image:latest

Cloud Runへのデプロイ

Cloud RunにDockerイメージをデプロイします。

gcloud run deploy your-service \
    --image gcr.io/YOUR_PROJECT_ID/your-image:latest \
    --platform managed \
    --region YOUR_REGION \
    --allow-unauthenticated

スケジュール実行

Cloud SchedulerとCloud Pub/Subを使用して、定期的にPythonスクリプトを実行します。

Cloud Pub/Subトピックの作成

gcloud pubsub topics create your-topic

Cloud Schedulerジョブの作成

Cloud Schedulerジョブを作成し、Cloud Pub/Subトピックにメッセージを送信します。

gcloud scheduler jobs create pubsub your-scheduled-job \
    --schedule "0 0 * * *" \
    --topic your-topic \
    --message-body "run"

Cloud Runトリガーの設定

Cloud Pub/Subからのメッセージをトリガーとして、Cloud Runサービスを実行するように設定します。

(Cloud Runの設定はGUI上で行うのが簡単です。)

まとめ

PythonスクリプトをCloud Runでサーバーレスに実行することで、インフラ管理から解放され、タスク自動化を劇的に効率化できます。ぜひ試してみてください。

コメント

タイトルとURLをコピーしました