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

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

最終更新日:Jul 24, 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. [トリガーの作成] パネルで、画面の指示に従ってパラメーターを設定し、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. 関数の詳細ページの [コード] タブで、[テスト関数] の隣のimage.pngアイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。

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

  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ツールを使用してトリガーを設定します。 その他の操作については、を参照してください。

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

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