はじめに
システムの機能としてバッチ処置が必要になることはよくあります。
バッチ処理は時間がかかるものもありますが、5分以内で終わるようなものの場合は、サーバーレスで実装することでコストを抑えられます。
ここではハンズオンとして、5分以内で終わるようなシンプルなバッチ処理をAWSのサーバーレスなサービスで構築していきます。
以下のような知識がある方を対象とします。
- コマンドラインが使える。(AWS CLIがインストールされている。)
- 何かしらAWSを使ったことがある。
- AWSのマネジメントコンソールにログインできる。
- 何らかのプログラミング言語が書ける。
AWSに使い慣れている必要はないです。
また、以下のサービスを使います。
- EventBridge
- Step Functions
- Lambda
- DynamoDB
- S3
開発はAWSが提供するSAM(Serverless Application Model)を使います。ソースコードおよびAWSのリソースをコードで管理します。
また、Lambda関数のRuntimeはPython3を使います。最終的にはテストも書いて、それなりに応用可能な開発環境を作ります。
あらかじめAWSアカウントを用意してください。また、AWSのリソースには料金が発生しますのでご注意ください。
ただし、ローカルでの開発にはDynamoDB LocalやS3互換のMinioを使ってなるべく費用を抑えた開発環境を作ります。
そのため、Dockerが必要です。
作成するバッチ処理の概要
今回は「DynamoDBから取得したデータを使って、PDFのレポートを作成してS3バケットに保存する。」というバッチ処理を実装します。
以下のような構成にします。
リポジトリ
ソースコードは以下のリポジトリで公開しています。
目次
さっそくやっていきましょう。
リポジトリのコミットログを見ることで、章ごとの変更を確認できます。
※5章のみ、変更点が多いためブランチを分けています。refactoring
というブランチに切り替えることで、5章のソースコードを閲覧できます。