在Edge Delivery Services上設定AEM Edge功能

IMPORTANT
AEM Edge功能目前仍在測試階段。 功能和檔案可能會變更。 如需意見回饋,請連絡aemcs-edgecompute-feedback@adobe.com

瞭解如何在AEM網站上設定Edge Delivery Services Edge功能。

本教學課程涵蓋Cloud Manager中的Edge Delivery網站入門、CLI安裝、樣板範本中的專案設定、CDN設定,以及工作端點的部署。

此教學課程使用Frescopa網站專案作為示範網站。 您可以對自己的Edge Delivery Services網站遵循相同步驟。

您將建置的內容

AEM Edge函式是在Adobe CDN邊緣執行的JavaScript模組,而不是在您的Edge Delivery原始碼上。 您部署一個名為my-edge-function的AEM Edge函式,其中包含兩個路由:

  • /hello-world從邊緣傳回問候語
  • /weather偵測訪客在邊緣的位置、呼叫Open-Meteo API,並傳回其城市的目前溫度

在開發期間,您可使用開發伺服器在本機測試AEM Edge功能。 接著透過Edge Delivery設定管道部署edgeFunctions.yamlcdn.yaml,將AEM Edge函式(JavaScript模組)推送到Adobe CDN,然後驗證網站網域上的兩個端點(例如https://myfrescopa.enablementadobe.com/hello-world)。

高階步驟:

  1. 將您的Edge Delivery網站上線到Cloud Manager
  2. 安裝Adobe CLI和AEM Edge函式外掛程式
  3. 在Edge Delivery Services上設定AEM Edge功能
  4. 從樣板範本建立AEM Edge函式專案
  5. 在本機複製、檢閱及執行AEM Edge函式專案
  6. 檢閱、管理和部署CDN設定
  7. 建置AEM Edge功能並部署至Adobe CDN
  8. 驗證端點是否正常運作

先決條件

開始之前,請確定已具備下列專案。

  • Node.js和npm已在本機安裝
  • 從範本建立專案的GitHub帳戶
  • 適用於Cloud Manager程式的Edge Delivery Services附加元件
  • Cloud Manager中的部署管理員角色
  • Frescopa網站專案或您自己的Edge Delivery網站專案
NOTE
Edge Delivery Services支援每個程式最多​三個AEM Edge功能,其目的在於支援您網站的開發、測試和生產分支。

步驟1:將您的Edge Delivery網站上線至Cloud Manager

設定AEM Edge功能之前,請先在Cloud Manager中將Edge Delivery網站上線。 此步驟僅使用Cloud Manager,不需要Adobe CLI。

如果您的網站已上線,請確認其是否出現在Cloud Manager中並跳至步驟2。

下列步驟使用Frescopa網站專案做為示範網站。

  1. 登入Cloud Manager,並使用Edge Delivery Services附加元件開啟您的程式。 在計畫總覽上,確認顯示​ Edge Delivery ​標籤。

  2. 在​ Edge Delivery ​標籤上,完成​Edge Delivery待辦事項清單。 主要步驟包括:

    1. 新增Edge Delivery網站

      • 網站名稱Frescopa
      • Edge Delivery來源https://main--frescopa--sachinmali.aem.live/

      格式為https://<branch>--<site-name>--<organization-name>.aem.live/,其中<branch><site-name><organization-name>分別為Edge Delivery Services網站專案的分支、網站名稱及組織名稱。

      理想情況下,您可以嘗試設定Edge Delivery Services網站專案的dev分支。不過,請參閱下列示範網站的熒幕擷圖。

      新增Edge Delivery網站

    2. 新增網域

      • 網域名稱myfrescopa.enablementadobe.com

      您必須設定好自訂網域名稱,才能部署AEM Edge Functions專案,即使您嘗試在對應至Edge Delivery Services網站專案之開發分支的開發網站上進行部署亦然。

    3. 新增SSL憑證

      • 憑證型別:客戶管理(OV/EV)
      • 憑證名稱enablementadobe.com
      • 憑證:簽署的憑證檔案內容介於-----BEGIN CERTIFICATE----------END CERTIFICATE-----之間
      • 私密金鑰:私密金鑰檔案內容介於-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----之間
      • 憑證鏈結:憑證鏈結檔案內容介於-----BEGIN CERTIFICATE----------END CERTIFICATE-----之間

      新增SSL憑證

      您也可以使用Adobe Managed (DV)憑證,基於教學課程目的,我們以客戶管理的(OV/EV)憑證為例。

    4. 在您的DNS主機服務中新增myfrescopa.enablementadobe.com的DNS記錄

    5. 將網域 myfrescopa.enablementadobe.com對應至Adobe管理的CDN。

      將網域對應至Adobe管理的CDN

  3. 確認網站出現在Edge Delivery Sites表格中。 示範Frescopa網站可在https://myfrescopa.enablementadobe.com/取得。

    Cloud Manager中的 Edge Delivery網站

如需完整的逐步說明,請參閱將Edge Delivery網站新增至Cloud Manager

步驟2:安裝CLI和外掛程式

安裝或更新Adobe aio CLI以及AEM Edge函式外掛程式。

全新安裝

如果是全新安裝,請執行以下命令:

code language-bash
# Install the Adobe CLI
$ npm install -g @adobe/aio-cli

# Install the AEM Edge Functions plugin
$ aio plugins install @adobe/aio-cli-plugin-aem-edge-functions
更新現有的

更新Adobe CLI和已安裝的外掛程式:

code language-bash
# Update the Adobe CLI
$ aio update

# List installed plugins (confirm the AEM Edge Functions plugin is listed)
$ aio plugins

# Update the installed plugins
$ aio plugins update

例如,成功安裝CLI和AEM Edge函式外掛程式,應如下所示:

CLI版本輸出

步驟3:設定AEM Edge函式

必須在AEM網站網域上設定Edge Delivery Services Edge功能。 它可讓您將程式碼和設定檔案部署至Adobe CDN,以便從網站中的AEM程式碼叫用JavaScript Edge函式支援的路由。

若要設定AEM Edge函式,請執行以下命令:

$ aio aem edge-functions setup

如果您尚未登入Adobe IMS,命令會觸發登入流程。 安裝程式會提示您輸入方案、網站型別、Edge Delivery網站和ADC專案設定詳細資訊。 選取​ Edge Delivery Services ​作為網站型別。 安裝程式詳細資料儲存在.aio檔案中,提供AEM Edge函式CLI命令的內容。

AEM Edge函式設定提示

請注意,設定會將Frescopa Edge Delivery網站與網域myfrescopa.enablementadobe.com建立關聯。

IMPORTANT
針對API認證(包括Adobe Developer Console內容傳遞網路(CDN) API卡)設定AEM (ADC)專案的作業,不會在本教學課程中進行。 但是,當您想要從CI/CD系統部署AEM Edge函式專案時,必須執行此作業。 如需詳細資訊,請參閱Adobe Developer Console整合CI/CD設定

使用下列命令檢閱AEM Edge函式設定詳細資料:

$ aio aem edge-functions info

輸出應該如下所示:

AEM Edge函式資訊輸出

步驟4:建立AEM Edge函式專案

aem-edge-functions-boilerplate GitHub範本建立AEM Edge函式專案。 範本包括開始使用所需的檔案和設定。

  1. 導覽至GitHub上的aem-edge-functions-boilerplate

  2. 在右上角,選取​使用此範本 > 建立新的存放庫

    AEM Edge函式使用此範本選項

  3. 提供存放庫名稱(例如,frescopa-edge-functions)、新增說明、將可見度設定為​私人,並選取​建立存放庫

    AEM Edge函式建立存放庫詳細資料

步驟5:複製、檢閱及執行AEM Edge函式專案

複製AEM Edge函式專案

複製您在步驟4中建立的存放庫,然後在IDE中與Frescopa (或您自己的)Edge Delivery網站專案一起開啟。 大多數編輯器支援工作區或多根檢視,可讓您同時在兩個專案中工作。

# Clone the repository
$ git clone https://github.com/<your-org>/<your-project-name>.git

例如,請參閱Frescopa Edge Delivery網站專案和Frescopa AEM Edge函式專案作為IDE中的工作區:

在IDE中將 Frescopa Edge Delivery網站專案和Frescopa AEM Edge Functions專案作為工作區

檢閱AEM Edge功能專案

進行變更或部署AEM Edge Functions專案前,請先檢閱定義AEM Edge Functions合約的重要檔案。

  1. package.json包含專案相依性。 請注意@fastly/js-compute相依性。 如需詳細資訊,請參閱運算平台🔗上的JavaScript。

  2. src/index.js是函式進入點,並包含專案的主要邏輯。 它使用Fastly Compute的addEventListener("fetch", ...)模式。 所有傳入的請求都會流經handleRequest函式,您可在此加入路由比對邏輯。 例如,下列程式碼來自範本:

    code language-js
    // src/index.js
    addEventListener("fetch", (event) => event.respondWith(handleRequest(event)));
    
    async function handleRequest(event) {
        const req = event.request;
        const url = new URL(req.url);
    
        let finalResponse;
    
        try {
            // Route matching logic
            if (url.pathname === "/" && req.method === "GET") {
                finalResponse = new Response("Hello World from the edge!", { status: 200 });
            } else if (url.pathname === "/hello-world" && req.method === "GET") {
                finalResponse = new Response("Hello World from the edge!", { status: 200 });
            } else if (url.pathname === "/weather" && req.method === "GET") {
                finalResponse = await weatherHandler(req, event.client);
            } else {
                finalResponse = response.notFound();
            }
        } catch (err) {
            finalResponse = new Response("Internal Server Error", { status: 500 });
        }
    
        return finalResponse;
    }
    

    單一AEM Edge函式可以處理handleRequestif陳述式的多個路由。

  3. fastly.toml設定本機開發伺服器。 如需詳細資訊,請參閱Fastly.toml參考

  4. config/包含AEM Edge功能服務和CDN路由規則的設定檔。 透過Cloud Manager中的Edge Delivery設定管道部署這些檔案。 步驟6涵蓋該程式。

檢閱剩餘的專案檔(例如test/src/lib/README.md)以瞭解完整設定。

在本機執行AEM Edge函式專案

若要快速反複執行,您可以在本機執行AEM Edge函式專案。 從AEM Edge Functions專案目錄,安裝相依性並啟動本機開發伺服器:

# Navigate to the project directory (replace with your project name)
$ cd frescopa-edge-functions

# Install dependencies
$ npm install

# Start the local development server
$ aio aem edge-functions serve

伺服器從http://127.0.0.1:7676開始。

例如,輸出應該看起來像下面的熒幕擷圖:

本機開發伺服器輸出

步驟6:檢閱和部署CDN設定

AEM Edge功能專案包含CDN設定檔。 請檢閱這些變數,並使用Cloud Manager中的Edge Delivery設定管道進行部署。

檢閱CDN設定

檢閱AEM Edge Functions專案config/目錄中的CDN設定檔。

  1. config/edgeFunctions.yaml宣告AEM Edge函式服務。 例如:
kind: "EdgeFunctions"
version: "1"
data:
  functions:
    - name: my-edge-function

如需支援屬性的詳細資訊,請參閱edgeFunctions.yaml reference

  1. config/cdn.yaml會宣告將流量導向至AEM Edge函式服務的CDN路由規則。 例如:
kind: 'CDN'
version: '1'
data:
  originSelectors:
    rules:
      - name: route-weather-to-edge-function
        when: { reqProperty: path, equals: "/weather" }
        action:
          type: selectAemOrigin
          originName: edgefunction-my-edge-function
          skipCache: true
      - name: route-hello-world-to-edge-function
        when: { reqProperty: path, equals: "/hello-world" }
        action:
          type: selectAemOrigin
          originName: edgefunction-my-edge-function
          skipCache: true

重要標註:

  • originName必須遵循模式edgefunction-<edge-function-name>,其中<edge-function-name>是在edgeFunctions.yaml中宣告的AEM Edge函式的名稱。
  • type必須為selectAemOrigin
  • skipCache已設定為true,略過請求的CDN快取。

如需詳細資訊,請參閱來源選取器

管理CDN設定

透過Cloud Manager設定管道部署CDN設定。 首先,讓您的AEM Edge Functions專案中的config/檔案可供Cloud Manager使用。 您有兩個選項:

  1. Adobe存放庫:在Cloud Manager中為您的程式建立新的存放庫。

  2. 私人存放庫:將您現有的GitHub存放庫連結至Cloud Manager。

本教學課程使用步驟4的Frescopa AEM Edge函式專案作為私人存放庫。

  1. 在Cloud Manager中,開啟​ 存放庫 ​並選取​新增存放庫

  2. 在​ 新增存放庫 ​對話方塊中,選取​私人存放庫,然後提供存放庫名稱、URL和型別。 選取「儲存」。

    新增存放庫對話方塊

  3. 完成​ 私人存放庫所有權驗證 ​對話方塊中的步驟。

    私人存放庫所有權驗證對話方塊

    1. 授予Cloud Manager存放庫的存取權:

      用於AEM存放庫存取的Cloud Manager

    2. 將驗證密碼儲存在AEM Edge函式專案存放庫中:

      儲存在AEM Edge Functions專案存放庫中的密碼

驗證完成後,私人存放庫會出現在​ 存放庫 ​表格中。

部署CDN設定

在Cloud Manager中建立並執行Edge Delivery設定管道。

  1. 在計畫總覽頁面上,開啟​ Edge Delivery ​標籤。 在​ 管道 ​底下,選取​新增Edge Delivery管道

    新增Edge Delivery管道按鈕

  2. 在​ 新增Edge Delivery管道 ​對話方塊中,提供名稱並選取​繼續

    新增Edge Delivery管道對話方塊

  3. 在​ Source程式碼 ​步驟中,選取您新增的私人存放庫、main分支和/config作為程式碼位置。 選取「儲存」。

    Source程式碼步驟

  4. 選取管道名稱旁的​,然後選取​執行,以執行管道。

    執行Edge Delivery管道

成功執行會將edgeFunctions.yaml和cdn.yaml檔案部署至Edge Delivery網站網域。

驗證CDN設定是否已成功部署:

$ aio aem edge-functions list

輸出應列出my-edge-function (或您在edgeFunctions.yaml中宣告的任何名稱)。

AEM Edge函式清單輸出

步驟7:建置和部署AEM Edge函式專案

使用下列命令建置及部署AEM Edge函式專案,這些命令會使用儲存在.aio檔案中的內容。

# Navigate to the AEM Edge Functions project directory (replace with your project name)
$ cd frescopa-edge-functions

# Review to make sure you are deploying to the correct Edge Delivery Services site
$ aio aem edge-functions info

# Build the project
$ aio aem edge-functions build

# Deploy to Adobe CDN
$ aio aem edge-functions deploy my-edge-function

傳遞至deploy的名稱必須符合config/edgeFunctions.yaml中宣告的name。 您也必須是​ Cloud Manager Deployment Manager ​產品設定檔的一部分。

例如,輸出應該看起來像下面的熒幕擷圖:

AEM Edge函式建置和部署輸出

IMPORTANT
若要從CI/CD系統部署AEM Edge Functions專案,您需要Adobe Developer Console (ADC)專案以取得API認證。 如需詳細資訊,請參閱Adobe Developer Console整合CI/CD設定

步驟8:驗證端點

在瀏覽器中或使用curl驗證已部署的端點:

$ curl https://myfrescopa.enablementadobe.com/hello-world
$ curl https://myfrescopa.enablementadobe.com/weather

從步驟1將網域取代為您的Edge Delivery網站網域。

例如,回應看起來像下面的熒幕擷圖:

即時端點回應

NOTE
edgefunction-pXXXXX-dYYYYY-<edge-function-name>.adobeaemcloud.com網域僅供偵錯使用,且無法保證穩定。 在生產環境中,要求會透過cdn.yaml中的CDN路由規則,透過您網站的自訂網域達到AEM Edge功能。

在真實世界情況中,請將AEM Edge函式用於CDN的伺服器端邏輯,並從您網站的區塊 JavaScript呼叫它們。 如需進階設定,請參閱AEM Edge功能產品檔案

摘要

您已將Frescopa Edge Delivery網站上線至Cloud Manager、安裝CLI、在Edge Delivery Services上設定AEM Edge功能、在本機建立及執行專案、部署CDN設定、建置及部署AEM Edge功能,以及驗證端點。

其他資源

recommendation-more-help
experience-manager-learn-help-cloud-service