AWS Lambda と API Gateway を使って運用チームの負担を少しだけ軽くする

記事タイトルとURLをコピーする

 

みなさんこんにちは。
技術研究課の山田です。

今回の記事はとてもシンプルで、「API Gateway と AWS Lambda を使って運用チームの負担を少しだけ軽くするために作ったもの」をご紹介します。

なにを作ったのか

簡単に説明すると 「Backlog で起票された課題の内容/属性をコピーして、Zendesk のチケットとして起票する」を全て自動で行う仕組みを API Gateway と AWS Lambda を使って作りました。

kaizen_2

なぜ作ったのか

サーバーワークスでは、お客様のAWS導入をお手伝いさせていただく際にお客様との連絡手段として Backlog ( プロジェクト管理ツール ) を利用しており、AWS運用代行 をご利用いただくお客様との連絡には、Zendesk ( カスタマーサポートソフトウェア ) を利用しています。

通常、AWSの導入支援 で 環境/システム を構築した後は、弊社がそのまま 運用/管理 を担当させていただく場合が多いのですが、その際( 構築フェーズから運用フェーズに移行 )に上記で挙げた連絡ツールの変更 ( Backlog → Zendesk ) が発生します。
もちろん、その場合には弊社からお客様へアナウンスさせていただくのですが、運用フェーズに移行した後も Zendesk ではなく Backlog へ書き込んでしまうお客様もいらっしゃいます。
( Backlog は構築フェーズが終わった段階で閉じてしまいますが、情報参照用として期間を限定した上で 閲覧/起票 が可能な状態になっている場合があるため )

構築を担当したエンジニアや、運用チームのエンジニアは Backlog や Zendesk を常に見張っていますが、運用フェーズに移行したプロジェクトの Backlog はどうしても確認する頻度は落ちてしまいます。

お客様が Backlog で起票した課題を万が一でも見逃すことを避けるため、そして定期的に課題をチェックするという負荷を減らすために、今回の( Backlog の課題を Zendesk のチケットとして起票する )仕組みを作るに至りました。

全体構成図

冒頭でも書きましたが、API Gateway と AWS Lambda の2つで構成しています。
 

kaizen_1

動作の仕組み

中身は非常に単純です。
Backlog は課題の起票/更新時に Webhook のイベントを発火させる事が出来るので、これを利用します。

まず、Backlog で課題起票/更新時に API Gateway のエンドポイントへ Webhook で POST します。 ( 下図の② )
そして、その POST を API Gateway が受け付けて、紐付けられた Lambda function が起動、Zendesk でチケットを起票する ( 下図の③, ⑤ )、という仕組みです。

kaizen_3

設定はたったの3ステップ

この仕組を作るために設定した内容もシンプルで、3つの手順で完了します。

1. Lambda function を作成

Backlog からの Webhook イベント通知を受けて動作する、 Lambda function を作成します。
この Lambda function の中で Zendesk チケットを作成/Backlog 課題を更新等、諸々の処理を行います。
 

Lambda_icon

 

2. API Gateway で API を作成

ステップ 1. で作成した Lambda function を、API Gateway 経由で呼び出せるように設定します。
呼び出す際のHTTPメソッドを指定、それに対する Lambda function を紐付けて登録/作成します。
登録することで、Invoke URLが発行されます。

 

api_gateway_setteing

 

3. Backlog の Webhook 設定

課題を起票/更新したタイミングで特定のURLへイベント通知する、という設定を Backlog で行います。
ステップ 2. で発行された Invoke URL を Backlog へ登録します。
( 設定するには管理者権限が必要になります )

 

backlog_setting

 

以上の 3つの手順で、今回のシステムに必要な環境のセットアップが完了します。
もちろん、Lambda function のコードを多少書く必要がありますが、それ以外の設定は10分も掛からないくらいで終わると思います。

おわりに

規模はとても小さいですが、改善の取り組みの一つをご紹介しました。
そして、既にお気づきの方もいらっしゃるかと思いますが、このシステムはサーバレスで動作しています。
サーバ不要でバックエンドが作れて、ソースコードをアップするだけでこういうシステムが作れるというのは嬉しい限りですね!