すべてのプロダクト
Search
ドキュメントセンター

Function Compute:非同期タスク

最終更新日:Nov 09, 2025

関数の非同期呼び出しの各フェーズのステータスを追跡および保存する場合、タスクモードを有効にして非同期リクエストを処理できます。このトピックでは、非同期タスクの背景情報、制限、および一般的な機能について説明します。

背景

非同期タスク機能を有効にすると、次の機能を利用できます。

  • Enqueued、Succeeded、Failed などの状態遷移情報が、各関数呼び出しに対して記録されます。

  • 関数リクエストのライフサイクル管理機能が提供されます。実行中の非同期タスクを終了できます。

非同期タスク機能が有効になっている場合、ステータス情報を保存する必要があるため、関数の呼び出しと実行のレイテンシが増加します。レイテンシが増加しても、追加料金は発生しません。Function Compute の課金の詳細については、「課金の概要」をご参照ください。

制限

  • シナリオ

    非同期タスク機能はより多くの機能を提供しますが、より多くのシステムオーバーヘッドが発生します。次のシナリオでは、非同期タスク機能を無効にすることをお勧めします。

    • ビジネスアプリケーションがリクエスト処理リンクのレイシに敏感で、平均レイテンシが 100 ミリ秒未満である必要がある場合。

    • 毎秒少なくとも数千の非同期呼び出しを開始する必要がある場合。

  • サポートされるリージョン

    非同期タスク機能は、次のリージョンでサポートされています: 中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (深圳)、中国 (成都)、中国 (香港)、シンガポール、イギリス (ロンドン)、米国 (シリコンバレー)、米国 (バージニア)、ドイツ (フランクフルト)、オーストラリア (シドニー)、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、タイ (バンコク)、日本 (東京)、韓国 (ソウル)。

  • 有効期間

    タスクステータス情報は、過去 7 日間のみクエリできます。

非同期タスクと Kubernetes ジョブの比較

Function Compute の非同期タスク機能と Kubernetes ジョブはどちらも非同期タスクの実行に使用できます。Function Compute は、非同期タスク機能に基づいて、より効率的で、制御と観測が容易な、すぐに使用できる非同期タスク実行プラットフォームを提供します。次の表に、2 つの方法の比較を示します。

項目

Function Compute の非同期タスク

Kubernetes ジョブ

シナリオ

数十ミリ秒続くリアルタイムタスクと、数十時間続くオフラインタスク。

固定ワークロードで、タスク送信速度と適時性に対する要件が低いオフラインタスク。

可観測性

サポートされています。キューに入れられたタスク数などのログ、メトリック、およびタスクリンク期間やタスクステータスのクエリなどの可観測性機能が提供されます。

可観測性機能を実装するには、オープンソースソフトウェアを統合する必要があります。

タスクインスタンスの自動スケーリング

サポートされています。キューに入れられたタスクの数とインスタンスのリソース使用量に基づいて自動スケーリングを実行できます。

タスクキューを使用してインスタンスのスケーリングとロードバランシングを手動で実装する必要があり、より複雑です。

タスクインスタンスのスケーリング速度

ミリ秒単位。

分単位。

タスクインスタンスのリソース使用率

インスタンスタイプを選択するだけで済みます。インスタンスは自動的にスケーリングされます。実際のタスク処理時間に基づいて課金されます。リソース使用率は高いです。

ジョブを送信するときに、インスタンスの仕様と数を決定する必要があります。インスタンスの自動スケーリングとロードバランシングを実装することは困難です。リソース使用率は低いです。

タスク送信速度

単一のユーザーは、毎秒数万のタスクを送信できます。

クラスターでは、毎秒最大数百のジョブを開始できます。

スケジュールされたタスクまたは遅延タスクの送信

サポートされています。

スケジュールされたタスクの送信はサポートされています。遅延タスクの送信はサポートされていません。

タスクの重複排除

サポートされています。

サポートされていません。

タスクの終了

サポートされています。

特定の条件下でサポートされています。タスクインスタンスを停止することでタスクを終了できます。

タスクのスロットリング

サポートされています。スロットリングは、ユーザーレベルやタスク処理関数レベルなど、さまざまな粒度で実行できます。

サポートされていません。

タスクの自動結果コールバック

サポートされています。

サポートされていません。

開発および O&M コスト

タスク処理ロジックを実装するだけで済みます。

Kubernetes クラスターを維持する必要があります。

タスク管理

非同期タスクのステータス

各タスク呼び出しについて、Function Compute はタスクの状態変化に関する情報を記録し、タスクの状態をリアルタイムでクエリできます。Function Compute SDK または Function Compute コンソールを使用して、タスクの状態を表示できます。タスクは次のいずれかの状態になります。

状態

説明

Enqueued

非同期呼び出しがキューに入れられ、実行待ちです。

Processed

非同期呼び出しがデキューされ、トリガーされるのを待っています。

Running

呼び出しが実行されており、インスタンスがタスクコードの実行を開始しました。

Succeeded

呼び出しは成功しました。

Failed

呼び出しは失敗しました。

Stopped

呼び出しを停止しようとし、タスクは正常に終了しました。

Stopping

タスクを停止しようとし、タスクは終了中です。

Expired

非同期呼び出しに有効期間を設定しました。呼び出しは期限切れになり、破棄されました。

Invalid

呼び出しは無効であり、特定の理由 (たとえば、関数が削除されたなど) によりトリガーされません。

Retrying

実行エラーが発生した後、呼び出しがリトライされています。システムがタスクをリトライする準備ができたとき、タスクの状態は Running に変わります。

GetAsyncTask 操作を呼び出して非同期タスクの詳細をクエリできます。また、ListAsyncTasks 操作を呼び出して、指定した状態のタスクをフィルター処理することもできます。

タスクの管理

Function Compute コンソールでのタスク管理

関数の作成時に非同期タスク機能を有効にする

  1. Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[Functions] をクリックします。

  2. 上部のナビゲーションバーでリージョンを選択します。[Functions] ページで、[Create Function] をクリックします。

  3. [Create Function] ページで、[Task Function] を選択し、ビジネス要件に基づいてパラメーターを設定してから、[Create] をクリックします。

    パラメーターの詳細については、「タスク関数を作成する」をご参照ください。

関数が作成されると、関数詳細ページの [Task] タブでタスクモードがデフォルトで有効になります。

既存の関数に対して非同期タスクモードを有効にする

続行する前に、関数が作成されていることを確認してください。関数の作成方法の詳細については、「関数を作成する」をご参照ください。

  1. Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[Function Management] > [Functions] を選択します。

  2. 上部のナビゲーションバーでリージョンを選択します。[Functions] ページで、対象の関数をクリックします。

  3. 関数詳細ページで、[Configurations] タブをクリックします。左側のナビゲーションツリーで、[Asynchronous Mode Configurations] をクリックします。

  4. [Asynchronous Mode Configurations] セクションで、[Modify] をクリックします。[Asynchronous Mode Configurations] パネルで、[Task Mode][Enable] に設定し、[Deploy] をクリックします。

タスクの開始または停止

  1. Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[Function Management] > [Functions] を選択します。

  2. 上部のナビゲーションバーでリージョンを選択します。[Functions] ページで、対象の関数をクリックします。

  3. 関数詳細ページで [Tasks] タブをクリックし、[Submit Task] をクリックします。表示されるダイアログボックスで、タスク ID の生成方法を選択し、タスクの実行時間を指定してから、[OK] をクリックします。

    また、[タスクを送信] の右側にある down アイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択することもできます。 イベント関数は event を使用し、HTTP 関数は HTTP パラメーターを使用して、関数に入力パラメーターを渡し、タスクの送信をシミュレートします。

    以下のタスクリストでは、タスクのステータス、タスクの詳細、リクエスト ID、インスタンス ID を表示し、インスタンスに接続できます。

    image

API 操作を呼び出してタスクを管理する

タスクモードの設定

PutAsyncInvokeConfig 操作を呼び出して、非同期呼び出しの非同期タスクモードを有効にできます。asyncTask を次のコードスニペットのように設定します。これにより、関数のすべての非同期呼び出しに対して非同期タスクモードが有効になります。

{
  "asyncTask": true
}
説明

非同期タスクモードを設定した後でも、同期モードで関数を呼び出すことができます。非同期タスクモードは、非同期呼び出しに対してのみ有効です。

非同期モードでの関数のトリガー

InvokeFunction 操作を呼び出して非同期呼び出しをトリガーし、関数のタスクモードをアクティブ化できます。x-fc-invocation-type リクエストパラメーターを Async に設定します。HTTP リクエストヘッダー x-fc-async-task-id を追加して、この呼び出しのタスク ID を設定できます。詳細については、「タスクの重複排除」をご参照ください。

タスクの表示

タスクを送信した後、GetAsyncTask 操作を呼び出して、タスクの実行ステータスと実行レコードをクエリできます。

ListAsyncTasks 操作を呼び出して、キーワードまたは条件に基づいて非同期タスクのリストをクエリできます。

タスクの停止

タスクを送信した後、ビジネス要件に基づいてタスクを停止できます。StopAsyncTask 操作を呼び出して非同期タスクを停止できます。タスクを停止するときは、タスクの送信時に設定したタスク ID を指定する必要があります。また、ListAsyncTasks 操作を呼び出して、実行中のタスクの ID をクエリすることもできます。

イベントを使用したタスクのトリガー

非同期呼び出しをサポートするトリガーを作成して、非同期タスクをトリガーできます。以下に、非同期呼び出しをサポートするトリガーをリストします。

タスクの重複排除

タスクの繰り返し実行を避けるために、Function Compute では、送信された各タスクにグローバルに一意の ID を設定できます。非同期送信操作などの非同期操作がタイムアウトした場合、同じ ID のタスクを送信してリトライできます。詳細については、「リトライポリシー」をご参照ください。

Function Compute では、グローバルに一意なタスク ID である TaskID を設定できます。タスクを送信するたびにタスク ID を指定することをお勧めします。タイムアウトエラーなどのエラーが発生した場合に、タスク ID を使用してタスクをリトライできます。Function Compute は送信されたタスクを検証します。同じ ID のタスクがシステムに入ると、リクエストは拒否され、エラー 409 が返されます。

説明

Function ComputeRequestID も提供します。RequestID を設定し、TaskID を設定しない場合、システムは自動的に TaskIDRequestID の値に設定します。非同期タスクを使用する場合は、TaskID を指定し、RequestID を指定しないことをお勧めします。

TaskID の設定

Function Computeコンソール、Serverless Devs、または API 操作の呼び出しを使用して、実行するタスクを送信できます。TaskID を設定する必要がある場合は、関数をトリガーするときに x-fc-async-task-id パラメーターを設定します。

TaskID の設定に関するサンプルコードの詳細については、「サンプルコード」をご参照ください。

タスクのモニタリング

Function Compute が提供するタスクモニタリングメトリックを使用して、非同期タスクのステータスをリアルタイムで監視し、エラーやタイムアウトなどの例外をタイムリーに検出できます。

前提条件

関数が作成されていること。詳細については、「関数を作成する」をご参照ください。

手順

  1. Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[Function Management] > [Functions] を選択します。

  2. 上部のナビゲーションバーでリージョンを選択します。[Functions] ページで、目的の関数をクリックします。

    関数の詳細ページで、[Monitoring] タブをクリックして、非同期呼び出しに関連するメトリックと非同期タスクのインスタンスレベルのリソース使用量を表示します。メトリックの詳細については、「モニタリングメトリック」をご参照ください。

    • [Function Metrics] タブをクリックして、非同期呼び出しに関連するメトリックを表示します。次の図に例を示します。

      image

    • [Instance Metrics] タブをクリックして、非同期タスクのインスタンスレベルのリソース使用量を表示します。次の図に例を示します。

      説明

      インスタンスレベルのメトリックを有効にする前に、ロギング機能を有効にする必要があります。詳細については、「ロギング機能の設定」をご参照ください。

      image

  3. メトリックベースのアラートルールを設定します。

    メモリ使用量や vCPU 使用量などのメトリックを監視する場合は、メトリックの右上隅にある image をクリックして [Create Metric-based Alert Rule] パネルに移動します。ビジネス要件に基づいてアラート条件としきい値を設定し、[OK] をクリックします。

    次の図は、アラートルールの設定例を示しています。この例では、関数の非同期呼び出しのバックログが 5 以上の場合、中程度の重大度のアラートが DingTalk、電子メール、電話、Webhook を介して 24 時間体制で連絡先に報告されます。

    image

ジョブのオーケストレーション

CloudFlow と Function Compute を統合して、関数の非同期呼び出しを大規模で複雑なシナリオのタスクプロセスに適用できます。Function Compute の非同期タスクを、CloudFlow の Sequence、Choice、Parallel などの制御ロジックに基づいてオーケストレーションできます。CloudFlow は、指定されたステップに従ってタスクの実行を確実に調整し、各タスクの状態遷移を追跡し、必要に応じて定義されたリトライロジックを実行して、タスクがスムーズかつ正常に完了するようにします。詳細については、「CloudFlow と Function Compute の統合」をご参照ください。

前提条件

手順

  1. CloudFlow コンソールにログインします。上部のナビゲーションバーでリージョンを選択します。

  2. 左側のナビゲーションウィンドウで、[Workflows] をクリックします。[Workflows] ページで、[Create Workflow] をクリックします。

  3. [Create Workflow] ダイアログボックスで、ワークフローを作成する方法を選択し、次にワークフローのモードを選択します。

    CloudFlow では、標準モードまたはエクスプレスモードでワークフローを作成できます。2 つのモードの詳細については、「標準モードとエクスプレスモード」をご参照ください。詳細については、「空白のキャンバスに基づいてワークフローを作成する」をご参照ください。

  4. 作成したフローを編集します。

    1. フローを編集します。

      [CloudFlow Studio] または [YAML] を使用してフローを編集できます。この例では、[YAML] を使用します。

      フロー詳細ページの右上隅にある [YAML] をクリックします。左側のコードエディタに、フローで使用するコードを入力し、[Save] をクリックします。

      サンプルコード:

      Type: StateMachine
      Name: MyFlow
      SpecVersion: v1
      StartAt: InvokeFunction
      States:
        - Type: Task
          Name: InvokeFunction
          Action: FC:InvokeFunction
          TaskMode: RequestComplete
          Parameters:
            invocationType: Async
            resourceArn: acs:fc:us-west-1:103435468****:functions/func-i1****/LATEST
          End: true
    2. フローロールを設定します。

      フロー詳細ページの右上隅にある [Configure Workflow] をクリックし、[Role Configuration] セクションの [Execution Role] ドロップダウンリストからロールを選択し、[Save] をクリックします。

      説明

      フローに設定されたロールに AliyunFCInvocationAccess ポリシーがアタッチされていることを確認してください。

  5. フロー詳細ページで、右上隅にある [Execute] をクリックしてフローをトリガーし、フローが期待どおりに機能するかどうかを確認します。