見出し画像

Kinesis StreamsとLambdaを使ってみた

このところ少し勉強したAWSとPythonを使って、データをNoSQLにため込むバックエンドみたいなのを作ってみていた。しばらく運用ツール(スクリプトとかモジュール)みたいなのしか作ってなくて、アプリケーションを作るのってこんな感じだったな、とあらためて思ったので、メモ。

作ろうとしたものはこんな感じ。とりあえずデータを受信してDynamoDBに入れてしまう、という方針。

スライド3

AWSについてちょっと勉強した知識から考えたのはこんな構成。Kinesis StreamsとかDynamoDBのトリガーとか使ってみる構成にした。「5分以内にデータ登録があったキー」を新着キーテーブルとして分けるのは少しやりすぎ感あったけど、やりたかった感。

スライド4

実際に作成してみると、こんな手順になった。各AWSサービスやPythonの不慣れな部分は、一から動作を確認しながら進めていった。いろいろWeb上の情報を検索して参考にしつつ、欲しい形にまとまってない情報はメモを作ったりもした。

Python3の対話シェル上でKinesis Streams上のレコードを読みだす
Python3の対話シェル上でKinesis Streamsにレコードを書き込む
Python3の対話シェル上でDynamoDBのアイテムを読み書き削除する
Lambdaで使うKinesis Data Streamテストイベントの作成

スライド5

できたものをCloudFormationで管理できるようにテンプレート化した。AWSコンソール(Web管理画面)上では「1つのサービス上での構築」と思っているものでも、実際には「複数のリソースの構成」だったりして、作るのと同じぐらい手間がかかった気がする。AWSコンソール上では「必要な権限を付与しますか?」的な確認ダイアログ一つのことが、一つのリソースの作成に相当したりもする。ここでもメモを一つ追加。

Lambda FunctionsをCloudFormationでデプロイするbashスクリプト

スライド6

そしてunittestを書いてみる。ここでもメモを追加。

Pythonのunittestを使ってみたメモ
Boto3(AWS SDK for Python)の利用する認証情報

こうやって実際に組んでみるというのは、大事だと思う。そう思いながら、この後は少し、Pythonの座学的な学習に戻るつもりでいる。

座学的な、つまり知識学習は大切。AWSのソリューションアーキテクト - アソシエイトの学習をしたけど、そのおかげで実装イメージを最初に作れたし、それは実際に動作するものだった。そしてハンズオン、知識学習の中で練習してみるのも大切。KinesisとかLambdaとかDynamoDBとか、始め方程度は経験していたからすぐに実装に移れたし、その程度では分からないことだらけでも何を調べればいいのかはなんとなくわかってた。そして実践は大切。教科書で勉強してみても、作ってみればまだこんなに学ぶことだらけだ。

生活にいろんなことがあって、仕事にもいろんなことがあって、仕事以外で手を動かすことがあまりなくなってた数年間だったなと思う。でもそれをやり直してみると、こんなに違う。

この記事が気に入ったらサポートをしてみませんか?