急にボールが来たので。
もとい、急に "Kinesis Streamクライアントが正常に動いたか確認したいんだけど" と言われた時の対処を書いておきます
TL;DR
AWS LambdaでAmazon Kinesis StreamのTriggerをフックしてCloudWatchのログに流し込んだだけです
しかもBlueprintをそのまま使ってるので、実質コードは書いてません
手順
前提: Amazon Kinesis Streamのストリームは作成済みとします (ここでは ks-test-st0
とします)
1. Select Blueprint / テンプレ探し
新規 AWS Lambda function を作成します
その際、Blueprintを探して使います
- Runtime: Python 2.7
- Filter:
kinesis
と入力すれば kinesis-process-record-python が見つかるので、これを選択します
2. Configure Trigger / 対象ストリームとトリガー設定
- Kinesis Stream:
ks-test-st0
- Starting position:
Latest
- Enable Trigger: ON
- (ほかはデフォルト)
3. Configure Function / Lambda関数の設定
- Name: 適宜 (ここでは
ks-testfunc0
としました) - Existing role: 適宜 (ここでは作成済みの lambda_basic_execution ロールを選択しました)
- (ほかはデフォルト)
※Roleはこの画面で新規に作成できるので、気軽に作っちゃってOKです(削除忘れずに)
レビューを経たら Create Function しましょう
4. Test
Test ボタンを押したら Sample event template から Kinesis を選び、 Save and test します
5. CloudWatchで確認
CloudWatchに移動し、ログを見てみると /aws/lambda/ks-testfunc0 というロググループができています
ここでログを確認できます
Decoded payload: .... が中身です。テストの時は Hello, this is a test 123. と出ているのが正常です
これでおしまいです。全工程で10分くらいでできます。
ちゃんとput-recordしてみる
aws cliを使って put-record してみます
$ aws kinesis put-record --stream-name ks-test-st0 --data '{"foo":1}' --partition-key 1
{
"ShardId": "shardId-000000000000",
"SequenceNumber": "49567441242410188585246498180921316713103945544971059202"
}
CloudWatchで確認
できてますねー
あとかたづけ
削除対象はこんなところです
- Amazon Kinesis Stream
- AWS Lambda ファンクション
- CloudWatch ロググループ
- IAMロール (必要なら)
特にKinesisはカネがかかりますので、ストリーム削除忘れのないように。
あとがき
久々に書いたよ。次はAWS IoTだ。