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

Function Compute:Alibaba Cloud CDNトリガーの設定

最終更新日:Sep 09, 2024

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にドメイン名を追加する必要があります。 オリジンサーバーを変更する方法の詳細については、「オリジンサーバーの設定」をご参照ください。

始める前に

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

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、管理するサービスを見つけ、[操作] 列の [関数] をクリックします。

  3. 関数ページで、変更する関数をクリックします。

  4. 関数の詳細ページで、トリガータブからバージョンまたはエイリアスを選択します。バージョンまたはエイリアスドロップダウンリストをクリックし、トリガーの作成

  5. [トリガーの作成] パネルでパラメーターを設定し、[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: 関数の入力パラメータを設定する

  1. 関数の詳細ページで、コードタブをクリックし、テスト機能隣のxialatubiaoアイコンを選択し、ドロップダウンリストからテストパラメーターの設定を選択します。

  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が存在するリージョン。 デフォルト値: cn-hangzhou

      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 CDNが存在するリージョン。 デフォルト値: cn-hangzhou

      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が存在するリージョン。 デフォルト値: cn-hangzhou

      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が存在するリージョン。 デフォルト値: cn-hangzhou

      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は関数をトリガーします。

  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":
            # Corresponding business logic
            pass
        elif eventName == "CdnDomainAdded" or eventName == "CdnDomainDeleted":
            # Corresponding business logic
            pass
        return f"eventName:{eventName}, domain: {domain}, info: {info}"   
  2. コードタブで、テスト機能をクリックします。

    関数の実行後、[コード] タブで結果を表示できます。

関連ドキュメント

Function Computeコンソールに加えて、次の方法を使用してトリガーを設定できます。

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

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

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