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

このクイックスタートでは、Cloud Tasks API を使用して App Engine タスクを Cloud Tasks キューに追加する方法について説明します。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Resource Manager and Cloud Tasks API:

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Cloud Resource Manager and Cloud Tasks API:

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  13. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  14. App Engine のデフォルトのサービス アカウントは、App Engine を使用すると自動的に作成されます。このクイックスタートでは、このサービス アカウントを使用できます。ただし、組織のポリシーの構成によっては、デフォルトのサービス アカウントにプロジェクトに対する Editor ロールが自動的に付与されない場合があります。その場合は、サービス アカウントに次のロールを付与する必要があります。
    1. Artifact Registry 管理者(roles/artifactregistry.admin
    2. Artifact Registry の Create-on-Push ライター(roles/artifactregistry.createOnPushWriter
    3. Compute 管理者(roles/compute.admin
    4. ログ ライター(roles/logging.logWriter
    5. Storage オブジェクト閲覧者(roles/storage.objectViewer

App Engine アプリケーションを追加する

App Engine タスクをターゲットとする場合は、App Engine スタンダード環境にアプリをデプロイする前に、App Engine アプリケーションをプロジェクトに追加する必要があります。

  1. Google Cloud コンソールで [App Engine] ページに移動します。

    App Engine に移動

  2. [App Engine へようこそ] ダイアログで、次のいずれかを行います。

    • App Engine アプリケーションをすでに作成していて、[App Engine アプリケーションが作成されました] というメッセージが表示されている場合は、このセクションの残りの手順をスキップして、サンプルをインストールしてデプロイするセクションの手順に進みます。

      または

    • App Engine アプリケーションをまだ作成していない場合は、[アプリケーションを作成] をクリックして、このセクションの残りの手順に進みます。

  3. アプリケーションのリージョンを選択し、メモします。

    europe-westus-central は、Cloud Tasks コマンドではそれぞれ europe-west1us-central1 と呼ばれます。

  4. サービス アカウントは選択しないでください。デフォルトの App Engine サービス アカウントが使用されます。

  5. [次へ] をクリックします。

    アプリケーションが構成され、作成されます。完了まで数分かかる場合があります。

  6. Cloud SDK はダウンロードせずに、[後で行う] をクリックします。

    [App Engine アプリケーションが作成されました] というメッセージが表示されます。

サンプルをインストールしてデプロイする

このクイックスタートで使用する Node.js サンプルは、2 つのファイルで構成されています。createTask.js は、タスクを作成してタスクキューに追加するコマンドライン ツールとしてローカルで実行されます。server.js は、タスクを処理するワーカー サービスとして App Engine にデプロイされます。

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

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  2. サンプルコードが含まれるディレクトリに移動します。

    cd nodejs-docs-samples/cloud-tasks/snippets
    
  3. Node.js パッケージ管理システムを使用してすべての依存関係をインストールします。

    NPM を使用できます。

    npm install
    

    または、Yarn を使用することもできます。

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

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

    gcloud app browse
    
  6. ブラウザで、指定されたリンクに移動します。次に例を示します。

    https://PROJECT_ID.uc.r.appspot.com/
    

    Hello, World! が表示されます。

Cloud Tasks キューを作成する

gcloud tasks queues create コマンドを使用して、準備した環境でキューを作成します。

  1. ターミナルで、すべてのオペレーションをロギングするキューを作成します。

    gcloud tasks queues create QUEUE_NAME \
        --log-sampling-ratio=1.0 \
        --location=REGION
    

    以下を置き換えます。

    • QUEUE_NAME: Cloud Tasks キューの名前
    • REGION: アプリをデプロイしたリージョン
  2. キューが初期化されるまで待ってから、キューが正常に作成されたことを確認します。

    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 キューにタスクを追加する

タスクを作成して作成したキューに追加し、そのタスクをワーカー サービスに配信します。

  1. 次の環境変数を設定します。クライアントは、この情報を使用してリクエストを作成します。

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

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
    
  3. ワーカー サービスのログを表示して、タスクが実行されたことを確認します。

    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 プロジェクトとそのリソースをまとめて削除してください。

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

作成したリソースを削除することもできます。

  1. 以下のように、Cloud Tasks キューを削除します。

    gcloud tasks queues delete QUEUE_NAME \
        --location=REGION
    
  2. App Engine アプリケーションを無効にします

次のステップ