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 アプリケーション、課金全般の管理について詳細を確認してください。
Google Cloud プロジェクトを作成または選択します。
- 右上のボタンを使用して既存のプロジェクト名を選択するか、新しいプロジェクトを作成します。
- 左上のプルダウン ボックスのプロジェクト ID をメモします。これは、Cloud Tasks リクエストのパラメータとなります。
App Engine アプリケーションをプロジェクトに追加します。
[App Engine へようこそ] ページで [アプリケーションを作成] をクリックします。
アプリケーションのリージョンを選択します。 このロケーションは、Cloud Tasks リクエストの LOCATION_ID パラメータとして使用するため、メモしておいてください。App Engine コマンドで
europe-west
およびus-central
と呼ばれる 2 つのロケーションは、Cloud Tasks コマンドではそれぞれeurope-west1
およびus-central1
と呼ばれます。[開始] ページで [次へ] をクリックするだけです。この作業は後で対応します。新しいプロジェクトの場合は、実行環境が構築されます。
[課金を有効にする] ポップアップが表示されたら、請求先アカウントを選択します。まだ請求先アカウントがない場合は、[請求先アカウントの作成] をクリックしてウィザードの手順を行います。
[次のステップ] ページで [後で行う] をクリックします。後でサンプルにアクセスして SDK をダウンロードします。
Cloud Tasks API を有効にします。
API の認証を設定します。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
C#
このページの .NET サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Go
このページの Go サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Java
このページの Java サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Node.js
このページの Node.js サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
PHP
このページの PHP サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Python
このページの Python サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
Ruby
このページの Ruby サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、Google Cloud の認証に関するドキュメントのローカル開発環境の認証の設定をご覧ください。
サンプルのセットアップ
これらのサンプルは、Cloud Tasks API を通じて Cloud Tasks キューにタスクを追加するためのフレームワークを提供します。
C#
C# のサンプルは 2 つのアプリで構成されています。1 つ(CreateAppEngineTask
)はコマンドライン ツールとしてローカルで実行され、タスクを作成してキューに追加します。もう 1 つ(CloudTasks
)はワーカーとして App Engine フレキシブル環境にデプロイされ、タスクを「処理」します。
サンプルをダウンロードしてインストールするには:
.NET Core SDK バージョン 2.0 以降がインストールされていることを確認します。
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples
CreateTask
のサンプルコードが含まれるディレクトリに移動します。cd dotnet-docs-samples/cloudtasks/api/TasksSample/
すべての依存関係をインストールします。
dotnet restore
CloudTasks
のサンプルコードが含まれているディレクトリ(dotnet-docs-samples/cloudtasks/appengine/
)に移動し、すべての依存関係をインストールします。dotnet restore
アプリケーションをコンパイルしてデプロイできるように準備します。
dotnet publish
ワーカー サービス(
CloudTasks
)を App Engine フレキシブル環境にデプロイします。gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
インデックス ページが配信されていることを確認します。
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 つのアプリで構成されます。
サンプルをダウンロードしてインストールするには:
gcloud
App Engine Go コンポーネントがインストールされていることを確認します。gcloud components install app-engine-go
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
ワーカー サンプルコードの
tasks/handle_task
ディレクトリに移動します。cd golang-samples/appengine/go11x/tasks/handle_task
app.yaml
ファイルに注意してください。このファイルには必要な構成情報が含まれています。ワーカー サービス(
handle_task.go
)を App Engine にデプロイします。gcloud app deploy
サービスを含むアプリが実行されていることを確認します。
gcloud app browse
ブラウザで
https://{YOUR_PROJECT_ID}.appspot.com/
が開き、Hello, World!
が表示されます。
Java
この Java 11 の例では、次の 2 つのアプリケーションを使用しています。
tasks
アプリは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで動作します。tasks-handler
Spring Boot アプリは、タスク リクエストを受信するエンドポイントとして機能することで、Cloud Tasks リクエストをワーカーとして処理します。これがデプロイするメインの App Engine アプリになります。
サンプルアプリをデプロイするには:
- Java SE 11 Development Kit(JDK)をダウンロードしてインストールします。
- Cloud Tasks の環境設定を行います。
アプリのビルド、デプロイ、管理を行う Maven をダウンロードしてインストールします。
gcloud CLI
app-engine-java
コンポーネントをインストールします。gcloud components install app-engine-java
サンプルをダウンロードしてインストールするには:
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
あるいは、zip 形式のサンプルをダウンロードして、ファイルを抽出することもできます。tasks-handler
アプリの最上位ディレクトリに移動します。cd java-docs-samples/appengine-java11/tasks-handler/
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 つのアプリで構成されます。
サンプルをダウンロードしてインストールするには:
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
サンプルコードが含まれているディレクトリに移動します。
cd nodejs-docs-samples/cloud-tasks/snippets
すべての依存関係をインストールします。
npm を使用できます。
npm install
yarn を使用することもできます。yarn install
ワーカー サービス(
server.js
)を App Engine スタンダード環境にデプロイします。gcloud app deploy app.yaml
サービスを含むアプリが実行されていることを確認します。
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 つのアプリで構成されます。
サンプルをダウンロードしてインストールするには:
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/php-docs-samples
Tasks サンプルの最上位ディレクトリに移動します。
cd php-docs-samples/appengine/standard/tasks
tasks
ディレクトリには、2 つのサブディレクトリが表示されます。apps/handler
: App Engine にデプロイするワーカー サービスのコードが含まれています。snippets
: ローカルコマンドラインツールのコードが含まれています。
Composer がインストールされていることを確認します。ローカルで使用する場合は、
composer.phar
が両方のサブディレクトリにあることを確認してください。ローカルで実行する方法とグローバルで実行する方法については、Composer のドキュメントを参照してください。snippets
ディレクトリに、すべての依存関係をインストールします。composer install
ローカルのみの場合:php composer.phar install
apps/handler
ディレクトリに、すべての依存関係をインストールします。composer install
ローカルのみの場合:php composer.phar install
apps/handler
ディレクトリからgcloud app deploy
コマンドを使用して、App Engine にワーカー サービスをデプロイします。gcloud app deploy
サービスを含むアプリが実行されていることを確認します。
gcloud app browse
ブラウザで
https://{YOUR_PROJECT_ID}.appspot.com/
が開き、Hello, World!
が表示されます。
Python
Python サンプルアプリは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(create_app_engine_queue_tasks.py
)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(main.py
)の 2 つのアプリで構成されます。
サンプルをダウンロードしてインストールするには:
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
サンプルコードが含まれているディレクトリに移動します。
cd python-docs-samples/appengine/flexible_python37_and_earlier/tasks/
すべての依存関係をインストールします。
pip install -r requirements.txt
ワーカー サービス(
main.py
)を App Engine にデプロイします。gcloud app deploy
インデックス ページが配信されていることを確認します。
gcloud app browse
ブラウザで
https://{YOUR_PROJECT_ID}.appspot.com/
が開き、Hello, World!
が表示されます。
Ruby
Ruby サンプルは、タスクを作成してキューに追加するコマンドライン ツールとしてローカルで実行されるファイル(create_Task.rb
)と、タスクを「処理」するワーカーとして App Engine フレキシブル環境にデプロイされるファイル(app.rb
)の 2 つのアプリで構成されます。
サンプルをダウンロードしてインストールするには:
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
サンプルコードが含まれているディレクトリに移動します。
cd ruby-docs-samples/appengine/cloud-tasks
依存関係をインストールします。
bundle install
ワーカー サービス(
app.rb
)を App Engine フレキシブル環境にデプロイします。gcloud app deploy app.yaml
サービスを含むアプリが実行されていることを確認します。
gcloud app browse
ブラウザで
https://{YOUR_PROJECT_ID}.appspot.com/
が開き、Hello, World!
が表示されます。
App Engine タスクハンドラの作成の詳細については、App Engine タスクハンドラの作成をご覧ください。
Cloud Tasks キューを作成する
gcloud CLI の gcloud
キュー管理機能を使用して、前述の手順で準備した環境にキューを作成します。
コマンドラインで次のように入力します。
gcloud tasks queues create my-queue --location=LOCATION
LOCATION
は、キューの目的のロケーション(us-west2
など)に置き換えます。ロケーションを指定しない場合は、gcloud CLI によってデフォルトが選択されます。キューが初期化されたら、
describe
を使用してキューが正常に作成されたことを確認します。gcloud tasks queues describe my-queue --location=LOCATION
LOCATION
は、キューのロケーションに置き換えます。次のような出力が生成されていることを確認します。
name: projects/
PROJECT_ID
/locations/LOCATION_ID
queues/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#
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。サンプルアプリではこれらの環境変数を使用して、キューにタスクを追加するリクエストを作成します。
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
TasksSample
フォルダに移動します。cd ../api/TasksSample
test
を使用してタスクを作成し、ペイロードの文字列「hello」を追加します。 以前にデプロイしたCloudTasks
アプリには、ペイロードをログに記録して処理するエンドポイントlog_payload
があります。dotnet test
ログを調べて、タスクがエンドポイントに到達したことを確認します。
gcloud app logs read
Go
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
まだ
tasks/handle_task
ディレクトリにいる場合は、tasks/create_task
ディレクトリに移動します。次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。クライアントは、この情報を使用してリクエストを作成します。
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
ペイロードとして
hello
を含めたタスクを作成して、キューに追加します。 ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
ワーカー サービスのログを表示して、ペイロードが受信されたことを確認します。
gcloud app logs read
Java
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
appengine-java11/tasks
ディレクトリに移動して、アプリをコンパイルします。cd ../tasks mvn package
マシン上で次の環境変数を設定します。サンプルアプリはこれらを使用して、キューにタスクを追加するリクエストを作成します。
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
デプロイしたタスクハンドラ コントローラ上の
/tasks/create
エンドポイントをターゲットとするタスク(ペイロードは指定)を作成します。ペイロードは、ワーカーがタスクを処理するために必要とするリクエストの任意のデータです。この例では、サンプルにハードコーディングされているため、指定する必要はありません。mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
タスクがワーカーに渡され、ワーカーがタスクを処理すると、ワーカーから 2xx の成功ステータス コードが Cloud Tasks サービスに返され、タスクはそのキューから自動的に削除されます。ワーカー サービスのログを表示して、タスクが受信されたことを確認します。
gcloud app logs read
Node.js
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。クライアントは、この情報を使用してリクエストを作成します。
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
ペイロードとして
hello
を含めたタスクを作成して、キューに追加します。 ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
ワーカー サービスのログを表示して、ペイロードが受信されたことを確認します。
gcloud app logs read
PHP
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
snippets
ディレクトリに移動します。次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。サンプルアプリはこれらを使用して、キューにタスクを追加するリクエストを作成します。
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
ローカル スニペット
create_task.php
を使用してタスクを作成し、hello
のペイロードを追加します。ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。php src/create_task.php $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
ログを調べて、ペイロードが受信されたことを確認します。
gcloud app logs read
Python
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。サンプルアプリではこれらの環境変数を使用して、キューにタスクを追加するリクエストを作成します。
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
ローカルの
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
ペイロードが受信されたことを確認します。
gcloud app logs read
Ruby
ローカルでタスクを作成して設定済みのキューに追加し、そのタスクを非同期ワーカーに配信します。
次の環境変数を、手動で、サンプルアプリのコードで、またはエイリアスを使用して設定します。クライアントは、この情報を使用してリクエストを作成します。
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
ペイロードとして
hello
を含めたタスクを作成して、キューに追加します。 ペイロードは、タスクの処理でワーカーが必要とするリクエストのデータです。ruby create_task.rb $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello
ワーカー サービスのログを表示して、ペイロードが受信されたことを確認します。
gcloud app logs read
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
以上で Cloud Tasks キューへのタスクの追加が完了しました。Cloud Tasks の理解をさらに深めるには、次のページをご覧ください。
- キューとタスクの管理では、既存のタスクとキューの管理(削除を含む)について説明します。
- Cloud Tasks キューの作成ガイドを使用して、Cloud Tasks キューを作成して構成します。
- gRPC を使用したキュー管理の詳細については、gRPC API リファレンスをご覧ください。
- REST を使用したキュー管理の詳細については、REST API リファレンスをご覧ください。
- Cloud Tasks の概要で Cloud Tasks キューの詳細を確認します。