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

このクイックスタートでは、Cloud Tasks API を通じて Cloud Tasks キューを使用する基本オペレーションを試すことができます。

このクイックスタートのサンプルでは、App Engine ハンドラをターゲットにしているため、App Engine アプリをデプロイする必要があります。App Engine をターゲットとして使用していない場合は、App Engine アプリをデプロイする必要はなく、既存の App Engine アプリを無効にできます。

たとえば、HTTP Target ハンドラのみを使用している場合、App Engine アプリは必要ありません。汎用 HTTP Target の場合、Cloud Tasks サービスは、どのようにタスクが構成されているか基づいて、汎用 HTTP エンドポイントにあるワーカーにタスク リクエストを転送します。HTTP Target の使用について詳しくは、HTTP Target タスクを作成するをご覧ください。

始める前に

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

Google Cloud プロジェクト、App Engine アプリケーション、課金全般の管理について詳細を確認してください。

  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 の認証を設定します。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    C#

    このページの .NET サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

    Go

    このページの Go サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

    Java

    このページの Java サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

    Node.js

    このページの Node.js サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

    PHP

    このページの PHP サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

    Python

    このページの Python サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

    Ruby

    このページの Ruby サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。

サンプルのセットアップ

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

C#

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

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

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

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

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

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

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

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

    dotnet restore

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

    dotnet restore

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

    dotnet publish

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

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

  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. ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git

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

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

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

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

    gcloud app deploy

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

    gcloud app browse

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

Java

この Java 11 の例では、次の 2 つのアプリケーションを使用しています。

  • tasks アプリは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで動作します。
  • tasks-handler Spring Boot アプリは、タスク リクエストを受信するエンドポイントとして機能することで、Cloud Tasks リクエストをワーカーとして処理します。これがデプロイするメインの App Engine アプリになります。

サンプルアプリをデプロイするには:

  1. Java SE 11 Development Kit(JDK)をダウンロードしてインストールします。
  2. Cloud Tasks の環境設定を行います。
  3. アプリのビルド、デプロイ、管理を行う Maven をダウンロードしてインストールします。

  4. gcloud CLI app-engine-java コンポーネントをインストールします。

    gcloud components install app-engine-java
    

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

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

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    あるいは、zip 形式のサンプルをダウンロードして、ファイルを抽出することもできます。

  2. tasks-handler アプリの最上位ディレクトリに移動します。

    cd java-docs-samples/appengine-java11/tasks-handler/

  3. App Engine に tasks-handler アプリをデプロイします。

    mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。 pom.xml ファイルですでにプロジェクト ID を指定している場合は、実行するコマンドに -Dapp.deploy.projectId プロパティを含める必要はありません。

Node.js

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

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

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

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

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

    cd nodejs-docs-samples/cloud-tasks/snippets

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

    npm を使用できます。

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

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

    gcloud app deploy app.yaml

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

    gcloud app browse

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

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

    gcloud app deploy

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

    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_python37_and_earlier/tasks/

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

    pip install -r requirements.txt

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

    gcloud app deploy

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

    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. ワーカー サービス(app.rb)を App Engine フレキシブル環境にデプロイします。

    gcloud app deploy app.yaml

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

    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 --location=LOCATION

    LOCATION は、キューの目的のロケーションus-west2 など)に置き換えます。ロケーションを指定しない場合は、gcloud CLI によってデフォルトが選択されます。

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

    gcloud tasks queues describe my-queue --location=LOCATION

    LOCATION は、キューのロケーションに置き換えます。

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

    name: projects/PROJECT_ID/locations/LOCATION_IDqueues/QUEUE_NAME # 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

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

Java

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

  1. appengine-java11/tasks ディレクトリに移動して、アプリをコンパイルします。

    cd ../tasks
    mvn package

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

    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

  3. デプロイしたタスクハンドラ コントローラ上の /tasks/create エンドポイントをターゲットとするタスク(ペイロードは指定)を作成します。ペイロードは、ワーカーがタスクを処理するために必要とするリクエストの任意のデータです。この例では、サンプルにハードコーディングされているため、指定する必要はありません。

     mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
     
    タスクがワーカーに渡され、ワーカーがタスクを処理すると、ワーカーから 2xx の成功ステータス コードが Cloud Tasks サービスに返され、タスクはそのキューから自動的に削除されます。

  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

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

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

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. Google Cloud コンソールで、[リソースの管理] ページに移動します。

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

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

次のステップ

以上で Cloud Tasks キューへのタスクの追加が完了しました。Cloud Tasks の理解をさらに深めるには、次のページをご覧ください。