Alibaba Cloud サービスのイベントトリガーを使用すると、他の Alibaba Cloud サービスからのイベントを使用して関数をトリガーできます。これらのイベントには、Cloud Monitor イベント、監査イベント、Elastic Compute Service (ECS) イベント、Alibaba Cloud Internet of Things (IoT) イベント、およびさまざまな Alibaba Cloud サービスの運用保守 (O&M) イベントが含まれます。このトピックでは、ECS インスタンスを例として、Alibaba Cloud サービスのイベントトリガーの作成、関数の入力パラメーターの設定、および Function Compute コンソールでのコードの記述方法について説明します。
概要
Function Compute コンソールでトリガー作成リクエストを送信すると、Function Compute は [デフォルト] イベントバスにイベントルールを自動的に作成します。ルール名は 関数名-トリガー名 のフォーマットになります。トリガーが作成されると、Function Compute コンソール でトリガー情報を表示できます。また、EventBridge コンソールで自動的に作成されたイベントルールを表示することもできます。指定されたタイプのイベントがイベントソースからイベントバスに配信されると、トリガーに関連付けられた関数が実行されます。
使用上の注意
EventBridge の Alibaba Cloud サービス用の [デフォルト] イベントバスには、最大 10 個のイベントルールを作成できます。上限に達した場合、Alibaba Cloud サービスのイベントトリガーをそれ以上作成することはできません。
Serverless Devs を使用して Alibaba Cloud サービスのイベントトリガーを作成することはできません。
前提条件
EventBridge: 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" ] }呼び出しメソッド
関数の呼び出しメソッドを選択します。有効な値:
同期呼び出し
トリガーの状態
トリガーの作成直後にトリガーを有効にするかどうかを指定します。デフォルトでは、[トリガーを有効にする] が選択されています。これは、トリガーが作成後に有効になることを意味します。
トリガーを有効にする
トリガーが作成されると、[トリガー名] リストに表示されます。トリガーを変更または削除するには、「トリガーの管理」をご参照ください。
ステップ 2: 関数の入力パラメーターを設定する
ECS イベントは event 入力パラメーターとして関数に渡されます。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 パラメーターのコンテンツフォーマット。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
イベントを受信するサーバーのアドレス。
ステップ 3: 関数コードの記述とテスト
ECS トリガーを作成したら、関数コードを記述してテストし、正常に動作することを確認できます。本番環境では、ECS イベントソースからのイベントが EventBridge を介して Function Compute に配信されると、トリガーは自動的に関数を実行します。
関数の詳細ページで、[コード] タブをクリックします。コードエディタでコードを記述し、[コードのデプロイ] をクリックします。
次のコードは 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'); }[関数のテスト] をクリックします。
詳細情報
トリガーを変更または削除するには、「トリガーの管理」をご参照ください。