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

Function Compute:サーバーレスワークフロー

最終更新日:Sep 09, 2024

このトピックでは、サーバーレスワークフローのフローが、予約済みリソース関数または指定されたバージョンの関数をスケジュールする方法について説明します。

概要

実際の運用シナリオでは、サービスシナリオの変更により、タスクフローによってスケジュールされた機能が頻繁に変更される場合があります。 したがって、変更による予期しないアクションを回避し、タスクフローの安定性を制御する必要があります。 次のシナリオでは、サーバーレスワークフローのタスクステップで固定バージョンの関数が役立ちます。

  • フローAは、複数の関数f1、f2、およびf3を編成する。 同じタスクで同じバージョンの関数を実行する必要があります。 例えば、フローAが実行中である場合、関数f1は実行されているが、このとき関数は更新される。 この場合、最新バージョンの関数f2およびf3がフローAで実行される可能性があり、予期しない結果を引き起こす可能性がある。 したがって、フローが実行する関数のバージョンを固定する必要があります。

  • 関数をロールバックする必要があります。 関数の起動後に新しい変更が原因でフローが失敗した場合は、フローを以前の固定バージョンにロールバックする必要があります。

  • 関数エイリアスは、予約済みリソース関数の呼び出し、関数のコールドスタート時間の短縮、およびコスト最適化のベストプラクティスに使用されます。

Function ComputeにデプロイされているさまざまなIntroduction to versionの関数は、同様のシナリオで継続的な統合とリリースを効率的にサポートできます。 次のセクションでは、フロー内の関数エイリアスを使用して予約済みリソース関数を呼び出す方法を例として説明します。 予約リソース関数は、指定されたバージョンの関数に依存します。 この例は、指定したバージョンの関数が必要なシナリオで確認できます。

ステップ1: 関数のリザーブドインスタンスを作成する

Function Computeでfnf-demoという名前のサービスを作成します。 このサービスでは、provisionという名前のPython 3関数を作成し、そのバージョンとエイリアスをリリースしてリザーブドインスタンスを生成します。 詳細については、「補足例の概要」をご参照ください。

作成された関数のバージョンが1で、エイリアスがオンラインで、リザーブドインスタンスが生成されているとします。 次のコードは、関数の内容を示しています。

import logging

def handler(event, context):
  logger = logging.getLogger()

  logger.info('Started function test')
  return {"success": True}           

ステップ2: フローを作成する

サーバーレスワークフローは、Functionの関数のバージョンとエイリアスをネイティブにサポートします。

サーバーレスワークフローのタスクステップで、resourceArnパラメーターにデフォルト値acs:fc:{region }:{ accID}:services/fnf/functions/testを入力します。 関数実行ルールに基づいて、デフォルトで最新バージョンの関数が実行されます。 をリリースできます。You can release theバージョンの管理またはエイリアスの管理と入力acs:fc:{region }:{ accID}:services/fnf.{ alias or version}/functions/test指定されたバージョンの関数を呼び出すフローのタスクステップのresourceArnパラメーターで したがって、次のコードに基づいてフローを定義します。

version: v1
type: flow
steps:
  - type: task
    resourceArn: acs:fc:::services/fnf-demo.online/functions/provision
    # You can also use the version by defining resourceArn: acs:fc:::services/fnf-demo.1/functions/provision.
    name: TestFCProvision          

ステップ3: 予約された関数を実行し、コンソールまたはCLIで実行結果を確認する

  1. フローを実行します。 予約モードを使用する前の実行内容を次の図に示します。1

  2. 予約モード使用後の実行内容を次の図に示します。2

図に示されるように、予約モードが使用された後、フロー実行時間は、500 msから230 msに短縮される。