Skip to content

Instantly share code, notes, and snippets.

View hendrixroa's full-sized avatar
🏠
Working from home

Hendrix Roa hendrixroa

🏠
Working from home
View GitHub Profile
@hendrixroa
hendrixroa / s3_object.tf
Created March 23, 2023 20:18
Creating s3 object
resource "aws_s3_bucket_object" "main" {
bucket = var.s3_bucket_id
key = var.key_s3_bucket
source = data.archive_file.main.output_path
etag = data.archive_file.main.output_base64sha256
depends_on = [
data.archive_file.main,
null_resource.main,
]
@hendrixroa
hendrixroa / lambda_layer_definition.tf
Created March 23, 2023 20:15
Lambda layer definition
resource "aws_lambda_layer_version" "main" {
layer_name = var.lambda_layer_name
description = var.description
s3_bucket = var.s3_bucket_id
s3_key = var.key_s3_bucket
source_code_hash = data.archive_file.main.output_base64sha256
compatible_runtimes = [var.lambda_runtime]
depends_on = [
aws_s3_bucket_object.main,
@hendrixroa
hendrixroa / packaging.tf
Created March 23, 2023 17:48
Packaging archive to zip
data "archive_file" "main" {
type = "zip"
source_dir = var.code_location
output_path = "${path.module}/.terraform/archive_files/${var.filename}"
}
@hendrixroa
hendrixroa / aws_cloudwatch_log_lambda.tf
Created March 23, 2023 17:45
Creating AWS Cloudwatch log using terraform with prefix for lambda function convention
resource "aws_cloudwatch_log_group" "main" {
name = "/aws/lambda/${var.lambda_function_name}"
retention_in_days = var.log_retention
}
@hendrixroa
hendrixroa / lambda_basic_iam_policies.tf
Created March 23, 2023 17:43
Lambda iam policies basic
resource "aws_iam_role_policy" "lambda_basic_policy" {
name = "lambda_${var.lambda_function_name}_basic_policy"
role = aws_iam_role.lambda_role.id
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
@hendrixroa
hendrixroa / lambda_role_output.tf
Last active March 23, 2023 17:42
Lambda role output
output "lambda_role" {
description = "IAM Role id to attach more policies"
value = aws_iam_role.lambda_role.id
}
@hendrixroa
hendrixroa / lambda_iam_role.tf
Created March 23, 2023 17:39
AWS IAM role example for lambda functions
resource "aws_iam_role" "lambda_role" {
name = "lambda-name"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
@hendrixroa
hendrixroa / variable.tf
Created March 23, 2023 17:34
Variable default statement
variable "name" {
default = "Some useful name"
}
@hendrixroa
hendrixroa / lambda_function.tf
Created March 23, 2023 17:31
Common lambda function definition
resource "aws_lambda_function" "main" {
function_name = var.lambda_function_name
handler = var.handler_name
runtime = var.lambda_runtime
timeout = var.timeout
memory_size = var.memory
role = aws_iam_role.lambda_role.arn
filename = "${path.module}/.terraform/archive_files/${var.filename}"
source_code_hash = data.archive_file.main[count.index].output_base64sha256
@hendrixroa
hendrixroa / s3_object.tf
Created March 21, 2023 17:00
S3 object loop to iterate over a folder to upload all files from a folder directory
resource "aws_s3_object" "storage" {
for_each = fileset("${var.path_files}/", "*")
bucket = aws_s3_bucket.storage_bucket.id
key = each.value
source = "${var.path_files}/${each.value}"
etag = filemd5("${var.path_files}/${each.value}")
acl = "public-read"
}