10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Akamai EdgeWorkersのWorkflow自動化

Last updated at Posted at 2022-12-05

概要

本記事では、Github Actions機能を利用して、EdgeWorkers上での開発時に繰り返す必要のあるWorkflowを自動化する方法と手順を説明します。
具体的には、AkamaiのEdge Computing機能であるEdgeWorkersについて、以下のWorkflowを自動化します。

  • Code管理
  • Akamai NetworkのStaging/Production NetworkのDeploy

また、本記事ではWorkflowのBuild結果とDeploy結果の確認方法について述べます。
git commandのみでこれらのWorkflowが完結しますので、EdgeWorkersのヘビーユーザーやこれからEdgeWorkersを試す方にも、ぜひ参考にしていただければと思います。

EdgeWorkersのWorkflow自動化イメージ :
Blank Diagram.png
引用元:Edgeworker flow diagram

目次

EdgeWorkersとは

分散プラットフォームであるAkamaiのエッジサーバー上で、一般の開発者が独自に開発したJavaScriptのCodeを実行できるサービスです。
その他、EdgeWorkersと組み合わせて使用可能なKey-Value型のデータベースとしてEdgeKVサービスがあります。

参考:EdgeWorkers:Akamaiのエッジサーバー上でJavascriptで書いたコードが実行可能に
参考:Welcome to EdgeWorkers - Akamai TechDocs

GitHub Actionsとは

GitHubが提供するCI/CDのためのワークフローエンジンです。
GitHub上で動作するサーバレス環境であり、GitHubのインフラ上でユーザの代わりにCommandやCodeを実行する機能です。
Github以外に特別なリソースを必要とせずCI/CD環境を簡単で手軽に構築できます。

参考:GitHub Actions

Workflow自動化のメリット

EdgeWorkers における JavaScript Code開発では、開発サイクル(EdgeWorkers JavaScript Codeの変更 → Akamai NetworkへDeploy → 動作確認)を何度も繰り返す必要があります。これらの開発サイクルをWorkflowとして自動化すれば、以下のメリットを得られます。

  • Code変更と動作確認の開発作業に集中できる
  • 開発作業の時間短縮
  • 複数ブランチ・複数メンバーで作業可能

想定読者

したがって、本稿では以下のような読者を想定しています。

  • EdgeWorkers開発サイクルを高速化したい方
  • Sandbox的な使い方でEdgeWorkers機能をサクッと試したい方
  • GitHubをCI/CD環境の一部として利用しており、EdgeWorkersも組み込みたい方

事前準備(1) EdgeWorkers

Akamai API Clientの権限付与

Akamaiのサービスの統合管理コンソールである、Akamai Control Center (以降ACC) より、ご利用中のAkamai API ClientにEdgeWorkersのアクセス権(権限は「READ-WRITE」)を付与します。
スクリーンショット 2022-11-01 21.53.02.jpg

Akamai API Clientを新規作成する場合、具体的な作成方法については以下の記事を参照ください。
参考:Akamai API入門 Part 1 — API Client & EdgeGrid

※EdgeWorkersを利用しており、EdgeWorkers JavaScript codeのDeploy、配信設定でBehaviorの有効化がお済みの方は、以降の事前準備(1) EdgeWorkersは不要です。

EdgeWorker IDの作成

ACCの検索窓から「EdgeWorkers」と入力して検索して、EdgeWorkers Managementのダッシュボードを開きます。
本ダッシュボードにて、オレンジ色の「Create EdgeWorker ID」をクリックし「EdgeWorker ID」を作成します。
GitHub Actions設定と実行結果の確認時に必要となるため、EdgeWorker ID、EdgeWorkers Name、GroupIDをメモします。
スクリーンショット 2022-11-01 22.15.22.jpg

(例) EdgeWorker ID: 4985, EdgeWorkers Name: edgeworkers-test, GroupID:149969

配信設定のEdgeWorkers有効化

ACCより「Properties」にて、EdgeWorkersを有効化したい配信設定を開き、Behaviorから「EdgeWorkers」を選択します。
以下のように先程作成したEdgeWorker IDを選択し、該当の配信設定をStaging/ProductionにDeployします。
スクリーンショット 2022-11-16 14.22.15.jpg

EdgeWorker ID作成、EdgeWorkers JavaScript Code作成、配信設定のEdgeWorkers有効化の詳細手順は、以下を参照してください。
参考:EdgeWorkers:AkamaiのEdgeサーバー上でjavascriptで書いたコードが実行可能に

事前準備(2) GitHub RepositoryとWorkflow

GitHub Repository作成

EdgeWorkers用にRepositoryを作成します。RepositoryはPrivate/Publicどちらでも利用可能ですが、Private にすることを推奨します。
Repository Nameは自由に設定していただいて問題ありませんが、本記事の例ではEdgeWorkers Nameと同じ「edgeworkers-test」をRepository Nameとして設定します。
スクリーンショット 2022-11-02 18.43.53.jpg

(例) Repository Name: edgeworkers-test

GitHub Workflow作成

次に、作成したRepositoryにGitHub Workflowを作成します。
対象Repositoryの「Actions」タブの画面で、「Simple workflow」の「Configure」を選択します。
Worflow作成に必要最低限のファイルが作成されます。
スクリーンショット 2022-11-02 18.14.01.jpg

/.github/workflows/blank.yamlファイルが自動作成されますので、ファイル名をblank.yml -> main.ymlに変更します。

次に、EdgeWorkersのWorkflowを自動化するためのymlファイルを定義します。
画面右側の「Marketplace」タブを選択し、検索窓からキーワードを入力して出力された「Deploy Akamai EdgeWorkers」を選択します。
 スクリーンショット 2022-06-23 15.41.55.jpg

「Deploy Akamai EdgeWorkers」のInstallationのScriptをコピーし、main.ymlファイルに対して以下の修正作業を行ってください。

  1. main.ymlファイル内の26行目のuses: actions/checkout@v3までを残して27行目以降を削除します。
  2. コピーした「Deploy Akamai EdgeWorkers」のInstallationのScriptをmain.ymlファイルの27行目以降にペーストします。
    スクリーンショット 2022-06-23 15.43.37.jpg
  3. Credential情報の参照先の記述が必要となるため、env: EDGERC: ${{ secrets.EDGERC }}を31,32行目に追加します。
  4. edgeworkersName、network、groupidをご自身のEdgeWokersの設定内容に更新します。networkはstaging or productionを選択できます。
    (例) edgeworkersName:"edgeworkers-test", network:"staging", GroupID:"149969"
  5. Start commitをクリックして、編集したyamlファイルを保存します。
    スクリーンショット 2022-11-14 20.50.32.jpg
    以上でWorkflowを自動化するためのymlファイルの定義は完了です。
    修正後のmain.yamlファイル例は以下となります。1-4の作業の代わりに、本Scriptをコピー&ペーストし、手順3で実施したedgeworkersName、network、groupidをご自身のEdgeWokersの設定内容に更新して利用することも可能です。
# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the "main" branch
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v3
      - name: Deploy Akamai Edgeworkers
        # You may pin to the exact commit or the version.
        uses: jdmevo123/akamai-edgeworker-action@1.1
        env:
          EDGERC: ${{ secrets.EDGERC }}
        with:
          # Name of Edgeworker
          edgeworkersName: "edgeworkers-test"
          # Network you wish to activate
          network: "staging" # default is staging
          # GroupID for new registrations
          groupid: "149969"

ymlファイルのSyntaxの解説は以下の公式ページをご参照ください。
参考:Understanding GitHub Actions

Akamai API ClientのCredential情報をRepositoryに登録

「Settings」タブの画面から、「Security - Sercrets - Actions」を選択します。
Actions secretsの画面に遷移しますので、「New repository secret」を選択して「EDGERC」という名前でCrendential情報を登録します。
スクリーンショット 2022-11-14 20.57.51.jpg
Credential情報はAPIアクセスが可能なセンシティブな情報であるため、RepositoryのCode内に設置せず、Repository内のSecretsに保存する必要があるためです。
また、GitHub ActionsからAkamai API Clientを呼び出すために、SecretのSection名は「edgeworkers」を指定する必要があるのでご注意ください。
スクリーンショット 2022-11-14 21.00.18.jpg
スクリーンショット 2022-11-14 21.02.42.jpg

事前準備(3) ローカル環境

Repositoryのgit clone

作成したRepositoryをローカル環境にgit cloneします。

$ git clone https://github.com/{username}/{repository name}.git

EdgeWorkers JavaScript Codeの設置

git cloneしたRepositoryのディレクトリに移動して、EdgeWorkers JavaScript Codeを設置します。
EdgeWorkers JavaScript CodeのDownloadは、ACCから「Download code bundle」またはAkamai CLI等で行います。
スクリーンショット 2022-11-14 21.41.16.jpg

以上、EdgeWorkers, GitHub Repository, ローカル環境の事前準備は完了です。

Workflow実行手順

自動化されたEdgeWorkersのWorkflowの実行と確認を以下の手順で実施します。

1. EdgeWorkers JavaScript Codeの編集

git cloneしたRepositoryのディレクトリにて、EdgeWorkersのcodeを編集します。
例えば、bundle.jsonファイルを開き、EdgeWorkersのversionを変更します。以下の例では、version 2.4に変更します。
スクリーンショット 2022-11-02 12.35.07.jpg

2. git commitとgit push 

EdgeWorkers JavaScript Codeの編集が完了したらgit commitとgit pushを実行します。
git pushコマンドを実行すると、Repositoryのcodeがmain branchにcommitされるとともに、WorkflowのScriptにて指定したAkamai Staging/Production Networkに自動でDeployされます。

$ git add .
$ git commit -m "comment"
$ git push -u origin --all  

Workflow実行結果の確認

1. WorkflowのBuild結果

実行したWorkflowのBuild結果は、 GitHubの「Actions」タブの該当のWorkflowから各Build結果について確認することが出来ます。
また、Buildに失敗した場合は、Workflow実行が途中で止まるため、AkamaiのStaging/Producion NetworkにDeployされません。

実行中のBuild結果例
スクリーンショット 2022-11-02 15.04.39.jpg

実行成功時のBuild結果例
スクリーンショット 2022-11-02 15.18.10.jpg

2. EdgeWorkersのDeploy結果

ACCの「EdgeWorkers」の画面にて、Akamai Staging/Production NetworkのDeploy結果について確認することが出来ます。
以下の例は、version 2.4で作成したEdgeWorkers Codeを一連のWorkflowを実行して、Akamai Staging NetworkにDeployした結果です。
スクリーンショット 2022-11-02 15.21.37.jpg

Akamaiでは開発者向けにCLI・APIが用意されており、GUI以外でもAkamai Staging/Production NetworkにDeployした結果の確認が可能です。
以下はAkamai CLIによる確認結果の一例となります。

➜  ~ akamai edgeworkers status --section {section name} 4985
------------------------------------------------------------------------------------------------------------------------------
--- The following EdgeWorker Activations currently exist for account: X-XXXXX, ewId: 4985, version: any, activationId: any ---
------------------------------------------------------------------------------------------------------------------------------
┌─────────┬──────────────┬─────────┬──────────────┬────────────┬───────────┬──────────────────┬────────────────────────┐
│ (index) │ edgeWorkerId │ version │ activationId │   status   │  network  │    createdBy     │      createdTime       │
├─────────┼──────────────┼─────────┼──────────────┼────────────┼───────────┼──────────────────┼────────────────────────┤
│    0    │     4985     │  '2.4'  │      21      │ 'COMPLETE' │ 'STAGING' │ 'knakagaw_admin' │ '2022-11-02T06:05:17Z' │
│    1    │     4985     │  '2.3'  │      20      │ 'COMPLETE' │ 'STAGING' │ 'knakagaw_admin' │ '2022-06-23T07:47:09Z' │
<<< snip >>>

まとめ

GitHub Actions機能を利用した、EdgeWorkersのCode管理からAkamai Staging/Production NetworkのDeployまでのWorkflow自動化を紹介しました。
EdgeWorkersで何ができるのかをいろいろ試したい方に、このようなCI/CD環境を用意しておくと、同じ作業を繰り返すストレスから解放されると思いますので、本記事をご参考にしていただければと思います。

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?