在Edge Delivery Services上設定AEM Edge功能
瞭解如何在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.yaml和cdn.yaml,將AEM Edge函式(JavaScript模組)推送到Adobe CDN,然後驗證網站網域上的兩個端點(例如https://myfrescopa.enablementadobe.com/hello-world)。
高階步驟:
- 將您的Edge Delivery網站上線到Cloud Manager
- 安裝Adobe CLI和AEM Edge函式外掛程式
- 在Edge Delivery Services上設定AEM Edge功能
- 從樣板範本建立AEM Edge函式專案
- 在本機複製、檢閱及執行AEM Edge函式專案
- 檢閱、管理和部署CDN設定
- 建置AEM Edge功能並部署至Adobe CDN
- 驗證端點是否正常運作
先決條件
開始之前,請確定已具備下列專案。
- Node.js和npm已在本機安裝
- 從範本建立專案的GitHub帳戶
- 適用於Cloud Manager程式的Edge Delivery Services附加元件
- Cloud Manager中的部署管理員角色
- Frescopa網站專案或您自己的Edge Delivery網站專案
步驟1:將您的Edge Delivery網站上線至Cloud Manager
設定AEM Edge功能之前,請先在Cloud Manager中將Edge Delivery網站上線。 此步驟僅使用Cloud Manager,不需要Adobe CLI。
如果您的網站已上線,請確認其是否出現在Cloud Manager中並跳至步驟2。
下列步驟使用Frescopa網站專案做為示範網站。
-
登入Cloud Manager,並使用Edge Delivery Services附加元件開啟您的程式。 在計畫總覽上,確認顯示 Edge Delivery 標籤。
-
在 Edge Delivery 標籤上,完成Edge Delivery待辦事項清單。 主要步驟包括:
-
新增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分支。不過,請參閱下列示範網站的熒幕擷圖。
- 網站名稱:
-
新增網域:
- 網域名稱:
myfrescopa.enablementadobe.com
您必須設定好自訂網域名稱,才能部署AEM Edge Functions專案,即使您嘗試在對應至Edge Delivery Services網站專案之開發分支的開發網站上進行部署亦然。
- 網域名稱:
-
新增SSL憑證:
- 憑證型別:客戶管理(OV/EV)
- 憑證名稱:
enablementadobe.com - 憑證:簽署的憑證檔案內容介於
-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----之間 - 私密金鑰:私密金鑰檔案內容介於
-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----之間 - 憑證鏈結:憑證鏈結檔案內容介於
-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----之間
您也可以使用Adobe Managed (DV)憑證,基於教學課程目的,我們以客戶管理的(OV/EV)憑證為例。
-
在您的DNS主機服務中新增
myfrescopa.enablementadobe.com的DNS記錄。 -
將網域
myfrescopa.enablementadobe.com對應至Adobe管理的CDN。
-
-
確認網站出現在Edge Delivery Sites表格中。 示範Frescopa網站可在https://myfrescopa.enablementadobe.com/取得。
Cloud Manager中的
如需完整的逐步說明,請參閱將Edge Delivery網站新增至Cloud Manager。
步驟2:安裝CLI和外掛程式
安裝或更新Adobe aio CLI以及AEM Edge函式外掛程式。
如果是全新安裝,請執行以下命令:
| code language-bash |
|---|
|
更新Adobe CLI和已安裝的外掛程式:
| code language-bash |
|---|
|
例如,成功安裝CLI和AEM Edge函式外掛程式,應如下所示:
步驟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命令的內容。
請注意,設定會將Frescopa Edge Delivery網站與網域myfrescopa.enablementadobe.com建立關聯。
使用下列命令檢閱AEM Edge函式設定詳細資料:
$ aio aem edge-functions info
輸出應該如下所示:
步驟4:建立AEM Edge函式專案
從aem-edge-functions-boilerplate GitHub範本建立AEM Edge函式專案。 範本包括開始使用所需的檔案和設定。
-
導覽至GitHub上的aem-edge-functions-boilerplate。
-
在右上角,選取使用此範本 > 建立新的存放庫。
-
提供存放庫名稱(例如,
frescopa-edge-functions)、新增說明、將可見度設定為私人,並選取建立存放庫。
步驟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中將
檢閱AEM Edge功能專案
進行變更或部署AEM Edge Functions專案前,請先檢閱定義AEM Edge Functions合約的重要檔案。
-
package.json包含專案相依性。 請注意@fastly/js-compute相依性。 如需詳細資訊,請參閱運算平台🔗上的JavaScript。 -
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函式可以處理
handleRequest中if陳述式的多個路由。 -
fastly.toml設定本機開發伺服器。 如需詳細資訊,請參閱Fastly.toml參考。 -
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設定檔。
config/edgeFunctions.yaml宣告AEM Edge函式服務。 例如:
kind: "EdgeFunctions"
version: "1"
data:
functions:
- name: my-edge-function
如需支援屬性的詳細資訊,請參閱edgeFunctions.yaml reference。
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使用。 您有兩個選項:
-
Adobe存放庫:在Cloud Manager中為您的程式建立新的存放庫。
-
私人存放庫:將您現有的GitHub存放庫連結至Cloud Manager。
本教學課程使用步驟4的Frescopa AEM Edge函式專案作為私人存放庫。
-
在Cloud Manager中,開啟 存放庫 並選取新增存放庫。
-
在 新增存放庫 對話方塊中,選取私人存放庫,然後提供存放庫名稱、URL和型別。 選取「儲存」。
-
完成 私人存放庫所有權驗證 對話方塊中的步驟。
-
授予Cloud Manager存放庫的存取權:
-
將驗證密碼儲存在AEM Edge函式專案存放庫中:
-
驗證完成後,私人存放庫會出現在 存放庫 表格中。
部署CDN設定
在Cloud Manager中建立並執行Edge Delivery設定管道。
-
在計畫總覽頁面上,開啟 Edge Delivery 標籤。 在 管道 底下,選取新增Edge Delivery管道。
-
在 新增Edge Delivery管道 對話方塊中,提供名稱並選取繼續。
-
在 Source程式碼 步驟中,選取您新增的私人存放庫、
main分支和/config作為程式碼位置。 選取「儲存」。
-
選取管道名稱旁的…,然後選取執行,以執行管道。
成功執行會將edgeFunctions.yaml和cdn.yaml檔案部署至Edge Delivery網站網域。
驗證CDN設定是否已成功部署:
$ aio aem edge-functions list
輸出應列出my-edge-function (或您在edgeFunctions.yaml中宣告的任何名稱)。
步驟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 產品設定檔的一部分。
例如,輸出應該看起來像下面的熒幕擷圖:
步驟8:驗證端點
在瀏覽器中或使用curl驗證已部署的端點:
$ curl https://myfrescopa.enablementadobe.com/hello-world
$ curl https://myfrescopa.enablementadobe.com/weather
從步驟1將網域取代為您的Edge Delivery網站網域。
例如,回應看起來像下面的熒幕擷圖:
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功能,以及驗證端點。