Initial terraform config

This commit is contained in:
Collin Duncan 2021-11-24 15:39:28 +01:00
parent 7246ecabf2
commit 333bee8c74
No known key found for this signature in database
5 changed files with 105 additions and 0 deletions

21
terraform/.terraform.lock.hcl generated Normal file
View file

@ -0,0 +1,21 @@
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/hashicorp/aws" {
version = "3.65.0"
constraints = "~> 3.27"
hashes = [
"h1:GCDkcISN83t+JK2U+ie3vaECnyxK0Sr6GjO7IrBOVeo=",
"zh:108aeaf5e18087d9ac852737a5be1347a28e40825817cc1a29ec523d40268294",
"zh:1a719c0c9754f906b2220d3bbf90d483ec0a74cf87768a464d2d657b7901ec6b",
"zh:21acdc35ae70a626cbc81eff06181a78843f1ddc2d9200f80fabf2e0466ecbda",
"zh:28846628e1a4227a1f2db256d6b22ed36922f37632999af7404aa74703cd9bfb",
"zh:32455550dbf86ae07d9782650e86d23c4fa13d7872e48680044692894e8da6ea",
"zh:4241246274627c752f9aef2806e810053306001e80fc5b51d27cbe997f75f95e",
"zh:5ca0fab3ceb3f41a97c1ebd29561a034cb83fda04da35fd5f8c3c5cb97bb3ea8",
"zh:5fed3b79d4ed6424055e8bbfb7a4393e8db5102cdba04b4590f8e0f4194637fb",
"zh:99a0bc325b0a59ded1152546c004953a2bb0e110978bf0cc55e1804384941bdb",
"zh:e74f9190a417c891992210f9af937ef55749d86a04762d982260fbbc989342a7",
"zh:fb6984405ca63d0373bd992ce157e933b8ae9dd94d74b1c5691632f062fe60b2",
]
}

17
terraform/config.tf Normal file
View file

@ -0,0 +1,17 @@
terraform {
backend "s3" {
encrypt = true
bucket = "cgduncan7-terraform-state-euc1"
key = "autobaan-dev"
region = "eu-central-1"
dynamodb_table = "cgduncan7-terraform-state-lock-euc1"
}
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.27"
}
}
required_version = ">= 1.0.0"
}

30
terraform/lambda.tf Normal file
View file

@ -0,0 +1,30 @@
resource "aws_lambda_function" "reservation_lambda" {
filename = "reservation-lambda.zip"
function_name = "process-reservation-request"
role = aws_iam_role.reservation_lambda_iam_role.arn
handler = "index.handler"
source_code_hash = filebase64sha256("reservation-lambda.zip")
runtime = "nodejs14.x"
}
resource "aws_iam_role" "reservation_lambda_iam_role" {
name = "reservation_lambda_iam_role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}

9
terraform/providers.tf Normal file
View file

@ -0,0 +1,9 @@
provider "aws" {
profile = "default"
region = "eu-central-1"
default_tags {
tags = {
Terraform = "true"
}
}
}

28
terraform/sqs.tf Normal file
View file

@ -0,0 +1,28 @@
resource "aws_sqs_queue" "lambda_input_queue" {
name = "reservation-request-queue"
}
resource "aws_sqs_queue_policy" "lambda_input_queue_policy" {
queue_url = aws_sqs_queue.lambda_input_queue.url
policy = <<POLICY
{
"Version": "2012-10-17",
"Id": "sqspolicy",
"Statement": [
{
"Sid": "First",
"Effect": "Allow",
"Principal": "*",
"Action": "sqs:SendMessage",
"Resource": "${aws_sqs_queue.lambda_input_queue.arn}",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "${aws_lambda_function.reservation_lambda.arn}"
}
}
}
]
}
POLICY
}