Alibaba Cloud CDNトリガーを設定した後、Alibaba Cloud CDNが指定された高速化ドメイン名でオフラインログファイルを生成するたびに、Alibaba Cloud CDNイベントがFunction ComputeをトリガーしてAlibaba Cloud CDNのオフラインログを保存します。 このトピックでは、function Computeコンソールで関数のAlibaba Cloud CDNトリガーを設定する方法について説明します。トリガーの作成方法、入力パラメーターの設定方法、関数コードの書き込みとテスト方法などがあります。
シナリオの例
Alibaba Cloud CDNは、Object Storage Service (OSS) エンドポイント、オリジンサーバーのIPアドレス、オリジンサーバーのドメイン名、およびFunction Computeドメイン名をサポートしています。 各タイプのオリジンサーバーを1つ以上指定し、プライマリとセカンダリのオリジンサーバーを指定して負荷を分散できます。
このトピックでは、OSSエンドポイントをオリジンサーバーとして使用します。 OSSコンソールでバケットを作成し、オリジンサーバーとしてエンドポイントを取得してから、Alibaba Cloud CDNにドメイン名を追加する必要があります。 オリジンサーバーを変更する方法の詳細については、「オリジンサーバーの設定」をご参照ください。
始める前に
Function Compute
OSS
CDN
ステップ1: Alibaba Cloud CDNトリガーの作成
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [関数] ページで、管理する関数をクリックします。
機能の詳細ページで、[設定] タブをクリックします。 左側のナビゲーションウィンドウで、[トリガー] をクリックします。 次に、[トリガーの作成] をクリックします。
[トリガーの作成] パネルで、画面の指示に従ってパラメーターを設定し、OK.
パラメーター
説明
例
トリガータイプ
[Alibaba Cloud CDN] を選択します。
CDN
名前
トリガー名を入力します。
cdn-trigger
バージョンまたはエイリアス
デフォルト値はLATESTです。 別のバージョンまたはエイリアスのトリガーを作成する場合は、関数の詳細ページのバージョンまたはエイリアスドロップダウンリストからバージョンまたはエイリアスを選択します。 バージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。
LATEST
トリガーイベント
トリガーイベントの種類を選択します。
イベントタイプの選択方法の詳細については、「概要」の「CDNイベント」セクションをご参照ください。
CdnDomainStarted
Trigger Eventバージョン
トリガーイベントのバージョンを指定します。
説明イベントバージョン1.0.0のみサポートされています。
1.0.0
ドメイン名
高速化ドメイン名を入力します。
バケツ ******* .oss-cn-chengdu-internal.aliyuncs.com
説明
高速化ドメイン名に関する説明を入力します。
cdntrigger
ロール名
[AliyunCDNEventNotificationRole] を選択します。
説明上記のパラメーターを設定したら、[OK] をクリックします。 このタイプのトリガーを初めて作成する場合は、表示されるメッセージの [今すぐ許可] をクリックします。
AliyunCDNEventNotificationRole
ステップ2: 関数の入力パラメータを設定する
関数の詳細ページの [コード] タブで、[テスト関数] の隣のアイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。
[テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの変更] タブをクリックし、イベント名とイベント内容を入力し、[OK] をクリックします。
イベントパラメーターは、Function Computeの入力パラメーターです。 次の項目は、イベントの形式を示しています。 eventParameterのキーと値のペアは、Alibaba Cloud CDNイベントタイプによって異なります。
LogFileCreatedイベントの例
filePath
をAlibaba Cloud CDNログまたはテストファイルのパスに置き換えます。{ "events": [ { "eventName": "LogFileCreated", "eventSource": "cdn", "region": "cn-hangzhou", "eventVersion": "1.0.0", "eventTime": "2018-06-14T15:31:49+08:00", "traceId": "c6459282-6a4d-4413-894c-e4ea3968****", "userIdentity": { "aliUid": "164901546557****" }, "resource": { "domain": "example.com" }, "eventParameter": { "domain": "example.com", "endTime": 1528959900, "fileSize": 1788115, "filePath": "http://cdnlog.cn-hangzhou.oss.aliyun-inc.com/www.aliyun.com/2017_12_27/www.aliyun.com_2017_12_27_0800_0900.gz?OSSAccessKeyId=xxxx&Expires=xxxx&Signature=xxxx", "startTime": 1528959600 } } ] }
次の表に、eventパラメーターのフィールドを示します。
パラメーター
データ型
例
説明
eventName
String
LogFileCreated
イベントタイプ。
eventSource
String
cdn
イベントソースの名前。
region
String
cn-hangzhou
Alibaba Cloud CDNのリージョンです。
eventVersion
String
1.0.0
イベントトリガーのバージョン。
eventTime
String
2018-06-14T15:31:49 + 08:00
イベントが発生した時刻。
traceId
String
c6459282-6a4d-4413-894c-e4ea3968 ****
トラブルシューティングのためにイベントソースによって配信されるID。
userIdentity
地図
ユーザーに関する情報。
aliUid
String
164901546557 ****
名前空間を作成したAlibaba CloudアカウントのID。
リソース
地図
リソースに関する情報。
ドメイン
String
example.com
エンドポイント。
eventParameter
地図
イベントパラメーター。
ドメイン
String
example.com
エンドポイント。
endTime
String
1528959900
ログファイルの終了時刻。
fileSize
String
1788115
ログファイルのサイズ。
filePath
String
http://cdnlog.cn-hangzhou.oss.aliyun-inc.com/www.aliyun.com/2017_12_27/www.aliyun.com_2017_12_27_0800_0900.gz?OSSAccessKeyId=xxxx&Expires=xxxx&Signature=xxxx
ログファイルの場所。
startTime
String
1528959600
ログファイルの開始時刻。
CachedObjectsRefreshedおよびCachedObjectsPushedイベントのイベントの例
{ "events": [ { "eventName": "CachedObjectsRefreshed", "eventVersion": "1.0.0", "eventSource": "cdn", "region": "cn-hangzhou", "eventTime": "2018-03-16T14:19:55+08:00", "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****", "resource": { "domain": "example.com" }, "eventParameter": { "objectPath": [ "/2018/03/16/13/33b430c57e7.mp4", "/2018/03/16/14/4ff6b9bd54d.mp4" ], "createTime": 1521180769, "domain": "example.com", "completeTime": 1521180777, "objectType": "File", "taskId": 2089687230 }, "userIdentity": { "aliUid": "164901546557****" } } ] }
次の表に、eventパラメーターのフィールドを示します。
パラメーター
データ型
例
説明
eventName
String
CachedObjectsRefreshed
イベントタイプ。
eventSource
String
cdn
イベントソースの名前。
region
String
cn-hangzhou
Alibaba Cloudコンテンツ配信ネットワークのリージョン。
eventVersion
String
1.0.0
イベントトリガーのバージョン。
eventTime
String
2018-06-14T15:31:49 + 08:00
イベントが発生した時刻。
traceId
String
c6459282-6a4d-4413-894c-e4ea3968 ****
トラブルシューティングのためにイベントソースによって配信されるID。
リソース
地図
リソースに関する情報。
ドメイン
String
example.com
エンドポイント。
eventParameter
地図
イベントパラメーター。
objectPath
String
/2018/03/16/13/33b430c57e7.mp4
リソース識別子。
createTime
String
1521180769
リフレッシュの開始時刻。
ドメイン
String
example.com
エンドポイント。
completeTime
String
1521180777
更新の終了時間。
objectType
String
ファイル
更新されるアイテム。 有効な値:
ファイル: files
ディレクトリ: フォルダ
taskId
String
2089687230
リソース更新タスクのID。
userIdentity
地図
ユーザーに関する情報。
aliUid
String
164901546557 ****
名前空間を作成したAlibaba CloudアカウントのID。
CdnDomainStartedおよびCdnDomainStoppedイベントのサンプル
{ "events": [ { "eventName": "CdnDomainStarted", "eventVersion": "1.0.0", "eventSource": "cdn", "region": "cn-hangzhou", "eventTime": "2018-03-16T14:19:55+08:00", "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****", "resource": { "domain": "example.com" }, "eventParameter": { "domain": "example.com", "status": "online" }, "userIdentity": { "aliUid": "164901546557****" } } ] }
次の表に、eventパラメーターのフィールドを示します。
パラメーター
データ型
例
説明
eventName
String
CdnDomainStarted
イベントタイプ。
eventSource
String
cdn
イベントソースの名前。
region
String
cn-hangzhou
Alibaba Cloud CDNのリージョンです。
eventVersion
String
1.0.0
イベントトリガーのバージョン。
eventTime
String
2018-06-14T15:31:49 + 08:00
イベントが発生した時刻。
traceId
String
c6459282-6a4d-4413-894c-e4ea3968 ****
トラブルシューティングのためにイベントソースによって配信されるID。
リソース
地図
リソースに関する情報。
ドメイン
String
example.com
エンドポイント。
eventParameter
地図
イベントパラメーター。
ドメイン
String
example.com
エンドポイント。
status
String
online
高速化ドメイン名のステータス。
userIdentity
地図
ユーザーに関する情報。
aliUid
String
164901546557 ****
名前空間を作成したAlibaba CloudアカウントのID。
CdnDomainAddedおよびCdnDomainDeletedイベントのサンプル
{ "events": [ { "eventName": "CdnDomainAdded", "eventVersion": "1.0.0", "eventSource": "cdn", "region": "cn-hangzhou", "eventTime": "2018-03-16T14:19:55+08:00", "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****", "resource": { "domain": "example.com" }, "eventParameter": { "domain": "example.com" }, "userIdentity": { "aliUid": "164901546557****" } } ] }
次の表に、eventパラメーターのフィールドを示します。
パラメーター
データ型
例
説明
eventName
String
CdnDomainAdded
イベントタイプ。
eventSource
String
cdn
イベントソースの名前。
region
String
cn-hangzhou
Alibaba Cloud CDNのリージョンです。
eventVersion
String
1.0.0
イベントトリガーのバージョン。
eventTime
String
2018-06-14T15:31:49 + 08:00
イベントが発生した時刻。
traceId
String
c6459282-6a4d-4413-894c-e4ea3968 ****
トラブルシューティングのためにイベントソースによって配信されるID。
リソース
地図
リソースに関する情報。
ドメイン
String
example.com
エンドポイント。
eventParameter
地図
イベントパラメーター。
ドメイン
String
example.com
エンドポイント。
userIdentity
地図
ユーザーに関する情報。
aliUid
String
164901546557 ****
名前空間を作成したAlibaba CloudアカウントのID。
ステップ3: 関数の書き込みとテスト
CDNトリガーを作成した後、関数コードを記述し、関数をテストしてコードが正しいかどうかを確認できます。 Alibaba Cloud CDNイベントが発生すると、Alibaba Cloud CDNは関数をトリガーします。
関数の詳細ページで、コードタブで、コードエディターに関数コードを入力し、デプロイ.
この例では、Pythonで記述された関数コードを使用します。
# -*- coding: utf-8 -*- import logging import json logger = logging.getLogger("cdn-sample") def handler(event, context): evt = json.loads(event) eventObj = evt["events"][0] eventName = eventObj['eventName'] info = "" eventParam = eventObj['eventParameter'] domain = eventParam['domain'] if eventName == "CachedObjectsRefreshed" or eventName == "CachedObjectsPushed": objPathList = eventParam['objectPath'] info = ",".join(objPathList) elif eventName == "LogFileCreated": info = eventParam['filePath'] elif eventName == "CdnDomainStarted" or eventName == "CdnDomainStopped": # Corresponding business logic pass elif eventName == "CdnDomainAdded" or eventName == "CdnDomainDeleted": # Corresponding business logic pass return f"eventName:{eventName}, domain: {domain}, info: {info}"
クリックテスト機能.
関数の実行後、[コード] タブで結果を表示できます。
詳細情報
Function Computeコンソールに加えて、次のいずれかの方法を使用してトリガーを設定できます。
SDKを使用してトリガーを設定します。 詳細は、SDK をご参照ください。
既存のトリガーを変更または削除するには、「トリガーの管理」をご参照ください。