Alibaba Cloudサービスのイベントトリガーを使用すると、Alibaba Cloudサービスのイベントを使用して関数の実行をトリガーできます。 これらのイベントには、CloudMonitorイベント、監査イベント、Elastic Compute Service (ECS) イベント、Alibaba Cloud IoTイベント、および特定のクラウドサービスからのO&Mイベントが含まれます。 このトピックでは、function ComputeコンソールでECSトリガーを作成し、関数入力パラメーターを設定し、コードを記述してテストする方法について説明します。
概要
でトリガーを作成するリクエストを送信した後、Function Computeコンソール,Function Computeという名前のイベントルールを自動的に作成します。サービス名-関数名-トリガー名システムイベントバスの形式デフォルト. トリガーの作成後、Function Computeコンソールでトリガーに関する情報を表示できます。 EventBridgeコンソールで、作成されたイベントルールに関する情報を表示することもできます。 イベントソースで指定された種類のイベントがイベントバスに配信されると、トリガーに関連付けられている関数が1回実行されます。
注意事項
EventBridgeのバスデフォルトでも、システムに最大10個のイベントルールを作成できます。 上限に達すると、Alibaba Cloudサービスのイベントトリガーを作成できなくなります。
Serverless Devsを使用してAlibaba Cloudサービスのイベントトリガーを作成することはできません。
始める前に
EventBridge
Function Compute
ステップ1: トリガーを作成する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで目的のサービスを見つけ、[操作] 列の [関数] をクリックします。
関数の詳細ページで、[トリガー] タブをクリックし、[バージョンまたはエイリアス] ドロップダウンリストからバージョンまたはエイリアスを選択し、[トリガーの作成] をクリックします。
[トリガーの作成] パネルで、関連パラメーターを指定します。 パラメーターを指定したら、[OK] をクリックします。
パラメーター
説明
例
トリガータイプ
ドロップダウンリストから [Elastic Compute Service (ECS)] を選択します。
Elastic Compute Service (ECS)
名前
カスタムトリガー名を入力します。
ecs-trigger
バージョンまたはエイリアス
デフォルト値はLATESTです。 別のバージョンまたはエイリアスのトリガーを作成する場合は、関数の詳細ページの右上隅で、指定したバージョンまたはエイリアスに切り替えます。 サービスのバージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。
LATEST
イベントタイプの意味
[カスタムイベントタイプ] または [すべてのイベントタイプを選択] を選択します。 [カスタムイベントタイプ] を選択した場合、ECSの1つ以上のイベントタイプを選択できます。
ディスク保持
イベントパターンの内容
[イベントタイプ] パラメーターを設定すると、イベントパターンの内容が自動的に入力されます。 コンテンツは変更できません。 イベントパターンの詳細については、「イベントパターン」をご参照ください。
{ "source": [ "acs.ecs" ], "type": [ "ecs:Disk:ConvertToPostpaidCompleted" ] }
呼び出しメソッド
関数呼び出しメソッド。The function invocation method. 有効な値:
同期呼び出し
トリガーが作成されると、[トリガー] タブに表示されます。 既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。
ステップ2: 関数の入力パラメータを設定する
ECSイベントソースは、入力パラメーターとして機能するevent
の形式で関数に渡されます。 手動でイベント
を関数に渡して、関数をトリガーできます。
関数の詳細ページで、[コード] タブをクリックし、アイコンをクリックします。 表示されるドロップダウンリストから、[テストパラメーターの設定] を選択します。
Configure Test Parametersパネルで、Create New Test EventまたはModify Existing Test Eventタブをクリックし、Event Nameとイベントの内容を指定します。 パラメーターを指定したら、[OK] をクリックします。
event
のサンプルコード: Alibaba Cloudサービスでサポートされているイベントの詳細については、「Alibaba Cloudサービスイベントソース」をご参照ください。{ "datacontenttype": "application/json;charset=utf-8", "aliyunaccountid": "123456789098****", "data": { "result": "accomplished", "diskId": "d-bp11ba7acc69nkta****" }, "subject": "acs:ecs:cn-hangzhou:123456789098****:disk/d-bp11ba7acc69nkta****", "source": "acs.ecs", "type": "ecs:Disk:ConvertToPostpaidCompleted", "aliyunpublishtime": "2021-01-18T03:58:31.762Z", "specversion": "1.0", "aliyuneventbusname": "default", "id": "70c0414c-b260-4923-b584-1d6e5646****", "time": "2021-01-18T11:58:31.125+08:00", "aliyunregionid": "cn-hangzhou", "aliyunpublishaddr": "172.25.XX.XX" }
イベントに含まれるパラメーターを次の表に示します。
パラメーター
データ型
例
説明
datacontenttype
String
application/json;charset=utf-8
dataパラメーターのコンテンツタイプ。 application/jsonコンテンツタイプのみがサポートされています。
aliyunaccountid
String
123456789098 ****
Alibaba Cloud アカウントの ID です。
データ
Struct
{ "result": "accomplished", "diskId": "d-bp11ba7acc69nkta****" }
イベントの内容。 値はJSONオブジェクトで、イベントを生成するイベントソースによって決定されます。 CloudEventsは、イベントが発生したときにイベントプロデューサーによって与えられるコンテキストを含むことができる。 この情報は、dataパラメータにカプセル化される。
件名
String
acs:ecs:cn-hangzhou:123456789098 ****: ディスク /d-bp11ba7acc69nkta ****
イベントの件名。
ソース
String
acs.ecs
イベントの発生源。
タイプ
String
ecs: ディスク: ConvertToPostpaidCompleted
イベントのタイプ。
aliyunpublishtime
Timestamp
2021-01-18T03:58:31.762Z
イベントが受信された時刻。
specversion
String
1.0
CloudEvents仕様のバージョン。
aliyuneventbusname
String
default
イベントを受信するイベントバスの名前。
id
String
70c0414c-b260-4923-b584-1d6e5646 ****
イベントの ID。
時間
Timestamp
2021-01-18T11:58:31.125 + 08:00
イベントが発生した時刻。
aliyunregionid
String
cn-hangzhou
イベントが受信された地域。
aliyunpublishaddr
String
172.25.XX.XX
イベントを受信するサーバーのIPアドレス。
ステップ3: 関数の書き込みとテスト
ECSトリガーを作成した後、関数コードを記述し、関数をテストして、コードが正しいかどうかを確認できます。 ECSイベントソースによって生成されたイベントがEventBridgeからFunction Computeに配信されると、関数の実行が自動的にトリガーされます。
関数の詳細ページで、コードタブで、コードエディターで関数コードを編集し、デプロイをクリックします。
このトピックでは、Node.js関数コードを例として使用します。
'use strict'; /* To enable the initializer feature please implement the initializer function as below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event parameters and process the event. callback(null, 'return result'); }
コードタブをクリックし、テスト機能 をクリックします。
関数の実行後、[コード] タブで結果を表示できます。
追加情報
既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。