Alibaba Cloud サービスのトリガーは、Cloud Monitor、ActionTrail、ECS、IoT Platform などの Alibaba Cloud サービスからのイベントに応答して関数を呼び出します。このトピックでは、ECS イベントを例に、Function Compute コンソールでトリガーを作成し、その入力パラメーターを設定し、関数コードを作成する方法について説明します。
仕組み
Function Compute コンソールでトリガーを作成すると、Function Compute は、EventBridge のデフォルトのイベントバスに FunctionName-TriggerName という名前のイベントルールを自動的に作成します。トリガーが作成されると、Function Compute コンソールでその情報を表示し、EventBridge コンソールで自動的に作成されたイベントルールを表示できます。イベントソースから指定されたタイプのイベントがイベントバスに配信されると、トリガーに関連付けられている関数が呼び出されます。
注意事項
EventBridge の デフォルト イベントバスでは、最大 10 個のイベントルールを作成できます。この上限に達した場合、Alibaba Cloud サービスのトリガーをこれ以上作成できなくなります。
Serverless Devs を使用して Alibaba Cloud サービスのトリガーを作成することはできません。
前提条件
EventBridge: EventBridge のアクティブ化と権限の付与
Function Compute: 関数の作成
ステップ 1:トリガーの作成
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーでリージョンを選択します。[関数] ページで、対象の関数をクリックします。
関数の詳細ページで、[トリガー] タブをクリックし、[トリガーの作成] をクリックします。
[トリガーの作成] パネルでパラメーターを設定し、[OK] をクリックします。
パラメーター
アクション
例
トリガータイプ
[ECS] を選択します。
ECS
名前
トリガーのカスタム名を入力します。
ecs-trigger
バージョンまたはエイリアス
デフォルト値は LATEST です。別のバージョンまたはエイリアスのトリガーを作成するには、まず関数の詳細ページの右上隅で切り替えます。詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。
LATEST
イベントタイプ
[カスタムイベントタイプ] または [すべてのイベントタイプを選択] を選択します。[カスタムイベントタイプ] を選択した場合は、ECS のイベントタイプを 1 つ以上選択できます。
ディスク保持
イベントパターンの内容
このパラメーターは読み取り専用です。内容は、イベントタイプを選択すると自動的に入力されます。イベントパターンの詳細については、「イベントパターン」をご参照ください。
{ "source": [ "acs.ecs" ], "type": [ "ecs:Disk:ConvertToPostpaidCompleted" ] }呼び出しメソッド
関数の呼び出しメソッドを選択します。有効な値:
同期呼び出し
トリガーの有効化のステータス
作成時にトリガーを有効にするかどうかを指定します。デフォルトでは、トリガーを有効にする が選択されています。
トリガーを有効にする
トリガーが作成されると、[トリガー名] リストに表示されます。トリガーを変更または削除するには、「トリガーの管理」をご参照ください。
ステップ 2:入力パラメーターの設定
関数は ECS イベントを event 入力パラメーターとして受け取ります。サンプルの event を手動で関数に渡して、トリガーをシミュレートできます。
関数詳細ページの[コード] タブで、[関数をテスト] の横にある
アイコンをクリックし、ドロップダウンリストから[テストパラメーターを設定]を選択します。テストパラメーターの設定 パネルで、新規テストイベントの作成 または 既存のテストイベントの変更 を選択し、イベント名とイベント内容を入力して、[OK] をクリックします。
次のコードは、
eventパラメーターのフォーマットを示しています。すべての公式イベントソースのイベント内容については、「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 パラメーターの内容のフォーマットを指定します。datacontenttype パラメーターは、application/json フォーマットのみをサポートします。
aliyunaccountid
String
123456789098****
Alibaba Cloud アカウント ID。
data
Struct
{ "result": "accomplished", "diskId": "d-bp11ba7acc69nkta****" }イベントの内容。これは、イベントを開始したサービスによって内容が決定される JSON オブジェクトです。CloudEvents には、イベントプロデューサーからのコンテキストが含まれる場合があり、これは data フィールドにカプセル化されます。
subject
String
acs:ecs:cn-hangzhou:123456789098****:disk/d-bp11ba7acc69nkta****
イベントの件名。
source
String
acs.ecs
イベントソース。
type
String
ecs:Disk: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。
time
Timestamp
2021-01-18T11:58:31.125+08:00
イベントが発生した時刻。
aliyunregionid
String
cn-hangzhou
イベントが受信されたリージョン。
aliyunpublishaddr
String
172.25.XX.XX
イベントを受信したサーバーの IP アドレス。
ステップ 3:コードの作成とテスト
ECS トリガーを作成した後、関数コードを作成およびテストして、期待どおりに動作することを確認できます。実際のシナリオでは、ECS からのイベントが Function Compute に EventBridge を介して配信されると、トリガーは自動的に関数を呼び出します。
関数の詳細ページの コード タブで、コードエディタにコードを記述し、デプロイメントコード をクリックします。
このトピックでは、Node.js コードを例として使用します。
'use strict'; /* 初期化機能を有効にするには、 次のように initializer 関数を実装します: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // イベントパラメーターを解析し、イベントを処理します。 callback(null, 'return result'); }関数のテスト をクリックします。
詳細情報
トリガーを変更または削除するには、「トリガーの管理」をご参照ください。