Kinesis

【AWS】Amazon Kinesis Data StreamをServerless Frameworkを活用して構築する

どうも、とがみんです。
前回の記事で、AWSのマネジメントコンソールからぽちぽちリソースを作成していきました。

この記事ではServerless Frameworkを活用して、Amazon Kinesis Data StreamからLambdaを通してデータを取得し、CloudWatchに出力する簡易アプリケーションを作成してみます。

今回作成するもの

今回作成するものは、前回コンソールから作成したものと同じで、 ローカルPCからKinesisにデータを送信し、Kinesisでの受信をトリガーにLambdaが起動し、CloudWatchにログが出力されるというものです。

作成手順概要

  1. Serverless Frameworkを活用したプロジェクトの作成
  2. コードの作成
  3. デプロイと動作確認

作成手順詳細

Serverless Frameworkを活用したプロジェクトの作成

Serverless Frameworkを活用したプロジェクトを作成します。
作業ディレクトリに移動し、下記のコマンドを実行して、Serverlessアプリケーションの雛形を作成します。
今回はPythonを使用します。

serverless create –template aws-python3

コードの作成とデプロイ

functions
呼び出す関数はhandler.helloStreamで、resourcesに記載の権限を付与したロールをLambda関数にアタッチします。

Lambda関数のイベントトリガーはKinesisに設定し、Kinesisからのデータ取得単位であるbatchSizeは1にしています。

StartingPositionは、Kinesisのデータの読み取りを開始する場所を最新に指定しています。

イベントソースとのマッピングを有効化するために、enabledtrueにしています。

TestStream
Kinesis Data Streamに関するコードを記述しています。
シャード数は1に設定しています。

KinesisLambdaTestRole
Lambda関数がKinesisに対するアクセスや、CloudWatchに対してログを書き込んだりする権限を付与します。
AWSによってデフォルトで準備されているAWSLambdaKinesisExecutionRoleのポリシーを付与しています。

関数の処理内容としては、Kinesisへのデータ取得をトリガーに、上記関数が動作し、取得したデータをログに出力するというシンプルな処理になります。

デプロイと動作確認

コードが記載できたら下記のコマンドを実行し、デプロイします。
デプロイが完了すると、KinesisやLambda関数が作成されていることが確認できます。

$ serverless deploy

下記のコマンドを実行し、Kinesisにデータを入れて動作を確認します。

$ aws kinesis put-record –stream-name testStream –partition-key 123 –data testdata

投入したデータがCloudWatchのログに出力されていることが確認できました。

参考

Kinesis