クイックスタート: Cloud Tasks キューにタスクを追加する

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

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

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

始める前に

このクイックスタートで Cloud 環境を設定するには、Google Cloud プロジェクトを作成して App Engine アプリケーションを追加し、課金を有効にします。Google Cloud プロジェクトの作成時に請求先アカウントが存在する場合は、課金が自動的に有効になります。

Google Cloud プロジェクト、App Engine アプリケーション、課金全般の管理について詳細をご確認ください。HTTP Target の使用について詳しくは、HTTP Target タスクの作成をご覧ください。

  1. Google Cloud プロジェクトを作成または選択します:
    [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. gcloud CLI をインストールして設定します。これにより、gcloud ツールにアクセスできるようになります。

サンプルのセットアップ

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

C#

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

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

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

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

  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 つのアプリで構成されます。

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

  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 つのファイルで構成されます。Java 11 を使用してサンプルを実行するには、Java 11 で非同期でコード実行をご覧ください。

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

  • Maven
  • gcloud CLI の 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 つのアプリで構成されます。

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

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

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

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

    cd php-docs-samples/appengine/standard/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 ツールが初期化されていて、前述の手順で作成した Google Cloud プロジェクトを使用するように構成されていることを確認します。

  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 つのアプリで構成されます。

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

  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 つのアプリで構成されます。

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

  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 つのアプリで構成されます。

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

  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 キューを作成する

gcloud CLI の 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

    App Engine アプリのロケーション 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. コンソールで [リソースの管理] ページに移動します。

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

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

次のステップ