Edge Delivery ServicesでのAEM Edge関数の設定

IMPORTANT
AEM Edge Functionsは現在ベータ版です。 機能やドキュメントは変更される可能性があります。 フィードバックについては、aemcs-edgecompute-feedback@adobe.comまでお問い合わせください。

Edge Delivery Services サイトでAEM Edge Functionsを設定する方法を説明します。

このチュートリアルでは、Cloud ManagerでのEdge Delivery サイトのオンボーディング、CLIのインストール、ボイラープレートテンプレートからのプロジェクトの設定、CDN設定、作業中のエンドポイントのデプロイメントについて説明します。

このチュートリアルでは、Frescopa Site Projectをデモサイトとして使用します。 Edge Delivery Servicesの独自サイトでも、同様の手順を実行できます。

構築する要素

AEM Edge Functionsは、Edge Delivery オリジンではなく、エッジのAdobe CDNで実行されるJavaScript モジュールです。 2つのルートを持つmy-edge-functionという名前の1つの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 Functions プラグインのインストール
  3. Edge Delivery ServicesでのAEM Edge関数の設定
  4. ボイラープレートからAEM Edge Functions プロジェクトを作成します
  5. AEM Edge Functions プロジェクトをローカルで複製、レビュー、実行する
  6. CDN設定のレビュー、管理、デプロイ
  7. AEM Edge Functionsを構築してAdobe CDNにデプロイする
  8. エンドポイントが機能していることを確認します

前提条件

開始する前に、次の項目が適切に設定されていることを確認してください。

  • Node.jsとnpmがローカルにインストールされました
  • GitHub アカウントを作成して、ボイラープレートテンプレートからプロジェクトを
  • Cloud Manager プログラム用のEdge Delivery Services アドオン
  • Cloud Managerでのデプロイメントマネージャーの役割
  • Frescopa サイトプロジェクト ​または独自のEdge Delivery サイトプロジェクト
NOTE
Edge Delivery Servicesでは、プログラム ごとに最大 3つのAEM Edge関数をサポートします。これは、サイトの開発、ステージング、実稼動ブランチをサポートすることを目的としています。

手順1:Edge Delivery サイトをCloud Managerにオンボーディングする

AEM Edge Functionsを設定する前に、Cloud ManagerでEdge Delivery サイトをオンボーディングします。 この手順では、Cloud Managerのみを使用し、Adobe CLIは必要ありません。

サイトが既にオンボーディングされている場合は、そのサイトがCloud Managerに表示されていることを確認し、手順2に進みます。

次の手順では、Frescopa Site Projectをデモサイトとして使用します。

  1. Cloud Managerにログインし、Edge Delivery Services アドオンでプログラムを開きます。 プログラムの概要で、「Edge Delivery」タブが表示されていることを確認します。

  2. Edge Delivery タブで、Edge Delivery To Do リスト​に入力します。 主な手順は次のとおりです。

    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

      Edge Delivery Services サイトプロジェクトの開発ブランチにマッピングされた開発サイトを使用する場合でも、AEM Edge Functions プロジェクトをデプロイするには、カスタムドメイン名を設定する必要があります。

    3. SSL証明書を追加:

      • 証明書の種類:顧客管理(OV/EV)
      • 証明書の名前: enablementadobe.com
      • 証明書: -----BEGIN CERTIFICATE-----から-----END CERTIFICATE-----までの署名済み証明書ファイルの内容
      • 秘密鍵: -----BEGIN PRIVATE KEY-----から-----END PRIVATE KEY-----までの秘密鍵ファイルの内容
      • 証明書チェーン: -----BEGIN CERTIFICATE----------END CERTIFICATE-----の間の証明書チェーンファイルコンテンツ

      SSL 証明書を追加

      Adobe管理(DV)証明書も使用できます。チュートリアルの目的では、例として、顧客管理(OV/EV)証明書を使用しています。

    4. DNS レコード​をmyfrescopa.enablementadobe.comのDNS ホスティング サービスに追加します。

    5. Adobeが管理するCDNにドメイン myfrescopa.enablementadobe.comをマッピングします。

      Adobe管理CDN へのドメインのマッピング

  3. Edge Delivery Sites テーブルにサイトが表示されることを確認します。 デモ Frescopa サイトはhttps://myfrescopa.enablementadobe.com/にアクセスできます。

    Cloud ManagerのEdge Delivery サイト ​

完全なチュートリアルについては、Cloud ManagerへのEdge Delivery サイトの追加を参照してください。

手順2:CLIとプラグインのインストール

Adobe aio CLIとAEM Edge Functions プラグインをインストールまたは更新します。

新規インストール

新規インストールの場合は、次のコマンドを実行します。

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 Functions プラグインのインストールが正常に完了した場合は、次のようになります。

CLI バージョン出力

手順3:AEM Edge関数の設定

AEM Edge関数は、Edge Delivery Services サイトドメインで設定する必要があります。 これにより、コードと設定ファイルをAdobe CDNにデプロイできるので、サイトのJavaScript コードからAEM Edge Functionsでサポートされているルートを呼び出すことができます。

AEM Edge Functionsを設定するには、次のコマンドを実行します。

$ aio aem edge-functions setup

Adobe IMSにまだログインしていない場合は、コマンドトリガーのログインフローを使用します。 設定プロセスでは、プログラム、サイトタイプ、Edge Delivery サイト、およびADC プロジェクト設定の詳細を求めるプロンプトが表示されます。 サイトの種類として「Edge Delivery Services」を選択します。 設定の詳細は.aio ファイルに保存され、以降のAEM Edge Functions CLI コマンドのコンテキストが提供されます。

AEM Edge Functionsの設定プロンプト ​

設定では、Frescopa Edge Delivery サイト ​がドメイン myfrescopa.enablementadobe.comに関連付けられていることに注意してください。

IMPORTANT
AEM Content Delivery Network (CDN) API カードを含むAPI資格情報に対するAdobe Developer Console(ADC)プロジェクトの設定は、このチュートリアルの一部として行われません。 ただし、CI/CD システムからAEM Edge Functions プロジェクトをデプロイする場合は、この操作を行う必要があります。 詳しくは、Adobe Developer Console統合およびCI/CD セットアップ ​を参照してください。

次のコマンドを使用して、AEM Edge Functionsの設定の詳細を確認します。

$ aio aem edge-functions info

出力は次のようになります。

AEM Edge関数の情報出力

手順4:AEM Edge Functions プロジェクトの作成

AEM Edge Functions プロジェクトをaem-edge-functions-boilerplate GitHub テンプレートから作成します。 ボイラープレートには、開始するために必要なファイルと設定が含まれています。

  1. GitHubのaem-edge-functions-boilerplateに移動します。

  2. 右上隅で、このテンプレートを使用 > 新しいリポジトリを作成​を選択します。

    AEM Edge関数は、このテンプレートオプションを使用します

  3. リポジトリ名(例:frescopa-edge-functions)を指定し、説明を追加して、表示を​ プライベート ​に設定し、リポジトリを作成​を選択します。

    AEM Edge Functions create repository details

手順5:AEM Edge Functions プロジェクトの複製、レビュー、実行

AEM Edge Functions プロジェクトの複製

手順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 Functions プロジェクトをIDEのワークスペースとして参照してください。

Frescopa Edge Delivery サイトプロジェクトとFrescopa AEM Edge Functions プロジェクトをIDEのワークスペースとして使用

AEM Edge Functions プロジェクトのレビュー

AEM Edge Functions プロジェクトを変更またはデプロイする前に、AEM Edge Functions コントラクトを定義する主要なファイルを確認してください。

  1. package.jsonには、プロジェクトの依存関係が含まれています。 @fastly/js-computeの依存関係に注意してください。 詳しくは、Compute Platform上の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;
    }
    

    1つのAEM Edge関数は、handleRequestif ステートメントを通じて複数のルートを処理できます。

  3. fastly.tomlはローカル開発サーバーを構成します。 詳しくは、Fastly.toml リファレンス ​を参照してください。

  4. config/には、AEM Edge Function サービスとCDN ルーティング ルールの設定ファイルが含まれています。 これらのファイルは、Cloud ManagerのEdge Delivery設定パイプラインを通じてデプロイします。 ステップ 6では、このプロセスを説明します。

test/src/lib/README.mdなどの残りのプロジェクトファイルを確認して、完全な設定を理解します。

AEM Edge Functions プロジェクトのローカル実行

迅速に反復するには、AEM Edge Functions プロジェクトをローカルで実行します。 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 Functions プロジェクトには、CDN設定ファイルが含まれています。 Cloud ManagerのEdge Delivery設定パイプラインを使用して、それらを確認し、デプロイします。

CDN設定の確認

AEM Edge Functions プロジェクトのconfig/ ディレクトリにあるCDN設定ファイルを確認します。

  1. config/edgeFunctions.yamlは、AEM Edge Function サービスを宣言します。 次に例を示します。
kind: "EdgeFunctions"
version: "1"
data:
  functions:
    - name: my-edge-function

サポートされているプロパティについて詳しくは、edgeFunctions.yaml リファレンス ​を参照してください。

  1. config/cdn.yamlは、AEM Edge Function サービスにトラフィックを転送する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関数の名前です。
  • typeselectAemOriginである必要があります。
  • skipCacheは、リクエストのCDN キャッシュをバイパスするためにtrueに設定されています。

詳しくは、​ オリジンセレクターを参照してください。

CDN設定の管理

Cloud Manager設定パイプラインを使用してCDN設定をデプロイします。 まず、AEM Edge Functions プロジェクトのconfig/ ファイルをCloud Managerで使用できるようにします。 以下の 2 つのオプションがあります。

  1. Adobe リポジトリ:プログラム用にCloud Managerで新しいリポジトリを作成します。

  2. プライベートリポジトリ:既存のGitHub リポジトリをCloud Managerにリンクします。

このチュートリアルでは、手順4のFrescopa AEM Edge Functions プロジェクトをプライベートリポジトリとして使用します。

  1. Cloud Managerで、Repositories​を開き、Add Repository​を選択します。

  2. リポジトリを追加 ダイアログで、プライベートリポジトリ​を選択し、リポジトリ名、URLおよびタイプを指定します。 「保存」を選択します。

    ​ リポジトリを追加ダイアログ ​

  3. プライベートリポジトリ所有権の検証 ダイアログの手順を完了します。

    ​ プライベートリポジトリ所有権検証ダイアログ ​

    1. Cloud Managerにリポジトリへのアクセス権を付与します。

      AEM リポジトリへのアクセス用Cloud Manager

    2. AEM Edge Functions プロジェクトリポジトリに検証秘密鍵を保存します。

      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 Functions リスト出力

手順7:AEM Edge Functions プロジェクトのビルドとデプロイ

AEM Edge Functions プロジェクトをビルドしてデプロイするには、次のコマンドを使用します。これらのコマンドでは、.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 Functionsのビルドとデプロイの出力

IMPORTANT
AEM Edge Functions プロジェクトをCI/CD システムからデプロイするには、API資格情報にAdobe Developer Console(ADC)プロジェクトが必要です。 詳しくは、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機能に到達します。

実際のシナリオでは、CDNのサーバーサイドロジックにAEM Edge Functionsを使用し、サイトの​ ブロック ​ JavaScriptから呼び出します。 詳細な設定については、AEM Edge Functions製品ドキュメント ​を参照してください。

概要

Frescopa Edge Delivery サイトをCloud Managerにオンボーディングし、CLIをインストールし、Edge Delivery ServicesでAEM Edge Functionsを設定し、プロジェクトをローカルに作成および実行し、CDN設定をデプロイし、AEM Edge機能を構築およびデプロイし、エンドポイントを検証しました。

その他のリソース

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