Creates an AWS Lambda function and an AWS Systems Manager Parameter Store parameter
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.22"
}
}
required_version = ">= 0.14.9"
}
provider "aws" {
profile = "default"
region = "us-east-1"
}
variable "ssm_parameter_name" {
type = string
default = "ExampleParameterName"
}
data "aws_caller_identity" "current" {}
data "aws_region" "current" {}
data "aws_partition" "current" {}
resource "aws_lambda_function" "lambda_function" {
function_name = "SSMParameterFunction"
filename = data.archive_file.lambda_zip_file.output_path
source_code_hash = data.archive_file.lambda_zip_file.output_base64sha256
handler = "app.handler"
role = aws_iam_role.lambda_iam_role.arn
runtime = "nodejs16.x"
environment {
variables = {
SSMParameterName = var.ssm_parameter_name
}
}
}
data "archive_file" "lambda_zip_file" {
type = "zip"
source_file = "${path.module}/src/app.js"
output_path = "${path.module}/lambda.zip"
}
data "aws_iam_policy" "lambda_basic_execution_role_policy" {
name = "AWSLambdaBasicExecutionRole"
}
resource "aws_iam_role" "lambda_iam_role" {
name_prefix = "LambdaSSMParameterRole-"
managed_policy_arns = [
data.aws_iam_policy.lambda_basic_execution_role_policy.arn,
aws_iam_policy.lambda_policy.arn
]
assume_role_policy = <
Visit the GitHub repo for this pattern.
git clone https://github.com/aws-samples/serverless-patterns/ cd serverless-patterns/lambda-ssm-parameter-terraform
terraform initterraform apply
terraform destroy
.terraform show