From a975a4ed1eec13c6e40a54b10e7015d3e8f87f6e Mon Sep 17 00:00:00 2001 From: kakakakakku Date: Sat, 6 Sep 2025 23:11:14 +0900 Subject: [PATCH 1/6] kinesis-lambda-terraform: Fix README.md --- kinesis-lambda-terraform/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kinesis-lambda-terraform/README.md b/kinesis-lambda-terraform/README.md index ef9105e2c..97f6f90f3 100644 --- a/kinesis-lambda-terraform/README.md +++ b/kinesis-lambda-terraform/README.md @@ -1,6 +1,6 @@ -# AWS Kinesis Data Streams to AWS Lambda +# Amazon Kinesis Data Streams to AWS Lambda -This pattern creates an AWS Kinesis Data Stream, a stream consumer, and an AWS Lambda function. When data is added to the stream, the Lambda function is invoked. +This pattern creates an AWS Kinesis Data Streams, a stream consumer, and an AWS Lambda function. When data is added to the stream, the Lambda function is invoked. Learn more about this pattern at Serverless Land Patterns: [https://serverlessland.com/patterns/kinesis-to-lambda-terraform](https://serverlessland.com/patterns/kinesis-to-lambda-terraform) @@ -83,4 +83,4 @@ When you are logged in, you can generate data for your stream test. ``` ---- -Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. \ No newline at end of file +Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. From f7dafae8dcaafa181ec5145336ddca7d30fdcc8c Mon Sep 17 00:00:00 2001 From: kakakakakku Date: Sat, 6 Sep 2025 23:12:26 +0900 Subject: [PATCH 2/6] kinesis-lambda-terraform: Update runtime to nodejs22.x --- kinesis-lambda-terraform/main.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kinesis-lambda-terraform/main.tf b/kinesis-lambda-terraform/main.tf index 6451e1471..6e14e3fec 100644 --- a/kinesis-lambda-terraform/main.tf +++ b/kinesis-lambda-terraform/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = "~> 4.22" + version = "~> 5.0" } } @@ -22,7 +22,7 @@ resource "aws_lambda_function" "sample_lambda" { function_name = "sample-lambda" role = aws_iam_role.lambda_role.arn handler = "index.handler" - runtime = "nodejs16.x" # Change to your preferred runtime + runtime = "nodejs22.x" # Change to your preferred runtime } resource "aws_iam_role" "lambda_role" { name = "lambda-role" @@ -54,4 +54,4 @@ output "kinesis_data_stream" { output "consumer_function" { value = aws_lambda_function.sample_function.arn description = "Consumer Function function name" -} \ No newline at end of file +} From c78da5ef788c2fa0475b0efa3aac46c726fc8aa6 Mon Sep 17 00:00:00 2001 From: kakakakakku Date: Sat, 6 Sep 2025 23:15:50 +0900 Subject: [PATCH 3/6] kinesis-lambda-terraform: Fix wrong aws_lambda_function reference --- kinesis-lambda-terraform/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kinesis-lambda-terraform/main.tf b/kinesis-lambda-terraform/main.tf index 6e14e3fec..44a699e90 100644 --- a/kinesis-lambda-terraform/main.tf +++ b/kinesis-lambda-terraform/main.tf @@ -52,6 +52,6 @@ output "kinesis_data_stream" { } output "consumer_function" { - value = aws_lambda_function.sample_function.arn + value = aws_lambda_function.sample_lambda.arn description = "Consumer Function function name" } From bf1f11a4f67fe2052cc139527846a9b6a0320743 Mon Sep 17 00:00:00 2001 From: kakakakakku Date: Sat, 6 Sep 2025 23:27:18 +0900 Subject: [PATCH 4/6] kinesis-lambda-terraform: Add .gitignore --- kinesis-lambda-terraform/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 kinesis-lambda-terraform/.gitignore diff --git a/kinesis-lambda-terraform/.gitignore b/kinesis-lambda-terraform/.gitignore new file mode 100644 index 000000000..fb7595fad --- /dev/null +++ b/kinesis-lambda-terraform/.gitignore @@ -0,0 +1 @@ +lambda.zip From 2d34cae1007a3cac4a78dfd32df666c74e499a2c Mon Sep 17 00:00:00 2001 From: kakakakakku Date: Sat, 6 Sep 2025 23:38:51 +0900 Subject: [PATCH 5/6] kinesis-lambda-terraform: Support build for Lambda ZIP --- kinesis-lambda-terraform/main.tf | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/kinesis-lambda-terraform/main.tf b/kinesis-lambda-terraform/main.tf index 44a699e90..75e498743 100644 --- a/kinesis-lambda-terraform/main.tf +++ b/kinesis-lambda-terraform/main.tf @@ -17,11 +17,19 @@ resource "aws_kinesis_stream" "sample_stream" { shard_count = 1 retention_period = 24 } + +data "archive_file" "lambda_zip_file" { + type = "zip" + source_file = "${path.module}/src/app.js" + output_path = "${path.module}/lambda.zip" +} + resource "aws_lambda_function" "sample_lambda" { - filename = "sample_lambda.zip" # Path to your Lambda code ZIP file + filename = data.archive_file.lambda_zip_file.output_path + source_code_hash = data.archive_file.lambda_zip_file.output_base64sha256 function_name = "sample-lambda" role = aws_iam_role.lambda_role.arn - handler = "index.handler" + handler = "app.handler" runtime = "nodejs22.x" # Change to your preferred runtime } resource "aws_iam_role" "lambda_role" { From 76f8e41c9b7a4d6e29bcd08a7dd90e16aef13281 Mon Sep 17 00:00:00 2001 From: kakakakakku Date: Sat, 6 Sep 2025 23:49:43 +0900 Subject: [PATCH 6/6] kinesis-lambda-terraform: Add Lambda permissions for Kinesis Data Streams --- kinesis-lambda-terraform/main.tf | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/kinesis-lambda-terraform/main.tf b/kinesis-lambda-terraform/main.tf index 75e498743..a7343b137 100644 --- a/kinesis-lambda-terraform/main.tf +++ b/kinesis-lambda-terraform/main.tf @@ -48,6 +48,44 @@ resource "aws_iam_role" "lambda_role" { }) } +resource "aws_iam_policy" "lambda_kinesis_policy" { + name = "lambda-kinesis-policy" + + policy = jsonencode( + { + Version = "2012-10-17", + Statement = [ + { + Effect = "Allow", + Action = [ + "kinesis:GetRecords", + "kinesis:GetShardIterator", + "kinesis:DescribeStream", + "kinesis:DescribeStreamSummary", + "kinesis:ListShards", + "kinesis:ListStreams" + ], + Resource = aws_kinesis_stream.sample_stream.arn + }, + { + Effect = "Allow", + Action = [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + Resource = "arn:aws:logs:*:*:*" + } + ] + } + ) +} + +resource "aws_iam_role_policy_attachment" "lambda_kinesis_policy_attachment" { + role = aws_iam_role.lambda_role.name + policy_arn = aws_iam_policy.lambda_kinesis_policy.arn +} + resource "aws_lambda_event_source_mapping" "sample_mapping" { event_source_arn = aws_kinesis_stream.sample_stream.arn function_name = aws_lambda_function.sample_lambda.arn