2026-02-18

AWS Lambda ve Terraform: Adım Adım Kurulum Rehberi

AWSTerraformLambdaServerlessIaCDevOps
A

AWS Lambda ve Terraform: Adım Adım Kurulum Rehberi

Terraform, altyapı yönetimini kod ile yapmanızı sağlayan (IaC) güçlü bir araçtır. AWS Lambda ise sunucu yönetimi olmadan kod çalıştırmanıza olanak tanır. Bu ikisini birleştirmek, ölçeklenebilir ve tekrar kullanılabilir sunucusuz mimariler oluşturmanın en etkili yoludur.

Bu rehberde, Terraform kullanarak baştan sona bir AWS Lambda fonksiyonu oluşturacağız.

<div class="toc"> <ul> <li><a href="#on-gereksinimler">Ön Gereksinimler</a></li> <li><a href="#adim-1-proje-yapisi">Adım 1: Proje Yapısı</a></li> <li><a href="#adim-2-iam-rolu-olusturma">Adım 2: IAM Rolü Oluşturma</a></li> <li><a href="#adim-3-lambda-kodunu-hazirlama">Adım 3: Lambda Kodunu Hazırlama</a></li> <li><a href="#adim-4-terraform-ile-lambda-tanimlama">Adım 4: Terraform ile Lambda Tanımlama</a></li> <li><a href="#adim-5-dagitim">Adım 5: Dağıtım (Deploy)</a></li> <li><a href="#adim-6-kaynaklari-temizleme">Adım 6: Kaynakları Temizleme</a></li> <li><a href="#sonuc">Sonuç</a></li> </ul> </div>

Ön Gereksinimler

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  1. AWS Hesabı: Erişim anahtarlarına sahip bir kullanıcı.
  2. AWS CLI: Yüklü ve yapılandırılmış (aws configure).
  3. Terraform: Yüklü (v1.0+).

Adım 1: Proje Yapısı

Proje dizininizi oluşturun ve aşağıdaki dosyaları hazırlayın:

mkdir lambda-terraform-demo
cd lambda-terraform-demo
touch main.tf variables.tf outputs.tf lambda_function.py

main.tf dosyasında AWS sağlayıcısını (provider) tanımlayarak başlayalım:

provider "aws" {
  region = "eu-central-1" # Veya tercih ettiğiniz bölge
}

Adım 2: IAM Rolü Oluşturma

Lambda fonksiyonunun çalışabilmesi için bir IAM rolüne ihtiyacı vardır. Bu rol, Lambda'nın AWS servislerine (örneğin CloudWatch Logs) erişmesine izin verir.

# Lambda için IAM Rolü (Assume Role Policy)
resource "aws_iam_role" "lambda_exec" {
  name = "serverless_lambda"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Action = "sts:AssumeRole"
      Effect = "Allow"
      Sid    = ""
      Principal = {
        Service = "lambda.amazonaws.com"
      }
      }
    ]
  })
}

# CloudWatch Logs için Temel İzinler
resource "aws_iam_role_policy_attachment" "lambda_policy" {
  role       = aws_iam_role.lambda_exec.name
  policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
}

Adım 3: Lambda Kodunu Hazırlama

Basit bir Python fonksiyonu oluşturalım. lambda_function.py dosyasını açın:

def lambda_handler(event, context):
    print("Terraform ile Lambda tetiklendi!")
    return {
        'statusCode': 200,
        'body': 'Merhaba, Terraform!'
    }

Adım 4: Terraform ile Lambda Tanımlama

Şimdi Lambda fonksiyonunun kendisini tanımlayacağız. Terraform'un kodu AWS'e yükleyebilmesi için önce .zip formatına getirmemiz gerekir.

# Python kodunu zip'le
data "archive_file" "lambda_zip" {
  type        = "zip"
  source_file = "lambda_function.py"
  output_path = "lambda_function_payload.zip"
}

# Lambda Fonksiyonu Kaynağı
resource "aws_lambda_function" "test_lambda" {
  # Yerel zip dosyasını kullan
  filename      = "lambda_function_payload.zip"
  function_name = "lambda_function_name"
  role          = aws_iam_role.lambda_exec.arn
  handler       = "lambda_function.lambda_handler"

  # Kod değişikliğinde yeniden deploy etmek için hash kontrolü
  source_code_hash = data.archive_file.lambda_zip.output_base64sha256

  runtime = "python3.9"

  environment {
    variables = {
      foo = "bar"
    }
  }
}

Adım 5: Dağıtım

Yapılandırmayı uygulamak için terminalden şu komutları çalıştırın:

  1. Başlat: Terraform'u ve gerekli eklentileri indirir.

    terraform init
    
  2. Planla: Yapılacak değişiklikleri görün.

    terraform plan
    
  3. Uygula: Kaynakları oluşturun.

    terraform apply -auto-approve
    

İşlem tamamlandığında, AWS Konsolu üzerinden Lambda fonksiyonunuzu görebilir ve "Test" sekmesinden çalıştırabilirsiniz.

Adım 6: Kaynakları Temizleme

Denemeyi bitirdiğinizde maliyet oluşmaması için kaynakları silebilirsiniz:

terraform destroy -auto-approve

Sonuç

Bu rehberde, Terraform kullanarak temel bir AWS Lambda fonksiyonunu nasıl otomatize edeceğinizi öğrendiniz. IaC yaklaşımı, altyapınızın versiyonlanabilir, test edilebilir ve tekrar üretilebilir olmasını sağlar.

Daha ileri seviye konular için AWS Danışmanlık hizmetlerimize göz atabilir veya karmaşık altyapılar için Terraform Danışmanlık desteği alabilirsiniz. Ayrıca konteyner tabanlı çözümler için DevOpsN üzerindeki diğer makalelerimizi inceleyebilirsiniz.

Kaynak / Source: https://awsfundamentals.com/blog/aws-lambda-with-terraform