Alibaba Cloudサービスのイベントトリガーを使用すると、Alibaba Cloudサービスのイベントを使用して関数をトリガーできます。 これらのイベントには、CloudMonitorイベント、監査イベント、Elastic Compute Service (ECS) イベント、Alibaba Cloud IoTイベント、および特定のクラウドサービスからのO&Mイベントが含まれます。 このトピックでは、function ComputeコンソールでECSトリガーを作成し、関数入力パラメーターを設定し、コードを記述してテストする方法について説明します。
概要
Function Computeコンソールでトリガーを作成するリクエストを送信すると、Function Computeは自動的に、システムイベントバスdefaultにFunction name-trigger name形式のイベントルールを作成します。 トリガーの作成後、Function Computeコンソールでトリガーに関する情報を表示できます。 EventBridgeコンソールで、作成されたイベントルールに関する情報を表示することもできます。 イベントソースによって指定されたタイプのイベントがイベントバスに配信されると、トリガーに関連付けられた関数がトリガーされて1回実行されます。
使用上の注意
EventBridgeのバスデフォルトでも、システムに最大10個のイベントルールを作成できます。 上限に達すると、Alibaba Cloudサービスのイベントトリガーを作成できなくなります。
Serverless Devsを使用してAlibaba Cloudサービスのイベントトリガーを作成することはできません。
始める前に
EventBridge: EventBridgeの有効化とRAMユーザーへの権限付与
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: ディスク: ConvertToPostpaidCompleted" ] }
呼び出しメソッド
関数の呼び出し方法を指定します。 有効な値:
同期呼び出し: イベントが関数の実行をトリガーした後、Function Computeは実行が完了すると結果を返します。 デフォルト値です。 詳細については、「」をご参照ください。
非同期呼び出し: イベントが関数の実行をトリガーした後、Function Computeはすぐに応答を返し、関数が少なくとも1回正常に実行されるようにします。 ただし、詳細な実行結果は返されません。 詳細については、「概要」をご参照ください。
同期呼び出し
トリガー状態
作成後にトリガーを有効にするかどうかを指定します。 デフォルトでは、[トリガーの有効化] が選択され、作成後にトリガーが有効になります。
トリガーの有効化
ステップ2: 関数の入力パラメータを設定する
ECSイベントソースは、入力パラメーターとして機能するevent
の形式で関数に渡されます。 手動でイベント
を関数に渡して、関数をトリガーできます。
関数の詳細ページの [コード] タブで、[テスト関数] の隣のアイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。
[テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] タブをクリックし、イベント名とイベント内容を入力し、[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'; /* 初期化機能を有効にするには 以下のように初期化子関数を実装してください。exports.initializer = (コンテキスト、コールバック) => { exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // イベントパラメータを解析し、イベントを処理します。 callback(null, 'return result'); }
クリックテスト機能.
関連ドキュメント
既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。