質問: kinesisからLamdbaへ連携する社内システムがあります。 このシステムにおいて以下のことがわかりませんので調べ方を 教えて頂けないでしょうか ・kinesisがどのLamdbaを呼ぶかわかりません。 kinesisのストリーム名はわかっており、kinesisのコンソールから 次にどのLamdbaを叩くかがわかりませんでした。逆にLamdbaのコンソールから どのkinesisから連携されるかわわかります。但し、Lamdbaの数が多いので大変です。 ・実行されるLamdbaがわかったとして、Lamdba関数のどの部分が実行されるか わかりません。Lamdbaコンソールを開くとデフォルトでmain.pyが表示されており これが実行されると思うのですがdefが複数定義されており、どれが実行されるか わかりません。上から全て実行されるのでしょうか? ちなみに一番上のdefは、引数が指定していされているのですが この値をkinesisから取得する処理がわかりませんでした。 ・Lambda関数をトレース、デバックする方法がわかりません
回答: KinesisがLambda関数を呼ぶわけではなく、AWS Lambda が Kinesisのストリームを監視して、新しいレコードが検出されるとLambda関数を呼び出します。 試してないので間違ってるかもですが、ListEventSourceMappings APIを使って、EventSourceArn に Kinesis ストリームの ARN を指定すればリストアップされるのではないかと思いますので、試してみてください。 以下、AWS CLIの例です。 ``` aws lambda list-event-source-mappings --event-source "arn:aws:kinesis:REGION:AWSACCOUNT:stream/KINESISSTREAM" ``` 引数の --event-source は、Kinesis ストリームのARNです。 ※もしかしたら、`--function-name FUNCTION名` のオプションが必要かもしれません。その時は`aws lambda list-functions` の結果から 関数名を取得して、順次、`list-event-source-mappings` を呼び出すなどしてください。) Lambdaがコードを呼び出す際ハンドラーを呼び出します。ハンドラーは次の構文です。 ご参考)https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-programming-model-handler-types.html ``` def handler_name(event, context): ... return some_value ``` 処理のトレースは、ログを見るか、X-Ray SDK を使ってみると良いと思います。 ドキュメントはこの辺↓です。 https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-logging.html https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-tracing.html