すべてのプロダクト
Search
ドキュメントセンター

Function Compute:CDN トリガーの設定

最終更新日:Nov 09, 2025

CDN トリガーを設定すると、指定された高速化ドメイン名に対して CDN サービスがオフライン CDN ログファイルを生成するたびに、Function Compute がトリガーされ、そのログファイルが保存されます。このトピックでは、Function Compute コンソールでターゲット関数に CDN トリガーを設定する方法について説明します。このプロセスには、トリガーの作成、入力パラメーターの設定、関数コードの記述とテストが含まれます。

シナリオ例

Alibaba Cloud CDN は、Object Storage Service (OSS) ドメイン名、IP アドレス、オリジンドメイン名、Function Compute ドメイン名など、複数のタイプのオリジンサーバーをサポートしています。各オリジンサーバータイプは、オリジンサーバーの複数のアドレスをサポートします。マルチオリジンのシナリオでは、オリジンサーバーにプライマリ/セカンダリの優先度と重みを設定して、負荷分散を実装できます。

このトピックでは、OSS をオリジンサーバーとして使用します。OSS コンソールでバケットを作成し、オリジンサーバーとして使用するドメイン名を取得してから、オリジンサーバーの高速化ドメイン名を追加します。オリジンサーバーのタイプを変更する方法の詳細については、「オリジンサーバーの設定」をご参照ください。

前提条件

ステップ 1: CDN トリガーの作成

  1. Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[関数管理] > [関数] を選択します。

  2. 上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、ターゲット関数をクリックします。

  3. 関数詳細ページで、[トリガー] タブをクリックし、[トリガーの作成] をクリックします。

  4. [トリガーの作成] パネルでパラメーターを設定し、[OK] をクリックします。

    パラメーター

    アクション

    トリガータイプ

    [CDN] を選択します。

    CDN

    名前

    トリガーのカスタム名を入力します。

    cdn-trigger

    バージョンまたはエイリアス

    デフォルト値は [LATEST] です。別のバージョンまたはエイリアスのトリガーを作成する場合は、まず関数詳細ページの [バージョンまたはエイリアス] ドロップダウンリストからバージョンまたはエイリアスを選択します。バージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。

    LATEST

    トリガーイベント

    トリガーイベントのタイプを選択します。

    トリガーイベントのタイプの選択方法の詳細については、「CDN イベントの定義」をご参照ください。

    CdnDomainStarted

    トリガーイベントバージョン

    トリガーイベントのバージョン番号。

    説明

    イベントバージョン 1.0.0 のみがサポートされています。

    1.0.0

    ドメイン名

    高速化ドメイン名を入力します。

    bucket*******.oss-cn-chengdu-internal.aliyuncs.com

    説明

    ドメイン名の説明を入力します。

    cdntrigger

    ロール名

    [AliyunCDNEventNotificationRole] を選択します。

    説明

    このタイプのトリガーを初めて作成する場合は、[OK] をクリックし、表示されるダイアログボックスで [今すぐ承認] をクリックします。

    AliyunCDNEventNotificationRole

    トリガーが作成されると、[トリガー名] リストに表示されます。トリガーを変更または削除するには、「トリガーの管理」をご参照ください。

ステップ 2: 関数の入力パラメーターの設定

  1. 関数詳細ページの [コード] タブで、[関数をテスト] の横にある image.png アイコンをクリックし、ドロップダウンリストから [テストパラメーターを設定] を選択します。

  2. [テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの編集] を選択し、イベント名と内容を入力して、[OK] をクリックします。

    イベントは Function Compute の入力パラメーターです。フォーマットは次の例のとおりです。eventParameter のキーと値のペアは、CDN イベントタイプによって異なります。

    • LogFileCreated イベントの例。

      filePath を 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
                  }
              }
          ]
      }
                          

      次の表に、イベントパラメーターのフィールドを示します。

      パラメーター

      タイプ

      説明

      eventName

      String

      LogFileCreated

      イベントタイプ。

      eventSource

      String

      cdn

      イベントソースの名前。

      region

      String

      cn-hangzhou

      CDN が配置されているリージョン。

      eventVersion

      String

      1.0.0

      イベントトリガーのバージョン。

      eventTime

      String

      2018-06-14T15:31:49+08:00

      イベントが発生した時刻。

      traceId

      String

      c6459282-6a4d-4413-894c-e4ea3968****

      トラブルシューティングのためにイベントソースから渡される ID。

      userIdentity

      Map

      ユーザープロパティ。

      aliUid

      String

      164901546557****

      Alibaba Cloud アカウント ID。

      resource

      Map

      リソース情報。

      domain

      String

      example.com

      ドメイン名。

      eventParameter

      Map

      イベントパラメーター。

      domain

      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****"
                  }
              }
          ]
      }                    

      次の表に、イベントパラメーターのフィールドを示します。

      パラメーター

      タイプ

      説明

      eventName

      String

      CachedObjectsRefreshed

      イベントタイプ。

      eventSource

      String

      cdn

      イベントソースの名前。

      region

      String

      cn-hangzhou

      CDN が配置されているリージョン。

      eventVersion

      String

      1.0.0

      イベントトリガーのバージョン。

      eventTime

      String

      2018-06-14T15:31:49+08:00

      イベントが発生した時刻。

      traceId

      String

      c6459282-6a4d-4413-894c-e4ea3968****

      トラブルシューティングのためにイベントソースから渡される ID。

      resource

      Map

      リソース情報。

      domain

      String

      example.com

      ドメイン名。

      eventParameter

      Map

      イベントパラメーター。

      objectPath

      String

      /2018/03/16/13/33b430c57e7.mp4

      リソース識別子。

      createTime

      String

      1521180769

      リフレッシュの開始時刻

      domain

      String

      example.com

      ドメイン名。

      completeTime

      String

      1521180777

      リフレッシュの終了時刻

      objectType

      String

      File

      パージタイプ。有効な値:

      • File: ファイル。

      • Directory: ディレクトリ。

      taskId

      String

      2089687230

      リソースパージタスクの ID。

      userIdentity

      Map

      ユーザープロパティ。

      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****"
               } 
            } 
         ]
      }

      次の表に、イベントパラメーターのフィールドを示します。

      パラメーター

      タイプ

      説明

      eventName

      String

      CdnDomainStarted

      イベントタイプ。

      eventSource

      String

      cdn

      イベントソースの名前。

      region

      String

      cn-hangzhou

      CDN が配置されているリージョン。

      eventVersion

      String

      1.0.0

      イベントトリガーのバージョン。

      eventTime

      String

      2018-06-14T15:31:49+08:00

      イベントが発生した時刻。

      traceId

      String

      c6459282-6a4d-4413-894c-e4ea3968****

      トラブルシューティングのためにイベントソースから渡される ID。

      resource

      Map

      リソース情報。

      domain

      String

      example.com

      ドメイン名。

      eventParameter

      Map

      イベントパラメーター。

      domain

      String

      example.com

      ドメイン名。

      status

      String

      online

      ドメイン名のステータス。

      userIdentity

      Map

      ユーザープロパティ。

      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****"
               }
            }
         ]
      }

      次の表に、イベントパラメーターのフィールドを示します。

      パラメーター

      タイプ

      説明

      eventName

      String

      CdnDomainAdded

      イベントタイプ。

      eventSource

      String

      cdn

      イベントソースの名前。

      region

      String

      cn-hangzhou

      CDN が配置されているリージョン。

      eventVersion

      String

      1.0.0

      イベントトリガーのバージョン。

      eventTime

      String

      2018-06-14T15:31:49+08:00

      イベントが発生した時刻。

      traceId

      String

      c6459282-6a4d-4413-894c-e4ea3968****

      トラブルシューティングのためにイベントソースから渡される ID。

      resource

      Map

      リソース情報。

      domain

      String

      example.com

      ドメイン名。

      eventParameter

      Map

      イベントパラメーター。

      domain

      String

      example.com

      ドメイン名。

      userIdentity

      Map

      ユーザープロパティ。

      aliUid

      String

      164901546557****

      Alibaba Cloud アカウント ID。

ステップ 3: 関数コードの記述とテスト

CDN トリガーを作成した後、関数コードを記述してテストし、期待どおりに動作することを確認する必要があります。本番環境では、CDN イベントが発生すると、トリガーが自動的に関数を実行します。

  1. 関数詳細ページの [コード] タブで、コードエディタにコードを記述し、[コードのデプロイ] をクリックします。

    このトピックでは、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":
            # ここにビジネスロジックを記述します
            pass
        elif eventName == "CdnDomainAdded" or eventName == "CdnDomainDeleted":
            # ここにビジネスロジックを記述します
            pass
        return f"eventName:{eventName}, domain: {domain}, info: {info}"   
  2. [関数のテスト] をクリックします。

    実行が完了したら、[コード] タブの上で結果を表示できます。

詳細情報

Function Compute コンソールに加えて、次の方法でトリガーを設定することもできます。

  • Serverless Devs ツールを使用してトリガーを設定します。詳細については、「Serverless Devs の一般的なコマンド」をご参照ください。

  • SDK を使用してトリガーを設定します。詳細については、「SDK」をご参照ください。

トリガーを変更または削除するには、「トリガーの管理」をご参照ください。