どうも、とがみんです。
前回の記事で、AWSのマネジメントコンソールからぽちぽちリソースを作成していきました。
この記事ではServerless Frameworkを活用して、Amazon Kinesis Data StreamからLambdaを通してデータを取得し、CloudWatchに出力する簡易アプリケーションを作成してみます。
今回作成するもの
今回作成するものは、前回コンソールから作成したものと同じで、 ローカルPCからKinesisにデータを送信し、Kinesisでの受信をトリガーにLambdaが起動し、CloudWatchにログが出力されるというものです。
作成手順概要
- Serverless Frameworkを活用したプロジェクトの作成
- コードの作成
- デプロイと動作確認
作成手順詳細
Serverless Frameworkを活用したプロジェクトの作成
Serverless Frameworkを活用したプロジェクトを作成します。
作業ディレクトリに移動し、下記のコマンドを実行して、Serverlessアプリケーションの雛形を作成します。
今回はPythonを使用します。
コードの作成とデプロイ
functions
呼び出す関数はhandler.helloStreamで、resourcesに記載の権限を付与したロールをLambda関数にアタッチします。
Lambda関数のイベントトリガーはKinesisに設定し、Kinesisからのデータ取得単位であるbatchSizeは1にしています。
StartingPositionは、Kinesisのデータの読み取りを開始する場所を最新に指定しています。
イベントソースとのマッピングを有効化するために、enabledはtrueにしています。
TestStream
Kinesis Data Streamに関するコードを記述しています。
シャード数は1に設定しています。
KinesisLambdaTestRole
Lambda関数がKinesisに対するアクセスや、CloudWatchに対してログを書き込んだりする権限を付与します。
AWSによってデフォルトで準備されているAWSLambdaKinesisExecutionRoleのポリシーを付与しています。
関数の処理内容としては、Kinesisへのデータ取得をトリガーに、上記関数が動作し、取得したデータをログに出力するというシンプルな処理になります。
デプロイと動作確認
コードが記載できたら下記のコマンドを実行し、デプロイします。
デプロイが完了すると、KinesisやLambda関数が作成されていることが確認できます。
下記のコマンドを実行し、Kinesisにデータを入れて動作を確認します。
投入したデータがCloudWatchのログに出力されていることが確認できました。