イベント関数は、Object Storage Service (OSS) へのファイルのアップロードやモニタリングプロダクトによってトリガーされるアラートなど、クラウドサービスによって生成されるさまざまな イベント に応答できます。イベント関数を使用すると、イベント統合や基盤となる計算リソースを管理することなく、処理ロジックの記述のみを行えます。Function Compute は、必要に応じてインスタンスを自動的に実行、スケール、終了します。使用したリソースに対してのみ料金が発生します。
利用シーン
Object Storage Service (OSS) にファイルを保存する必要があるとします。アップロードを高速化するために、まずファイルを ZIP アーカイブに圧縮します。しかし、ファイルを使用する必要がある場合は、ZIP アーカイブではなく元のファイルが必要です。これには、ファイルを自動的に解凍して OSS に保存し直す必要があります。
イベント関数を使用すると、ファイル処理コードに集中できます。ファイルが OSS にアップロードされるたびにイベントが生成されます。イベントが設定した条件を満たすと、関数が自動的にトリガーされ、ハンドラが実行されます。ハンドラの処理が完了すると、計算リソースは解放され、コストを節約できます。
OSS バケットをお持ちでない場合があるため、このチュートリアルでは、シミュレートされたイベントを使用してイベント関数を実装する方法を説明します。
シミュレートされた Object Storage Service (OSS) のファイルアップロードイベントを作成します。このイベントはイベント関数を呼び出してファイルを処理し、ファイル名やバケット名などの情報をコンソールに出力します。
この例を完了すると、次のことを学習できます:
イベント関数の作成、ハンドラの記述、およびコンソールを使用した関数のテスト。
Function Compute のランタイムや組み込みランタイムなどの主要な概念の理解。
ハンドラのパラメーターである
eventとcontextについての学習。
前提条件
操作手順
1. 関数タイプの選択
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。上部のナビゲーションバーで、関数を作成するリージョンを選択します。関数を作成 をクリックし、画面の指示に従って イベント関数 を選択して作成します。
2. ランタイムの選択
Python
ランタイム環境 で、[組み込みランタイム] > [Python] > [Python 3.10] を選択します。

イベント関数には組み込みランタイムの使用を推奨します。組み込みランタイムには、Python の oss2 モジュールなど、他のクラウドサービスからのイベントに応答するために必要な依存関係が含まれています。詳細については、「ランタイム環境の概要」をご参照ください。カスタムランタイムまたはカスタムイメージを使用する場合は、必要な依存関係をインストールする必要があります。ランタイムの詳細な比較については、「ランタイムの選択」をご参照ください。
Node.js
ランタイム環境 で、[組み込みランタイム] > [Node.js] > [Node.js 20] を選択します。

イベント関数には組み込みランタイムの使用を推奨します。組み込みランタイムには、Node.js の ali-oss モジュールなど、他のクラウドサービスからのイベントに応答するために必要な依存関係が含まれています。詳細については、「ランタイム環境の概要」をご参照ください。カスタムランタイムまたはカスタムイメージを使用する場合は、必要な依存関係をインストールする必要があります。ランタイムの詳細な比較については、「ランタイムの選択」をご参照ください。
3. 関数の作成
[Hello, world! の例] を選択します。詳細設定 はデフォルト値のままにし、作成 をクリックします。関数の作成が完了するまで待ちます。

関数が作成された後、コード タブの WebIDE で生成されたサンプルコードを表示できます。次の図は Python の例です。

Hello, world のサンプルコードは、エントリーポイントを持つ関数テンプレートを自動的に生成します。次のステップで、このテンプレートから直接ビジネスコードを構築できます。
4. サンプルコードの変更とデプロイ
Python や Node.js などのインタプリタ言語では、WebIDE で直接コードを変更してデプロイできます。Java などのコンパイル言語は、ローカルでコードパッケージをコンパイルしてからアップロードすることのみをサポートしており、WebIDE はサポートしていません。
Python
コンソールの WebIDE で index.py を開きます。現在のコードを次のコードに置き換え、デプロイメントコード をクリックして変更を適用します。
Node.js
コンソールの WebIDE で index.mjs を開きます。現在のコードを次のコードに置き換え、デプロイメントコード をクリックして変更を適用します。
5. 関数のテスト
OSS へのファイルアップロードが関数をトリガーするシナリオをシミュレートするために、モックイベントを定義し、それを使用して関数をトリガーします。
モックイベントでのテストに加えて、実際の OSS イベントを使用して関数をトリガーしてテストすることもできます。詳細については、「高度な操作」をご参照ください。
モックイベントの作成:関数の詳細 ページで、コード タブをクリックします。関数のテスト の横にあるドロップダウン矢印をクリックし、テストパラメーターの設定 を選択します。イベントテンプレート セクションで、[Object Storage Service (OSS)] を選択します。モックイベントが自動的に生成されます。このイベントの形式は、実際の OSS イベントと同じです。
イベント名 や、OSS バケット名やファイル名などのイベントオブジェクト内のパラメーター値をカスタマイズできます。完了したら、OK をクリックします。

コード タブで、関数のテスト をクリックして、すぐに関数をトリガーします。関数が正常に実行された後、レスポンス を表示します。サンプルコードは 0 を返し、イベントが正常に処理されたことを示します。ログ出力 をクリックして、関数実行中に出力されたログ情報を表示します。
関数をテストすると、Function Compute はモックイベントの内容を
eventパラメーターを介してhandlerに渡します。その後、前のステップで定義したコードを実行し、eventパラメーターを解析してファイルを処理します。
6. (任意) リソースのクリーンアップ
Function Compute はリソース使用量に基づいて課金されます。使用しない関数に対しては課金されません。ただし、Object Storage Service (OSS) に保存されたデータや Apsara File Storage NAS など、他のクラウドサービスに関連するリソースは別途料金が発生する可能性があることにご注意ください。
関数を削除するには、Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。リージョンを選択します。削除したい関数を見つけ、操作 列の 削除 をクリックします。表示されるダイアログボックスで、関数にトリガーなどの関連リソースがないことを確認し、削除を確定します。
高度な操作
これで、イベント関数を作成し、ハンドラを変更し、コンソールでシミュレートされた event を使用して関数をテストしました。必要に応じて、次の高度な操作をご参照ください:
トリガーの追加:
このトピックでは、テストのためにシミュレートされた Object Storage Service (OSS) ファイルアップロードイベントを使用します。これは、OSS バケットをお持ちでない場合があるためです。ビジネスで関数を使用する場合は、関数に OSS トリガーを追加します。詳細については、「ネイティブ OSS トリガーの設定」をご参照ください。
OSS に加えて、他の多くの Alibaba Cloud サービスのイベントも Function Compute をトリガーできます。これらのサービスには、さまざまなメッセージキュー、Tablestore、Simple Log Service (SLS) が含まれます。サポートされているトリガーのリストについては、「トリガーの概要」をご参照ください。
依存関係の追加: 組み込みランタイムには、イベント処理のための一般的な依存ライブラリが含まれています。ただし、これらのライブラリがすべてのビジネス要件を満たすとは限りません。最も簡単な解決策は、コードと追加の依存関係を ZIP ファイルにパッケージ化することです。その後、コードパッケージを Function Compute にアップロードしてデプロイします。詳細については、「コードパッケージのデプロイ」をご参照ください。コードパッケージのサイズを削減し、コールドスタートを高速化するには、レイヤーを使用して依存関係を管理します。詳細については、「カスタムレイヤーの作成」をご参照ください。
ログの設定: デバッグ、トラブルシューティング、およびセキュリティ監査に役立つように、関数のログを設定します。詳細な手順については、「ロギング機能の設定」をご参照ください。
関連ドキュメント
Serverless Devs コマンドラインツールを使用して関数を作成することもできます。詳細については、「クイックスタート」をご参照ください。
イベント関数の詳細については、次のチュートリアルをご参照ください:

