Blog

Amazon EventBridge API 送信先を利用してAWS Amplifyで配信している静的ページの定期リビルド機構を組んだ話

はじめに

こんにちは。ニフティ株式会社の添野です。

AWS Amplifyで配信している静的ページに対する定期リビルド機構を組む必要があったので、その際にAmazon EventBridge API 送信先を利用した話を共有します。

背景

社内のとあるサービスで利用する静的ページの配信基盤にAWS Amplifyを採用しており、そのページの中には定期的に変わるコンテンツが存在します。その仕様のため定期的にリビルドすることが必要になりました。最初はAWS Lambdaを利用してAWS AmplifyのIncomingWebHookを定期的に叩こうかなと思いましたが、AWS Lambda上のコードの管理やAWS LambdaランタイムのEOL対応、AWS Lambdaに対するメモリ設定など気にする項目が増えて、手間だなと思いました。そこでもう少し良さげな機能が無いかなと思い探してみたら、Amazon EventBridgeの中にあるAPI 送信先を見つけました。

API 送信先とは?

公式ドキュメントによれば、API送信先(あるいはAPI Destinationとも呼ばれる)とは、

AWS サービスまたはリソースをターゲットとして呼び出す方法と同様に、ルールのターゲットとして呼び出すことができる HTTP エンドポイントです。

とのことで、レートリミットなどの制御やセキュリティの機能なども提供します。

API 送信先を利用した定期リビルド機構について

ここではTerraformのコードを示しつつ、組んだ話について説明します。

まずは、対象となるAWS Amplifyのアプリケーションに対して、Incoming WebHookを設定します。叩くとAmplifyでビルドと公開処理が走ります。

次に、毎日07:30に定期的にリビルドを走らせるルールを作成し、ターゲットとしてAWS AmplifyのIncoming WebHookに前置するAPI送信先を指定します。ここで、Amazon EventBridgeの接続先(aws_cloudwatch_event_connection)では提供されている認証方式(APIキー認証、Basic認証、OAuth認証)を必ず選択しないといけない点に注意する必要があります。今回はBasic認証を選択することにしました。

実際に定期リビルドされている様子を示します。Updatedが07:31、Last commitがIncoming WebHook起動であることが示されています。

料金(東京リージョンを仮定する)は、API 送信先を利用する方式では0.24USD/100万呼び出しであり、対してAWS Lambdaを利用する方式では、メモリを128MB指定して、呼び出しに300ミリ秒が掛かると、0.0000000021 x 300USD/呼び出しであり、AWS Lambdaを利用する方式の方が若干高くなります。

おわりに

今回は、API 送信先を利用してAmplifyで配信している静的ページに対する定期リビルド機構を組んだ話を共有しました。AWS Amplifyのリビルド機構を組みたい方の参考になれば幸いです。

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!