67 lines
1.5 KiB
HCL
67 lines
1.5 KiB
HCL
resource "aws_kinesis_stream" "test_stream" {
|
|
name = "terraform-kinesis-test"
|
|
shard_count = 1
|
|
retention_period = 48
|
|
|
|
shard_level_metrics = [
|
|
"IncomingBytes",
|
|
"OutgoingBytes",
|
|
]
|
|
|
|
stream_mode_details {
|
|
stream_mode = "PROVISIONED"
|
|
}
|
|
|
|
tags = {
|
|
Environment = "test"
|
|
}
|
|
}
|
|
|
|
data "aws_iam_policy_document" "assume_role" {
|
|
statement {
|
|
effect = "Allow"
|
|
|
|
principals {
|
|
type = "Service"
|
|
identifiers = ["lambda.amazonaws.com"]
|
|
}
|
|
|
|
actions = ["sts:AssumeRole"]
|
|
}
|
|
}
|
|
|
|
resource "aws_iam_role" "iam_for_lambda" {
|
|
name = "iam_for_lambda"
|
|
assume_role_policy = data.aws_iam_policy_document.assume_role.json
|
|
}
|
|
|
|
data "archive_file" "lambda" {
|
|
type = "zip"
|
|
source_file = "lambda.js"
|
|
output_path = "lambda_function_payload.zip"
|
|
}
|
|
|
|
resource "aws_lambda_function" "test_lambda" {
|
|
# If the file is not in the current working directory you will need to include a
|
|
# path.module in the filename.
|
|
filename = "lambda_function_payload.zip"
|
|
function_name = "lambda_function_name"
|
|
role = aws_iam_role.iam_for_lambda.arn
|
|
handler = "index.test"
|
|
|
|
source_code_hash = data.archive_file.lambda.output_base64sha256
|
|
|
|
runtime = "nodejs18.x"
|
|
|
|
environment {
|
|
variables = {
|
|
foo = "bar"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "aws_lambda_event_source_mapping" "kinesis_to_sqs" {
|
|
event_source_arn = aws_kinesis_stream.test_stream.arn
|
|
function_name = aws_lambda_function.test_lambda.arn
|
|
starting_position = "LATEST"
|
|
} |