Open8

gcp scheduler

YY

gcloud --version

gcloud tasks queues describe hello-world-queue
--location=us-central1

gcloud tasks queues list --location=us-central1

gcloud config get-value project

YY

プロジェクト名を確認
gcloud config get-value project

dockerの認証
gcloud auth configure-docker

gcloud SDKのアップデート
gcloud components update

gcloudのユーザー確認
gcloud auth list

ログイン
gcloud auth login

APIを有効化
gcloud services enable artifactregistry.googleapis.com

リポジトリを作成
gcloud artifacts repositories create scheduler-demo-repo
--repository-format=docker
--location=us-central1
--description="Repository for scheduler demo"

dockerがリポジトリにアクセスできるように許可する
gcloud auth configure-docker us-central1-docker.pkg.dev

build
push

pushされているか確認
gcloud artifacts repositories list --location=us-central1

YY

docker Buildxとは
Docker Buildxを使用すると、ターゲットアーキテクチャ(例: amd64)を指定してイメージをビルドできます。Cloud Runは amd64/Linux に対応したイメージのみを実行できます。

バージョンの確認
docker buildx version
buildxを有効化
docker buildx create --use

docker buildx build
--platform linux/amd64
-t us-central1-docker.pkg.dev/vscode-extention-demo/scheduler-demo-repo/scheduler-demo:latest
--push .
•--platform linux/amd64: Cloud Runがサポートするアーキテクチャを指定。
• --push: イメージをArtifact Registryに直接プッシュ。

Apple Silicon (M1/M2) Macを使用している場合: デフォルトでは arm64 アーキテクチャのイメージがビルドされますが、Cloud Runは amd64 のみをサポートしているため、必ず --platform linux/amd64 を指定してください。
YY

OIDCサービスアカウントの設定

サービスアカウントを作成または確認

サービスアカウントが既に作成されていない場合は、以下のコマンドで作成します。
gcloud iam service-accounts create scheduler-invoker
--description="Service account for Cloud Scheduler to invoke Cloud Run"
--display-name="Scheduler Invoker"

サービスアカウントに権限を付与

Cloud Runサービスを呼び出す権限をサービスアカウントに付与します。
gcloud run services add-iam-policy-binding scheduler-demo
--region us-central1
--member="serviceAccount:scheduler-invoker@vscode-extention-demo.iam.gserviceaccount.com"
--role="roles/run.invoker"


--oidc-service-account-email="scheduler-invoker@vscode-extention-demo.iam.gserviceaccount.com"

YY

gcloud scheduler jobs create http hello-world-task-job
--schedule="* * * * *"
--uri="https://scheduler-demo-493660275244.us-central1.run.app/"
--http-method=POST
--headers=Content-Type=application/json
--message-body="{"message": "Hello World"}"
--oidc-service-account-email="scheduler-invoker@vscode-extention-demo.iam.gserviceaccount.com"
--location=us-central1

  1. --headers の書き方を修正
    • 修正前: --headers="Content-Type:application/json"
    • 修正後: --headers=Content-Type=application/json
    = を使い、キーと値を直接結びつける形式に変更しました。
    2. --message-body のエスケープ
    • JSONの特殊文字(")をバックスラッシュでエスケープしています。

add location flag
リージョンの整合性
• Cloud SchedulerジョブのリージョンとCloud Runサービスのリージョンを一致させる必要があります。

YY

docker build -t とは?
名前とタグつけ
docker build -t myapp:v1.0 .

myapp という名前の Docker イメージを作成します。
• . は現在のディレクトリ(Dockerfile が存在するディレクトリ)を指定しています。

YY

cloud run deploy
gcloud run deploy <SERVICE_NAME>
--image us-central1-docker.pkg.dev/<PROJECT_ID>/<REPO_NAME>/<IMAGE_NAME>:<TAG>
--region us-central1
--platform managed
--allow-unauthenticated

YY

SQLインスタンスの作成
データベースの作成Cloud Shellから
1.Cloud SQL Auth Proxy を使用してローカルからインスタンスに接続します。
""gcloud sql connect demo-sql --user=postgres""

-- データベースを選択
\c demo_database;

-- 確認
\d users;

アプリの作成
GARリポジトリの作成
docker buildx build and post .
cloud run deploy
 curl -X GET https://cloud-run-sql-app-493660275244.us-central1.run.app/users

curl -X POST https://<CLOUD_RUN_URL>/users \
    -H "Content-Type: application/json" \
    -d '{"name": "Jane Smith", "email": "jane.smith@example.com"}'