概要
本記事では、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自動化イメージ :
引用元:Edgeworker flow diagram
目次
- EdgeWorkersとは
- GitHub Actionsとは
- Workflow自動化のメリット
- 想定読者
- 事前準備(1) EdgeWorkers
- 事前準備(2) GitHub RepositoryとWorkflow
- 事前準備(3) ローカル環境
- Workflow実行手順
- Workflow実行結果の確認
- まとめ
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環境を簡単で手軽に構築できます。
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」)を付与します。
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をメモします。
(例) EdgeWorker ID: 4985, EdgeWorkers Name: edgeworkers-test, GroupID:149969
配信設定のEdgeWorkers有効化
ACCより「Properties」にて、EdgeWorkersを有効化したい配信設定を開き、Behaviorから「EdgeWorkers」を選択します。
以下のように先程作成したEdgeWorker IDを選択し、該当の配信設定をStaging/ProductionにDeployします。
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として設定します。
(例) Repository Name: edgeworkers-test
GitHub Workflow作成
次に、作成したRepositoryにGitHub Workflowを作成します。
対象Repositoryの「Actions」タブの画面で、「Simple workflow」の「Configure」を選択します。
Worflow作成に必要最低限のファイルが作成されます。
/.github/workflows/blank.yamlファイルが自動作成されますので、ファイル名をblank.yml -> main.ymlに変更します。
次に、EdgeWorkersのWorkflowを自動化するためのymlファイルを定義します。
画面右側の「Marketplace」タブを選択し、検索窓からキーワードを入力して出力された「Deploy Akamai EdgeWorkers」を選択します。
「Deploy Akamai EdgeWorkers」のInstallationのScriptをコピーし、main.ymlファイルに対して以下の修正作業を行ってください。
- main.ymlファイル内の26行目の
uses: actions/checkout@v3
までを残して27行目以降を削除します。 - コピーした「Deploy Akamai EdgeWorkers」のInstallationのScriptをmain.ymlファイルの27行目以降にペーストします。
- Credential情報の参照先の記述が必要となるため、
env: EDGERC: ${{ secrets.EDGERC }}
を31,32行目に追加します。 - edgeworkersName、network、groupidをご自身のEdgeWokersの設定内容に更新します。networkはstaging or productionを選択できます。
(例) edgeworkersName:"edgeworkers-test", network:"staging", GroupID:"149969"
- Start commitをクリックして、編集したyamlファイルを保存します。
以上で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情報を登録します。
Credential情報はAPIアクセスが可能なセンシティブな情報であるため、RepositoryのCode内に設置せず、Repository内のSecretsに保存する必要があるためです。
また、GitHub ActionsからAkamai API Clientを呼び出すために、SecretのSection名は「edgeworkers」を指定する必要があるのでご注意ください。
事前準備(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等で行います。
以上、EdgeWorkers, GitHub Repository, ローカル環境の事前準備は完了です。
Workflow実行手順
自動化されたEdgeWorkersのWorkflowの実行と確認を以下の手順で実施します。
1. EdgeWorkers JavaScript Codeの編集
git cloneしたRepositoryのディレクトリにて、EdgeWorkersのcodeを編集します。
例えば、bundle.jsonファイルを開き、EdgeWorkersのversionを変更します。以下の例では、version 2.4に変更します。
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されません。
2. EdgeWorkersのDeploy結果
ACCの「EdgeWorkers」の画面にて、Akamai Staging/Production NetworkのDeploy結果について確認することが出来ます。
以下の例は、version 2.4で作成したEdgeWorkers Codeを一連のWorkflowを実行して、Akamai Staging NetworkにDeployした結果です。
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環境を用意しておくと、同じ作業を繰り返すストレスから解放されると思いますので、本記事をご参考にしていただければと思います。