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

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

始める前に

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 Google Cloud、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  5. プロジェクトを Google Cloud 作成または選択します。

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。ロールを付与する方法を確認する
    • プロジェクトを作成する Google Cloud :

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  6. プロジェクト Google Cloud に対して課金が有効になっていることを確認します

  7. Cloud Resource Manager API と Cloud Tasks API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. ローカルシェルを使用している場合は、ユーザー アカウントのローカル認証情報を作成します。

    gcloud auth application-default login

    Cloud Shell を使用している場合は、この操作を行う必要はありません。

    認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認します

  9. Google Cloud CLI をインストールします。

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  12. プロジェクトを Google Cloud 作成または選択します。

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。ロールを付与する方法を確認する
    • プロジェクトを作成する Google Cloud :

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  13. プロジェクト Google Cloud に対して課金が有効になっていることを確認します

  14. Cloud Resource Manager API と Cloud Tasks API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. ローカルシェルを使用している場合は、ユーザー アカウントのローカル認証情報を作成します。

    gcloud auth application-default login

    Cloud Shell を使用している場合は、この操作を行う必要はありません。

    認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認します

  16. 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. コンソールで、[App Engine] ページに移動します。 Google Cloud

    App Engine に移動

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

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

      または

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

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

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

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

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

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

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

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

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

このクイックスタートで使用する Node.js サンプルは 2 つのファイルで構成されています。createTask.js はコマンドライン ツールとしてローカルで実行され、タスクを作成して Tasks キューに追加します。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

プロジェクトを削除する: Google Cloud

gcloud projects delete PROJECT_ID

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

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

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

次のステップ