Cloud Tasks キューに App Engine タスクを追加する
このクイックスタートでは、Cloud Tasks API を使用して App Engine タスクを Cloud Tasks キューに追加する方法について説明します。
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 Google Cloud、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。ロールを付与する方法を確認する。
-
プロジェクトを作成する Google Cloud :
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Cloud Resource Manager API と Cloud Tasks API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(
roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する。gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
ローカルシェルを使用している場合は、ユーザー アカウントのローカル認証情報を作成します。
gcloud auth application-default login
Cloud Shell を使用している場合は、この操作を行う必要はありません。
認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認します。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。ロールを付与する方法を確認する。
-
プロジェクトを作成する Google Cloud :
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Cloud Resource Manager API と Cloud Tasks API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(
roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する。gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
ローカルシェルを使用している場合は、ユーザー アカウントのローカル認証情報を作成します。
gcloud auth application-default login
Cloud Shell を使用している場合は、この操作を行う必要はありません。
認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認します。
- App Engine を使用すると、
App Engine のデフォルトのサービス アカウント
が自動的に作成されます。このクイックスタートを試す場合は、このサービス アカウントを使用できます。ただし、組織のポリシーの構成によっては、デフォルトのサービス アカウントにプロジェクトに対する
Editorロールが自動的に付与されない場合があります。その場合は、 サービス アカウントに 次のロールを 付与する必要があります:- Artifact Registry 管理者(
roles/artifactregistry.admin) - Artifact Registry の Create-on-Push ライター(
roles/artifactregistry.createOnPushWriter) - Compute 管理者(
roles/compute.admin) - ログ ライター(
roles/logging.logWriter) - Storage オブジェクト閲覧者(
roles/storage.objectViewer)
- Artifact Registry 管理者(
App Engine アプリケーションを追加する
App Engine タスクをターゲットにする場合、App Engine スタンダード環境にアプリをデプロイする前に、 App Engine アプリケーション をプロジェクトに追加する必要があります。
コンソールで、[App Engine] ページに移動します。 Google Cloud
[App Engine へようこそ] ダイアログで、次のいずれかを行います。
App Engine アプリケーションをすでに作成していて、[App Engine アプリケーションが作成されました] というメッセージが表示されている場合は、このセクションの残りの手順をスキップして、サンプルをインストールしてデプロイするセクションの手順に進みます。
または
App Engine アプリケーションを作成していない場合は、[アプリケーションを作成] をクリックして、このセクションの残りの手順に進みます。
アプリケーションのリージョンを選択して メモします。
Cloud Tasks コマンドでは、
europe-westとus-centralはそれぞれeurope-west1とus-central1と呼ばれます。サービス アカウントを選択しないでください。デフォルトの App Engine サービス アカウントが使用されます。
[次へ] をクリックします。
アプリケーションが構成され、作成されます。完了まで数分かかる場合があります。
Cloud SDK はダウンロードせずに、[後で行う] をクリックします。
[App Engine アプリケーションが作成されました] というメッセージが表示されます。
サンプルをインストールしてデプロイする
このクイックスタートで使用する Node.js サンプルは 2 つのファイルで構成されています。createTask.js はコマンドライン ツールとしてローカルで実行され、タスクを作成して Tasks キューに追加します。server.js はワーカー サービスとして App Engine にデプロイされ、タスクを処理します。
ターミナルで、ローカルマシンにサンプルアプリ リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitサンプルコードが含まれるディレクトリに移動します。
cd nodejs-docs-samples/cloud-tasks/snippetsNode.js パッケージ管理システムを使用してすべての依存関係をインストールします。
NPM を使用できます。
npm installまたは、Yarn を使用することもできます。
yarn installワーカー サービス(
server.js)を App Engine スタンダード環境にデプロイします。gcloud app deploy app.yamlサービスを含むアプリが実行されていることを確認します。
gcloud app browseブラウザで、提供されたリンクに移動します。次に例を示します。
https://PROJECT_ID.uc.r.appspot.com/Hello, World!と表示されます。
Cloud Tasks キューを作成する
gcloud tasks queues create
コマンドを使用して、準備した環境にキューを作成します。
ターミナルで、すべてのオペレーションをロギングするキューを作成します。
gcloud tasks queues create QUEUE_NAME \ --log-sampling-ratio=1.0 \ --location=REGION以下を置き換えます。
QUEUE_NAME: Cloud Tasks キューの名前REGION: アプリをデプロイしたリージョン
キューが初期化されるまで待ってから、正常に作成されたことを確認します。
gcloud tasks queues describe QUEUE_NAME \ --location=REGION出力例を以下に示します。
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_NAME rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Cloud Tasks キューにタスクを追加する
タスクを作成して作成したキューに追加し、そのタスクをワーカー サービスに配信します。
次の環境変数を設定します。クライアントは、この情報を使用してリクエストを作成します。
export PROJECT_ID=PROJECT_ID export LOCATION_ID=REGION export QUEUE_ID=QUEUE_NAMEペイロードとして
helloを含めたタスクを作成して、キューに追加します。 ペイロードは、ワーカー サービスがタスクを処理するために必要とするリクエストのデータです。node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID helloワーカー サービスのログを表示して、タスクが実行されたことを確認します。
gcloud app logs readログは次のようになります。
2024-06-20 15:00:00 default[20240620t143852] "POST /log_payload HTTP/1.1" 200 2024-06-20 15:00:00 default[20240620t143852] App listening on port 8081 2024-06-20 15:00:00 default[20240620t143852] Press Ctrl+C to quit. 2024-06-20 15:00:00 default[20240620t143852] Received task with payload: hello
クリーンアップ
このページで使用したリソースについて、アカウントに課金されないようにするには、リソースを含むプロジェクトを削除します。 Google Cloud Google Cloud
プロジェクトを削除する: Google Cloud
gcloud projects delete PROJECT_ID
または、作成したリソースを削除することもできます。
以下のように、Cloud Tasks キューを削除します。
gcloud tasks queues delete QUEUE_NAME \ --location=REGION