aws環境でnode.js、lambda、CodeCommit、CodeBuild、CloudFormation、CodePipelineを使って開発作業を自動化する


はじめに

システムを作成する上で、運用や諸々の管理にかかる手間は相当なものです。そのため運用にかかる作業を自動化することで、本来注力したい付加価値を生むクリエイティブな仕事に専念できるようにしようと言われています(Twelve-Factor AppAWS Well-Architected等)。そこで本記事ではawsでサーバレス環境を構築する上で必要なデプロイや管理作業を自動化し、開発者の作業ミスや手間を減らし、開発作業を効率化していくための情報をまとめます。

例えば、リモートリポジトリに変更をコミットするたびに自動的にテストが実行され、テスト結果がエラーの場合はメールで通知し、エラーがなかった場合はデプロイを実行するといった処理を自動化します。

各記事

以下に本稿のテーマに沿って作成した各記事へのリンクを貼ります。

Cloudformationを使ったlambda単体のデプロイ

デプロイの自動化のシンプルな例として、Cloudformationを使ったlambda単体のデプロイについて以下にまとめています。
CloudFormationを使ってlambda(node.js)環境を構築する

lambdaの起動条件(トリガー)込みでデプロイする例

lambda単体ではなく、lambdaの起動条件(トリガー)込みでデプロイする例について以下記事にまとめています。
CloudFormationを使ってCloudWatch Eventsでスケジュール起動されるlambdaをデプロイする

CodeBuildを使ってデプロイおよびテストを実行する

(JenkinsのようなCIツールである)CodeBuildを使ってデプロイおよびテストを実行する手段について以下にまとめています。
aws CodeBuildを使ってlambda(node.js)環境をテスト→デプロイする

コミットする度に自動テスト実行し、エラーならメール通知する

リモートリポジトリにコミットする度に自動的にテストを実行し、テストでエラーが出た場合メールで通知する仕組みの構築について以下にまとめています。
aws CodeBuildとAmazon SNSを組み合わせて単体テストエラー時にメールする

cloudformationのテンプレートをチェックしてからデプロイする

CodeBuildでデプロイする時に、事前にテンプレートファイルの文法チェックやスタックの存在有無をチェックしてからデプロイするように改良を加えたものを以下にまとめています。
CodeBuildからCloudFormationを使ってデプロイする時にテンプレートファイルの文法チェックやスタックの存在有無をチェックしてからデプロイする

各記事と使用しているawsサービスの関係をまとめると以下表のようになります。

記事 Lambda CloudFormation CodeBuild CodeCommit CodePipeline aws cli CloudWatchEvents Amazon SNS
CloudFormationを使ってlambda(node.js)環境を構築する
CloudFormationを使ってCloudWatch Eventsでスケジュール起動されるlambdaをデプロイする
aws CodeBuildを使ってlambda(node.js)環境をテスト→デプロイする
aws CodeBuildとAmazon SNSを組み合わせて単体テストエラー時にメールする
CodeBuildからCloudFormationを使ってデプロイする時にテンプレートファイルの文法チェックやスタックの存在有無をチェックしてからデプロイする

まとめ

本記事では、aws上でサーバレスなシステムを構築する上で、デプロイや開発に伴う作業等を自動化する手段を、私が今まで記事にしたものをまとめています。新たに記事を書いたら、ここに追加していきたいと思います。