Cloud Tasks キューのクイックスタート

次の手順では、Cloud Tasks API を通じて Cloud Tasks キューを使用する基本オペレーションを試すことができます。

  1. 始める前に(環境のセットアップ)
  2. サンプルコードのセットアップ
  3. キューを作成する
  4. タスクを作成してキューに追加する
  5. リソースをクリーンアップする

始める前に

Cloud 環境を設定するには、GCP プロジェクトを作成し、課金を有効にして App Engine アプリケーションを追加します。キューを実行するには、プロジェクトに有効な App Engine アプリケーションが必要です。GCP プロジェクト、App Engine アプリケーション、課金の詳細については、こちらをご覧ください。

  1. GCP プロジェクトを作成または選択する:
    [App Engine] ページに移動
    1. 右上のボタンを使用して既存のプロジェクト名を選択するか、新しいプロジェクトを作成します。
    2. 左上のプルダウン ボックスのプロジェクト ID をメモします。これは、Cloud Tasks リクエストのパラメータとなります。
  2. App Engine アプリケーションをプロジェクトに追加します。
    1. [App Engine へようこそ] ページで [アプリケーションを作成] をクリックします。
    2. アプリケーションのリージョンを選択します。 このロケーションは、Cloud Tasks リクエストの LOCATION_ID パラメータとして使用するため、メモしておいてください。 App Engine コマンドで europe-west および us-central と呼ばれる 2 つのロケーションは、Cloud Tasks コマンドではそれぞれ europe-west1 および us-central1 と呼ばれます。
    3. [開始] ページで [次へ] をクリックするだけです。他のことは後で対応します。新しいプロジェクトの場合、バックエンドが作成されます。
    4. [課金を有効にする] ポップアップが表示されたら、請求先アカウントを選択します。まだ請求先アカウントがない場合は、[請求先アカウントの作成] をクリックしてウィザードの手順を行います。
    5. [次のステップ] ページで [後で行う] をクリックします。後でサンプルにアクセスして SDK をダウンロードします。

  3. Cloud Tasks API を有効にします。
    Cloud Tasks API のページに移動
  4. API の認証を設定します。
    1. 手順に沿ってサービス アカウントを作成します。アカウントに関連付けられた JSON キーを持つファイルをダウンロードして、ローカルに保存します。 サービス アカウントを使用すると、Google Cloud でプログラムで認証できます。
    2. このサンプルでは、Google Cloud クライアント ライブラリを使用して App Engine とやり取りします。このため、前のステップでダウンロードしたキーを参照するように環境変数を設定する必要があります。このキーは、ライブラリがリクエストを認証する際に使用します。クライアント ライブラリを使用せずにリクエストを作成することも可能ですが、ライブラリを使用したほうが、認証などのサーバーとの低レベルの通信を管理しやすくなります。
  5. Cloud SDK をインストールして設定します。これにより、gcloud ツールにアクセスできるようになります。

サンプルのセットアップ

これらのサンプルは、Cloud Tasks API を通じて Cloud Tasks キューにタスクを追加するためのフレームワークを提供します。

C#

C# サンプルは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるアプリ(CreateAppEngineTask)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるアプリ(CloudTasks)の 2 つのアプリで構成されます。キュー自体は App Engine 上で実行されます。

サンプルをダウンロードしてインストールするには:

  1. .NET Core SDK バージョン 2.0 以降がインストールされていることを確認します。

  2. gcloud ツールが初期化されていて、前述の手順で作成した GCP プロジェクトを使用するように構成されていることを確認します。

  3. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples

  4. CreateTask のサンプルコードが含まれるディレクトリに移動します。

    cd dotnet-docs-samples/cloudtasks/api/TasksSample/

  5. すべての依存関係をインストールします。

    dotnet restore

  6. CloudTasks のサンプルコードが含まれているディレクトリ(dotnet-docs-samples/cloudtasks/appengine/)に移動し、すべての依存関係をインストールします。

    dotnet restore

  7. アプリケーションをコンパイルしてデプロイできるように準備します。

    dotnet publish

  8. ワーカー サービス(CloudTasks)を App Engine フレキシブル環境にデプロイします。

    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml

  9. インデックス ページが配信されていることを確認します。

    gcloud app browse

    ブラウザで https://{YOUR_PROJECT_ID}.appspot.com/ が開き、Hello, World! が表示されます。

Python

Python サンプルアプリは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(create_app_engine_queue_tasks.py)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(main.py)の 2 つのアプリで構成されます。キュー自体は App Engine 上で実行されます。

サンプルをダウンロードしてインストールするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

  2. サンプルコードが含まれているディレクトリに移動します。

    cd python-docs-samples/appengine/flexible/tasks/

  3. すべての依存関係をインストールします。

    pip install -r requirements.txt

  4. gcloud ツールが初期化されていて、前の手順で作成したプロジェクトを使用するように構成されていることを確認します。

  5. ワーカー サービス(main.py)を App Engine にデプロイします。

    gcloud app deploy

  6. インデックス ページが配信されていることを確認します。

    gcloud app browse

    ブラウザで https://{YOUR_PROJECT_ID}.appspot.com/ が開き、Hello, World! が表示されます。

Java

Java 8 サンプルアプリは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(CreateTask.java)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(TaskServlet.java)の 2 つのファイルで構成されます。キュー自体は App Engine 上で実行されます。Java 11 を使用してサンプルを実行するには、Java 11 で非同期でコード実行をご覧ください。

注: この Java サンプルアプリを使用するには、次の追加コンポーネントが必要です。

  • Maven
  • Cloud SDK 用の app-engine-java コンポーネント
  • サンプル用に提供された pom.xml ファイルですでに指定されている App Engine Maven プラグイン

こうしたコンポーネントの詳細については、Apache Maven と App Engine プラグインの使用Maven プラグインのゴールとパラメータをご覧ください。

サンプルをダウンロードしてインストールするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

  2. Tasks サンプルの最上位ディレクトリに移動します。

    cd java-docs-samples/appengine-java8/tasks/quickstart/

  3. gcloud ツールが初期化されていて、前の手順で作成したプロジェクトを使用するように構成されていることを確認します。

  4. ローカル コマンドライン ツール(CreateTask.java)をビルドして実行します。

    mvn appengine:run

  5. ワーカー サービス(TaskServlet.java)を App Engine にデプロイします。

    mvn appengine:deploy

PHP

PHP サンプルは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(/snippets/src/create_task.php)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(/apps/handler/index.php)の 2 つのアプリで構成されます。キュー自体は App Engine 上で実行されます。

サンプルをダウンロードしてインストールするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples

  2. Tasks サンプルの最上位ディレクトリに移動します。

    cd php-docs-samples/appengine/php72/tasks

    tasks ディレクトリには、2 つのサブディレクトリが表示されます。

    • apps/handler: App Engine にデプロイするワーカー サービスのコードが含まれています。
    • snippets: ローカルコマンドラインツールのコードが含まれています。
  3. Composer がインストールされていることを確認します。ローカルで使用する場合は、composer.phar が両方のサブディレクトリにあることを確認してください。ローカルで実行する方法とグローバルで実行する方法については、Composer のドキュメントを参照してください。

  4. snippets ディレクトリに、すべての依存関係をインストールします。

    composer install
    ローカルのみの場合:
    php composer.phar install

  5. apps/handler ディレクトリに、すべての依存関係をインストールします。

    composer install
    ローカルのみの場合:
    php composer.phar install

  6. gcloud ツールが初期化されていて、前述の手順で作成した GCP プロジェクトを使用するように構成されていることを確認します。

  7. apps/handler ディレクトリから gcloud app deploy コマンドを使用して、App Engine にワーカー サービスをデプロイします。

    gcloud app deploy

  8. サービスを含むアプリが実行されていることを確認します。

    gcloud app browse

    ブラウザで https://{YOUR_PROJECT_ID}.appspot.com/ が開き、Hello, World! が表示されます。

Go

Golang サンプルは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(tasks/create_task/create_task.go)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(tasks/handle_task/handle_task.go)の 2 つのアプリで構成されます。キュー自体は App Engine 上で実行されます。

サンプルをダウンロードしてインストールするには:

  1. gcloud App Engine Go コンポーネントがインストールされていることを確認します。

    gcloud components install app-engine-go

  2. gcloud ツールが初期化されていて、前の手順で作成したプロジェクトを使用するように構成されていることを確認します。

  3. ローカルマシンにサンプルアプリのリポジトリをコピーします。

    go get github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/tasks/...

  4. ワーカー サンプルコードの tasks/handle_task ディレクトリに移動します。

    cd golang-samples/appengine/go11x/tasks/handle_task

  5. app.yaml ファイルに注意してください。このファイルには必要な構成情報が含まれています。

  6. ワーカー サービス(handle_task.go)を App Engine にデプロイします。

    gcloud app deploy

  7. サービスを含むアプリが実行されていることを確認します。

    gcloud app browse

    ブラウザで https://{YOUR_PROJECT_ID}.appspot.com/ が開き、Hello, World! が表示されます。

Node.js

Node.js サンプルは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(createTask.js)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(server.js)の 2 つのアプリで構成されます。キュー自体は App Engine 上で実行されます。

サンプルをダウンロードしてインストールするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。

    git clone https://github.com/googleapis/nodejs-tasks.git

  2. サンプルコードが含まれているディレクトリに移動します。

    cd nodejs-tasks/samples

  3. すべての依存関係をインストールします。

    npm を使用できます。

    npm install
    yarn を使用することもできます。
    yarn install

  4. gcloud ツールが初期化されていて、前の手順で作成したプロジェクトを使用するように構成されていることを確認します。

  5. ワーカー サービス(server.js)を App Engine スタンダード環境にデプロイします。

    gcloud app deploy app.yaml

  6. サービスを含むアプリが実行されていることを確認します。

    gcloud app browse

    ブラウザで https://{YOUR_PROJECT_ID}.appspot.com/ が開き、Hello, World! が表示されます。

Ruby

Ruby サンプルは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(create_Task.rb)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(app.rb)の 2 つのアプリで構成されます。キュー自体は App Engine 上で実行されます。

サンプルをダウンロードしてインストールするには:

  1. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

  2. サンプルコードが含まれているディレクトリに移動します。

    cd ruby-docs-samples/appengine/cloud-tasks

  3. 依存関係をインストールします。

    bundle install

  4. gcloud ツールが初期化されていて、前の手順で作成したプロジェクトを使用するように構成されていることを確認します。

  5. ワーカー サービス(app.rb)を App Engine フレキシブル環境にデプロイします。

    gcloud app deploy app.yaml

  6. サービスを含むアプリが実行されていることを確認します。

    gcloud app browse

    ブラウザで https://{YOUR_PROJECT_ID}.appspot.com/ が開き、Hello, World! が表示されます。

App Engine タスクハンドラの作成の詳細については、App Engine タスクハンドラの作成をご覧ください。

Cloud Tasks キューを作成する

Cloud SDK の gcloud キュー管理機能を使用して、前述の手順で準備した環境にキューを作成します。

  1. コマンドラインで次のように入力します。

    gcloud tasks queues create my-queue

  2. キューが初期化されたら、describe を使用してキューが正常に作成されたことを確認します。

    gcloud tasks queues describe my-queue

  3. 次のような出力が生成されていることを確認します。

    name: projects/[PROJECT_ID]/locations/[LOCATION_ID]/queues/my-appengine-queue // Note these ids
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: 1000
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING
    

Cloud Tasks キューにタスクを追加する

C#

ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。

  1. 次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。サンプルアプリではこれらの環境変数を使用して、キューにタスクを追加するリクエストを作成します。

    export GOOGLE_PROJECT_ID=my-project-id // The project ID you set up above
    export GCP_QUEUE=my-queue // the queue you created above
    export LOCATION_ID=my-location-id // The region in which your queue is running

    ロケーション ID を確認するには、次の gcloud コマンドを使用します。

    gcloud tasks locations list

  2. TasksSample フォルダに移動します。

    cd ../api/TasksSample

  3. test を使用してタスクを作成し、ペイロードの文字列「hello」を追加します。 以前にデプロイした CloudTasks アプリには、ペイロードをログに記録して処理するエンドポイント log_payload があります。

    dotnet test

  4. ログを調べて、タスクがエンドポイントに到達したことを確認します。

    gcloud app logs read

Python

ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。

  1. 次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。サンプルアプリではこれらの環境変数を使用して、キューにタスクを追加するリクエストを作成します。

    export PROJECT_ID=PROJECT_ID // The project ID you set up above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    注: ロケーション ID を確認するには、次の gcloud コマンドを使用します。
    gcloud tasks locations list

  2. ローカルの create_app_engine_queue_task.py を使用してタスクを作成し、hello のペイロードを追加します。ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。

    python create_app_engine_queue_task.py --project=$PROJECT_ID
    --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello

  3. ペイロードが受信されたことを確認します。

    gcloud app logs read

Java

ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。

  1. 次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。サンプルアプリはこれらを使用して、キューにタスクを追加するリクエストを作成します。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    注: ロケーション ID を確認するには、次の gcloud コマンドを使用します。
    gcloud tasks locations list

  2. デプロイしたサーブレット上の /task/create エンドポイントをターゲットとしたタスクを作成し、ペイロードとして hello を含めます。ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。

    mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
      -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT
      --queue $QUEUE_ID --location $LOCATION_ID --payload hello"
    

  3. ログを調べて、ペイロードが受信されたことを確認します。

    gcloud app logs read

PHP

ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。

  1. snippets ディレクトリに移動します。

  2. 次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。サンプルアプリはこれらを使用して、キューにタスクを追加するリクエストを作成します。

    export PROJECT_ID=PROJECT_ID // The project ID from above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    注: ロケーション ID を確認するには、次の gcloud コマンドを使用します。
    gcloud tasks locations list

  3. ローカル スニペット create_task.php を使用してタスクを作成し、hello のペイロードを追加します。ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。

    php src/create_task.php $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
    

  4. ログを調べて、ペイロードが受信されたことを確認します。

    gcloud app logs read

Go

ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。

  1. まだ tasks/handle_task ディレクトリにいる場合は、tasks/create_task ディレクトリに移動します。

  2. 次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。クライアントは、この情報を使用してリクエストを作成します。

     export PROJECT_ID=PROJECT_ID // The project ID from above
     export LOCATION_ID=LOCATION_ID // The region in which your queue is running
     export QUEUE_ID=my-queue // The queue you created above
    注: ロケーション ID を確認するには、次の gcloud コマンドを使用します。
    gcloud tasks locations list

  3. ペイロードとして hello を含めたタスクを作成して、キューに追加します。 ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。

    go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello 

  4. ワーカー サービスのログを表示して、ペイロードが受信されたことを確認します。

    gcloud app logs read

Node.js

ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。

  1. 次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。クライアントは、この情報を使用してリクエストを作成します。

    export PROJECT_ID=PROJECT_ID // The project ID from above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    注: ロケーション ID を確認するには、次の gcloud コマンドを使用します。
    gcloud tasks locations list

  2. ペイロードとして hello を含めたタスクを作成して、キューに追加します。 ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello 

  3. ワーカー サービスのログを表示して、ペイロードが受信されたことを確認します。

    gcloud app logs read

Ruby

ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。

  1. 次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。クライアントは、この情報を使用してリクエストを作成します。

    export GOOGLE_CLOUD_PROJECT=my-project-id // The project ID from above
    export LOCATION_ID=my-location-id // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    注: ロケーション ID を確認するには、次の gcloud コマンドを使用します。
    gcloud tasks locations list

  2. ペイロードとして hello を含めたタスクを作成して、キューに追加します。 ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。

    ruby create_task.rb $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello

  3. ワーカー サービスのログを表示して、ペイロードが受信されたことを確認します。

    gcloud app logs read

クリーンアップ

このクイックスタートで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ