{"id":36506,"date":"2025-12-19T03:00:49","date_gmt":"2025-12-19T00:00:49","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/"},"modified":"2025-12-19T03:00:49","modified_gmt":"2025-12-19T00:00:49","slug":"go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/","title":{"rendered":"Go vs Python AWS Lambda&#8217;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#8217;leri ile)"},"content":{"rendered":"<h2>Go vs Python AWS Lambda&#8217;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#8217;leri ile)<\/h2>\n<p>Sunucusuz mimariler, geli\u015ftiricilere altyap\u0131 y\u00f6netimi y\u00fck\u00fcn\u00fc hafifleterek daha h\u0131zl\u0131 ve \u00f6l\u00e7eklenebilir uygulamalar olu\u015fturma imkan\u0131 sunar. AWS Lambda, bu alandaki en pop\u00fcler hizmetlerden biridir. Bu makalede, AWS Lambda \u00fczerinde Go ve Python dillerinin performans, geli\u015ftirme h\u0131z\u0131 ve maliyet a\u00e7\u0131s\u0131ndan kar\u015f\u0131la\u015ft\u0131rmas\u0131n\u0131, Terraform ile altyap\u0131 y\u00f6netimi ve Function URL&#8217;lerinin pratik kullan\u0131m\u0131 \u00fczerinden ele alaca\u011f\u0131z.<\/p>\n<h3>Neden Go ve Python AWS Lambda i\u00e7in Pop\u00fcler Se\u00e7enekler?<\/h3>\n<p>AWS Lambda i\u00e7in dil se\u00e7imi, projenin gereksinimlerine, ekibin deneyimine ve performans beklentilerine g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir. Go ve Python, farkl\u0131 avantajlar\u0131yla Lambda geli\u015ftiricileri aras\u0131nda \u00f6ne \u00e7\u0131kan iki pop\u00fcler dildir.<\/p>\n<h4>Go&#8217;nun Avantajlar\u0131 (Performans, Derlenmi\u015f Yap\u0131)<\/h4>\n<p>Go (Golang), Google taraf\u0131ndan geli\u015ftirilen, derlenmi\u015f, statik tipli bir programlama dilidir. Lambda ortam\u0131nda Go&#8217;yu tercih etmenin ba\u015fl\u0131ca nedenleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Y\u00fcksek Performans:<\/strong> Go, derlenmi\u015f bir dil oldu\u011fu i\u00e7in \u00e7al\u0131\u015fma zaman\u0131 performans\u0131 genellikle yorumlanm\u0131\u015f dillere g\u00f6re daha y\u00fcksektir. Bu, \u00f6zellikle CPU yo\u011fun veya d\u00fc\u015f\u00fck gecikme s\u00fcresi gerektiren i\u015f y\u00fckleri i\u00e7in kritik bir avantajd\u0131r.<\/li>\n<li><strong>D\u00fc\u015f\u00fck Bellek T\u00fcketimi:<\/strong> Go uygulamalar\u0131 genellikle daha az bellek kullan\u0131r. Bu durum, Lambda&#8217;n\u0131n bellek tabanl\u0131 faturaland\u0131rma modeli g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda maliyet avantaj\u0131 sa\u011flayabilir.<\/li>\n<li><strong>H\u0131zl\u0131 So\u011fuk Ba\u015flang\u0131\u00e7 (Cold Start):<\/strong> Go ikilileri genellikle k\u00fc\u00e7\u00fckt\u00fcr ve h\u0131zl\u0131 bir \u015fekilde ba\u015flat\u0131labilir. Bu, sunucusuz mimarilerde s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan so\u011fuk ba\u015flang\u0131\u00e7 sorununu minimize etmeye yard\u0131mc\u0131 olur.<\/li>\n<li><strong>Tek \u0130kili Dosya:<\/strong> Go uygulamalar\u0131, t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 i\u00e7eren tek bir statik ikili dosya halinde derlenebilir. Bu, da\u011f\u0131t\u0131m\u0131 basitle\u015ftirir ve ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi karma\u015fas\u0131n\u0131 azalt\u0131r.<\/li>\n<\/ul>\n<h4>Python&#8217;\u0131n Avantajlar\u0131 (Geli\u015ftirme H\u0131z\u0131, Ekosistem)<\/h4>\n<p>Python, y\u00fcksek seviyeli, yorumlanm\u0131\u015f bir programlama dilidir ve geni\u015f bir kullan\u0131m alan\u0131na sahiptir. Lambda&#8217;da Python&#8217;\u0131 tercih etmenin nedenleri ise \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>H\u0131zl\u0131 Geli\u015ftirme:<\/strong> Python&#8217;\u0131n basit ve okunabilir s\u00f6zdizimi, geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r. Prototipleme ve h\u0131zl\u0131 iterasyonlar i\u00e7in idealdir.<\/li>\n<li><strong>Geni\u015f Ekosistem ve K\u00fct\u00fcphaneler:<\/strong> Python, veri bilimi, makine \u00f6\u011frenimi, web geli\u015ftirme ve otomasyon gibi bir\u00e7ok alanda zengin bir k\u00fct\u00fcphane ve \u00e7er\u00e7eve ekosistemine sahiptir. Bu, bir\u00e7ok i\u015flevselli\u011fi kolayca entegre etme imkan\u0131 sunar.<\/li>\n<li><strong>B\u00fcy\u00fck Geli\u015ftirici Toplulu\u011fu:<\/strong> Geni\u015f bir toplulu\u011fa sahip olmas\u0131, sorun giderme ve kaynak bulma konusunda b\u00fcy\u00fck kolayl\u0131k sa\u011flar.<\/li>\n<li><strong>Kolay \u00d6\u011frenilebilirlik:<\/strong> Yeni ba\u015flayanlar i\u00e7in nispeten kolay \u00f6\u011frenilebilir bir dil olmas\u0131, ekiplerin h\u0131zla adapte olmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h4>Ortak Avantajlar (Sunucusuz Modelin Faydalar\u0131)<\/h4>\n<p>Her iki dil de AWS Lambda&#8217;n\u0131n sundu\u011fu sunucusuz modelin genel avantajlar\u0131ndan faydalan\u0131r:<\/p>\n<ul>\n<li><strong>Otomatik \u00d6l\u00e7eklendirme:<\/strong> Talep artt\u0131k\u00e7a fonksiyonlar otomatik olarak \u00f6l\u00e7eklenir.<\/li>\n<li><strong>Y\u00f6netilen Altyap\u0131:<\/strong> Sunucu provizyonu, yamalama ve bak\u0131m gibi operasyonel y\u00fckler AWS taraf\u0131ndan y\u00f6netilir.<\/li>\n<li><strong>Kulland\u0131k\u00e7a \u00d6de Modeli:<\/strong> Sadece fonksiyonunuz \u00e7al\u0131\u015ft\u0131\u011f\u0131nda \u00f6deme yapars\u0131n\u0131z, bu da maliyet etkinli\u011fi sa\u011flar.<\/li>\n<\/ul>\n<h3>AWS Lambda Function URL&#8217;leri Nedir ve Neden \u00d6nemli?<\/h3>\n<p>AWS Lambda Function URL&#8217;leri, Lambda fonksiyonlar\u0131n\u0131za do\u011frudan HTTP(S) u\u00e7 noktalar\u0131 ataman\u0131za olanak tan\u0131yan, tam olarak y\u00f6netilen bir \u00f6zelliktir. Bu \u00f6zellik, Lambda fonksiyonlar\u0131n\u0131za eri\u015fimi basitle\u015ftirir.<\/p>\n<h4>Function URL&#8217;lerinin Temelleri<\/h4>\n<p>Bir Function URL olu\u015fturdu\u011funuzda, Lambda fonksiyonunuz i\u00e7in benzersiz ve kal\u0131c\u0131 bir HTTP(S) u\u00e7 noktas\u0131 elde edersiniz. Bu u\u00e7 nokta, herhangi bir ek hizmete (\u00f6rne\u011fin API Gateway) ihtiya\u00e7 duymadan fonksiyonunuzu do\u011frudan \u00e7a\u011f\u0131rabilir. Her Function URL, bir yetkilendirme modu (NONE veya AWS_IAM) ve bir CORS yap\u0131land\u0131rmas\u0131 ile birlikte gelir.<\/p>\n<h4>API Gateway&#8217;e G\u00f6re Avantajlar\u0131<\/h4>\n<p>Geleneksel olarak, Lambda fonksiyonlar\u0131n\u0131 HTTP \u00fczerinden tetiklemek i\u00e7in API Gateway kullan\u0131l\u0131rd\u0131. Function URL&#8217;leri, belirli senaryolarda API Gateway&#8217;e g\u00f6re avantajlar sunar:<\/p>\n<ul>\n<li><strong>Basitlik:<\/strong> Tek bir Lambda fonksiyonu i\u00e7in basit bir HTTP u\u00e7 noktas\u0131 gerekti\u011finde, Function URL&#8217;leri API Gateway&#8217;in karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 ortadan kald\u0131r\u0131r. Daha az yap\u0131land\u0131rma, daha az hareketli par\u00e7a demektir.<\/li>\n<li><strong>D\u00fc\u015f\u00fck Gecikme S\u00fcresi:<\/strong> Function URL&#8217;leri, API Gateway&#8217;e k\u0131yasla daha d\u00fc\u015f\u00fck gecikme s\u00fcresi sunabilir, \u00e7\u00fcnk\u00fc istekler do\u011frudan Lambda&#8217;ya y\u00f6nlendirilir ve ek bir hizmet katman\u0131 atlan\u0131r.<\/li>\n<li><strong>Maliyet Etkinli\u011fi:<\/strong> API Gateway&#8217;in kendi faturaland\u0131rma modeli vard\u0131r. Basit HTTP tetikleyicileri i\u00e7in Function URL&#8217;leri genellikle daha uygun maliyetli olabilir.<\/li>\n<\/ul>\n<h4>Kullan\u0131m Senaryolar\u0131 ve K\u0131s\u0131tlamalar<\/h4>\n<p>Function URL&#8217;leri, \u00f6zellikle a\u015fa\u011f\u0131daki senaryolar i\u00e7in idealdir:<\/p>\n<ul>\n<li>Webhooks: \u00dc\u00e7\u00fcnc\u00fc taraf hizmetlerden gelen webhooks&#8217;lar\u0131 i\u015flemek.<\/li>\n<li>Basit HTTP API&#8217;leri: Tek bir i\u015flevi yerine getiren basit API u\u00e7 noktalar\u0131 olu\u015fturmak.<\/li>\n<li>Form G\u00f6nderimleri: Do\u011frudan Lambda&#8217;ya g\u00f6nderilen HTML form verilerini i\u015flemek.<\/li>\n<li>Mobil ve Web Uygulamalar\u0131: Do\u011frudan bir Lambda fonksiyonunu \u00e7a\u011f\u0131ran basit arka u\u00e7 i\u015flevleri.<\/li>\n<\/ul>\n<p>Ancak, Function URL&#8217;lerinin baz\u0131 k\u0131s\u0131tlamalar\u0131 da vard\u0131r:<\/p>\n<ul>\n<li><strong>Geli\u015fmi\u015f API Y\u00f6netimi Yok:<\/strong> API Gateway&#8217;in sundu\u011fu kullan\u0131m planlar\u0131, API anahtarlar\u0131, istek\/yan\u0131t d\u00f6n\u00fc\u015f\u00fcmleri, do\u011frulama veya \u00f6nbellekleme gibi geli\u015fmi\u015f \u00f6zellikler Function URL&#8217;lerinde bulunmaz.<\/li>\n<li><strong>Yaln\u0131zca Tek Fonksiyon:<\/strong> Her Function URL yaln\u0131zca bir Lambda fonksiyonuna i\u015faret eder. Birden fazla fonksiyonu veya farkl\u0131 rotalar\u0131 y\u00f6netmek i\u00e7in API Gateway daha uygundur.<\/li>\n<li><strong>Yetkilendirme Se\u00e7enekleri S\u0131n\u0131rl\u0131:<\/strong> Sadece IAM veya anonim eri\u015fim se\u00e7enekleri mevcuttur.<\/li>\n<\/ul>\n<h3>Terraform ile AWS Lambda Kaynaklar\u0131n\u0131 Y\u00f6netmek<\/h3>\n<p>Altyap\u0131y\u0131 Kod Olarak (Infrastructure as Code &#8211; IaC) y\u00f6netmek, modern bulut geli\u015ftirme pratiklerinin temelidir. Terraform, bu alanda lider ara\u00e7lardan biridir ve AWS Lambda kaynaklar\u0131n\u0131 y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir yol sunar.<\/p>\n<h4>Terraform&#8217;un G\u00fcc\u00fc ve Avantajlar\u0131<\/h4>\n<p>Terraform, HashiCorp taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir IaC arac\u0131d\u0131r. Declarative (bildirimsel) bir yakla\u015f\u0131mla \u00e7al\u0131\u015f\u0131r ve altyap\u0131n\u0131z\u0131n istenen durumunu tan\u0131mlaman\u0131za olanak tan\u0131r. Avantajlar\u0131:<\/p>\n<ul>\n<li><strong>\u00c7oklu Bulut Deste\u011fi:<\/strong> AWS&#8217;nin yan\u0131 s\u0131ra Azure, Google Cloud, Oracle Cloud gibi bir\u00e7ok bulut sa\u011flay\u0131c\u0131s\u0131n\u0131 ve di\u011fer SaaS hizmetlerini destekler.<\/li>\n<li><strong>Versiyon Kontrol\u00fc:<\/strong> Altyap\u0131 kodunu versiyon kontrol sistemlerinde (Git gibi) y\u00f6neterek de\u011fi\u015fiklikleri izlemeyi ve geri almay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Tekrarlanabilirlik:<\/strong> Ayn\u0131 altyap\u0131y\u0131 birden fazla ortamda (geli\u015ftirme, test, \u00fcretim) tutarl\u0131 bir \u015fekilde olu\u015fturmay\u0131 ve da\u011f\u0131tmay\u0131 sa\u011flar.<\/li>\n<li><strong>Mod\u00fclerlik:<\/strong> Altyap\u0131 bile\u015fenlerini yeniden kullan\u0131labilir mod\u00fcller halinde d\u00fczenlemeye olanak tan\u0131r.<\/li>\n<\/ul>\n<h4>Temel Lambda Kaynak Yap\u0131land\u0131rmas\u0131 (IAM, S3)<\/h4>\n<p>Bir AWS Lambda fonksiyonunu Terraform ile da\u011f\u0131tmak i\u00e7in genellikle a\u015fa\u011f\u0131daki temel kaynaklara ihtiya\u00e7 duyulur:<\/p>\n<ul>\n<li><strong>IAM Rol\u00fc ve Politikas\u0131:<\/strong> Lambda fonksiyonunun AWS hizmetlerine (\u00f6rne\u011fin CloudWatch g\u00fcnl\u00fckleri yazma, S3&#8217;ten okuma) eri\u015fim izinlerini tan\u0131mlayan bir IAM rol\u00fc ve ili\u015fkili politikalar.<\/li>\n<li><strong>S3 Kovas\u0131:<\/strong> Fonksiyon kodunun (ZIP dosyas\u0131) depolanaca\u011f\u0131 bir S3 kovas\u0131. Terraform, kodu S3&#8217;e y\u00fckler ve Lambda fonksiyonunu bu S3 nesnesinden da\u011f\u0131t\u0131r.<\/li>\n<li><strong>Lambda Fonksiyonu Kayna\u011f\u0131:<\/strong> <code>aws_lambda_function<\/code> kayna\u011f\u0131, fonksiyonun \u00e7al\u0131\u015fma zaman\u0131 (runtime), bellek (memory), zaman a\u015f\u0131m\u0131 (timeout) ve handler gibi \u00f6zelliklerini tan\u0131mlar.<\/li>\n<\/ul>\n<h4>Function URL Entegrasyonu<\/h4>\n<p>Function URL&#8217;lerini Terraform ile entegre etmek olduk\u00e7a basittir. <code>aws_lambda_function_url<\/code> kayna\u011f\u0131n\u0131 kullanarak, mevcut bir Lambda fonksiyonuna bir URL atayabilir ve yetkilendirme ile CORS ayarlar\u0131n\u0131 yap\u0131land\u0131rabilirsiniz. Ayr\u0131ca, bu URL&#8217;ye eri\u015fim izni vermek i\u00e7in <code>aws_lambda_permission<\/code> kayna\u011f\u0131n\u0131 da kullanman\u0131z gerekebilir.<\/p>\n<h3>Go ile AWS Lambda Fonksiyonu Geli\u015ftirme ve Terraform Entegrasyonu<\/h3>\n<p>Go ile Lambda fonksiyonu geli\u015ftirmek, performans odakl\u0131 uygulamalar i\u00e7in m\u00fckemmel bir se\u00e7enektir. \u0130\u015fte basit bir Go Lambda fonksiyonu ve Terraform ile nas\u0131l da\u011f\u0131t\u0131laca\u011f\u0131.<\/p>\n<h4>Go Fonksiyonu Yaz\u0131m\u0131 (Basit HTTP Handler)<\/h4>\n<p>Bir Go Lambda fonksiyonu genellikle <code>main<\/code> paketinde bir <code>main<\/code> fonksiyonu ve <code>github.com\/aws\/aws-lambda-go\/lambda<\/code> k\u00fct\u00fcphanesini kullanarak bir handler fonksiyonu i\u00e7erir. Function URL&#8217;leri, standart HTTP isteklerini do\u011frudan Lambda&#8217;ya iletti\u011fi i\u00e7in, Go&#8217;nun <code>net\/http<\/code> paketi ile uyumlu bir handler yazmak en do\u011fal yoldur.<\/p>\n<pre><code class=\"language-go\">\/\/ main.go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"net\/http\"\n\t\"github.com\/aws\/aws-lambda-go\/events\"\n\t\"github.com\/aws\/aws-lambda-go\/lambda\"\n)\n\nfunc handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {\n\tfmt.Printf(\"Processing request data for request %s.\\n\", request.RequestContext.RequestID)\n\n\treturn events.APIGatewayProxyResponse{\n\t\tStatusCode: 200,\n\t\tHeaders: map[string]string{\"Content-Type\": \"text\/plain\"},\n\t\tBody:       fmt.Sprintf(\"Merhaba Go Lambda! \u0130stek ID: %s\", request.RequestContext.RequestID),\n\t}, nil\n}\n\nfunc main() {\n\tlambda.Start(handler)\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Derleme ve Da\u011f\u0131t\u0131m S\u00fcreci (ZIP Paketi)<\/h4>\n<p>Go kodu, Lambda'ya da\u011f\u0131t\u0131lmadan \u00f6nce derlenmelidir. AWS Lambda, Linux ortam\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in \u00e7apraz derleme (cross-compilation) yapman\u0131z gerekir. Ard\u0131ndan, derlenmi\u015f ikili dosyay\u0131 bir ZIP ar\u015fivi i\u00e7ine koyman\u0131z yeterlidir.<\/p>\n<pre><code class=\"language-bash\">GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o main main.go\nzip deployment_package.zip main\n<\/pre>\n<p><\/code><\/p>\n<p>Bu <code>deployment_package.zip<\/code> dosyas\u0131 S3'e y\u00fcklenerek Lambda taraf\u0131ndan kullan\u0131lacakt\u0131r.<\/p>\n<h4>Terraform ile Go Lambda Yap\u0131land\u0131rmas\u0131 (Code Hashing, Runtime)<\/h4>\n<p>Terraform, Go Lambda fonksiyonunu da\u011f\u0131tmak i\u00e7in <code>aws_lambda_function<\/code> kayna\u011f\u0131n\u0131 kullan\u0131r. Kodun her de\u011fi\u015fti\u011finde Lambda'n\u0131n g\u00fcncellenmesini sa\u011flamak i\u00e7in, ZIP dosyas\u0131n\u0131n SHA256 hash de\u011ferini <code>source_code_hash<\/code> parametresine atamak \u00f6nemlidir. Bu, Terraform'un kod de\u011fi\u015fikli\u011fini alg\u0131lamas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-terraform\"># S3 Kovas\u0131\nresource \"aws_s3_bucket\" \"lambda_bucket\" {\n  bucket = \"go-python-lambda-code-${random_id.id.hex}\"\n}\n\n# S3 Nesnesi (Go kodu)\nresource \"aws_s3_object\" \"go_lambda_code\" {\n  bucket = aws_s3_bucket.lambda_bucket.id\n  key    = \"go-lambda-function.zip\"\n  source = \"deployment_package.zip\" # Yerel ZIP dosyan\u0131z\n  etag   = filemd5(\"deployment_package.zip\") # De\u011fi\u015fiklikleri alg\u0131lamak i\u00e7in\n\n  depends_on = [null_resource.go_build] # Go derleme ad\u0131m\u0131 tamamland\u0131ktan sonra\n}\n\n# IAM Rol\u00fc\nresource \"aws_iam_role\" \"go_lambda_exec_role\" {\n  name = \"go_lambda_exec_role\"\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [{\n      Action = \"sts:AssumeRole\"\n      Effect = \"Allow\"\n      Principal = {\n        Service = \"lambda.amazonaws.com\"\n      }\n    }]\n  })\n}\n\nresource \"aws_iam_role_policy_attachment\" \"go_lambda_policy\" {\n  role       = aws_iam_role.go_lambda_exec_role.name\n  policy_arn = \"arn:aws:iam::aws:policy\/service-role\/AWSLambdaBasicExecutionRole\"\n}\n\n# Go Lambda Fonksiyonu\nresource \"aws_lambda_function\" \"go_example\" {\n  function_name    = \"GoExampleFunction\"\n  s3_bucket        = aws_s3_bucket.lambda_bucket.id\n  s3_key           = aws_s3_object.go_lambda_code.key\n  handler          = \"main\" # Derlenmi\u015f ikili dosyan\u0131n ad\u0131\n  runtime          = \"go1.x\"\n  role             = aws_iam_role.go_lambda_exec_role.arn\n  memory_size      = 128\n  timeout          = 30\n  source_code_hash = data.archive_file.go_lambda_zip.output_base64sha256 # ZIP dosyas\u0131n\u0131n hash'i\n}\n\n# Go Lambda Function URL\nresource \"aws_lambda_function_url\" \"go_example_url\" {\n  function_name      = aws_lambda_function.go_example.function_name\n  authorization_type = \"NONE\" # Public eri\u015fim\n  cors {\n    allow_credentials = false\n    allow_origins     = [\"*\"]\n    allow_methods     = [\"*\"]\n    allow_headers     = [\"*\"]\n    expose_headers    = [\"*\"]\n  }\n}\n\n# Function URL'e anonim eri\u015fim izni\nresource \"aws_lambda_permission\" \"go_example_url_permission\" {\n  statement_id   = \"AllowPublicAccess\"\n  action         = \"lambda:InvokeFunctionUrl\"\n  function_name  = aws_lambda_function.go_example.function_name\n  principal      = \"*\"\n  function_url_auth_type = \"NONE\"\n}\n\n# Go derleme ad\u0131m\u0131n\u0131 tetiklemek i\u00e7in null_resource\nresource \"null_resource\" \"go_build\" {\n  triggers = {\n    always_run = timestamp() # Her Terraform plan\/apply'de \u00e7al\u0131\u015ft\u0131r\n  }\n  provisioner \"local-exec\" {\n    command = \"GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o main go-lambda\/main.go && zip -j go-lambda\/deployment_package.zip go-lambda\/main\"\n    working_dir = path.module\n  }\n}\n\n# ZIP dosyas\u0131n\u0131n hash'ini almak i\u00e7in data kayna\u011f\u0131\ndata \"archive_file\" \"go_lambda_zip\" {\n  type        = \"zip\"\n  source_file = \"go-lambda\/main\"\n  output_path = \"go-lambda\/deployment_package.zip\"\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>Python ile AWS Lambda Fonksiyonu Geli\u015ftirme ve Terraform Entegrasyonu<\/h3>\n<p>Python, h\u0131zl\u0131 geli\u015ftirme ve zengin ekosistemi ile Lambda i\u00e7in pop\u00fcler bir se\u00e7imdir. \u0130\u015fte basit bir Python Lambda fonksiyonu ve Terraform ile nas\u0131l da\u011f\u0131t\u0131laca\u011f\u0131.<\/p>\n<h4>Python Fonksiyonu Yaz\u0131m\u0131 (Basit HTTP Handler)<\/h4>\n<p>Python Lambda fonksiyonlar\u0131 genellikle <code>lambda_handler<\/code> ad\u0131nda bir fonksiyon i\u00e7erir. Function URL'leri, API Gateway Proxy entegrasyonu gibi bir olay yap\u0131s\u0131 bekler, bu y\u00fczden Python handler'\u0131n\u0131z bu format\u0131 i\u015flemelidir.<\/p>\n<pre><code class=\"language-python\"># main.py\nimport json\n\ndef lambda_handler(event, context):\n    print(f\"Received event: {json.dumps(event)}\")\n\n    # Function URL'leri i\u00e7in API Gateway Proxy entegrasyonu benzeri bir yan\u0131t d\u00f6nd\u00fcr\u00fcl\u00fcr.\n    return {\n        \"statusCode\": 200,\n        \"headers\": {\n            \"Content-Type\": \"text\/plain\"\n        },\n        \"body\": f\"Merhaba Python Lambda! \u0130stek ID: {context.aws_request_id}\"\n    }\n<\/pre>\n<p><\/code><\/p>\n<h4>Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi ve Da\u011f\u0131t\u0131m (venv, pip)<\/h4>\n<p>Python projelerinde harici k\u00fct\u00fcphaneler kullan\u0131l\u0131yorsa, bu ba\u011f\u0131ml\u0131l\u0131klar\u0131n Lambda da\u011f\u0131t\u0131m paketine dahil edilmesi gerekir. Genellikle bir <code>venv<\/code> (sanal ortam) olu\u015fturulur, ba\u011f\u0131ml\u0131l\u0131klar <code>pip<\/code> ile y\u00fcklenir ve ard\u0131ndan t\u00fcm bu dosyalar ZIPlenir.<\/p>\n<pre><code class=\"language-bash\"># Sanal ortam olu\u015ftur ve aktifle\u015ftir\npython3 -m venv venv\nsource venv\/bin\/activate\n\n# Ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckle (e\u011fer varsa, requirements.txt dosyas\u0131ndan)\n# pip install -r requirements.txt\n\n# Fonksiyon kodunu ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 ZIPle\n# E\u011fer ba\u011f\u0131ml\u0131l\u0131klar varsa, venv\/lib\/pythonX.Y\/site-packages i\u00e7indeki her \u015feyi ZIP'e ekleyin.\nzip -r deployment_package.zip main.py\n# \u00d6rnek: zip -r deployment_package.zip main.py venv\/lib\/python3.9\/site-packages\n<\/pre>\n<p><\/code><\/p>\n<h4>Terraform ile Python Lambda Yap\u0131land\u0131rmas\u0131 (Runtime, Layers)<\/h4>\n<p>Python Lambda fonksiyonu i\u00e7in Terraform yap\u0131land\u0131rmas\u0131, Go'ya benzer ancak \u00e7al\u0131\u015fma zaman\u0131 ve handler adland\u0131rmas\u0131nda farkl\u0131l\u0131klar g\u00f6sterir. Ba\u011f\u0131ml\u0131l\u0131klar i\u00e7in Lambda Katmanlar\u0131 (Layers) kullanmak, da\u011f\u0131t\u0131m paketini k\u00fc\u00e7\u00fcltmenin ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 birden fazla fonksiyonda payla\u015fman\u0131n iyi bir yoludur.<\/p>\n<pre><code class=\"language-terraform\"># S3 Kovas\u0131 (\u00f6ncekiyle ayn\u0131 olabilir veya yeni olu\u015fturulabilir)\n# resource \"aws_s3_bucket\" \"lambda_bucket\" { ... }\n\n# S3 Nesnesi (Python kodu)\nresource \"aws_s3_object\" \"python_lambda_code\" {\n  bucket = aws_s3_bucket.lambda_bucket.id\n  key    = \"python-lambda-function.zip\"\n  source = \"python-lambda\/deployment_package.zip\" # Yerel ZIP dosyan\u0131z\n  etag   = filemd5(\"python-lambda\/deployment_package.zip\")\n\n  depends_on = [null_resource.python_build]\n}\n\n# IAM Rol\u00fc (\u00f6ncekiyle ayn\u0131 olabilir veya yeni olu\u015fturulabilir)\n# resource \"aws_iam_role\" \"python_lambda_exec_role\" { ... }\n# resource \"aws_iam_role_policy_attachment\" \"python_lambda_policy\" { ... }\n\n# Python Lambda Fonksiyonu\nresource \"aws_lambda_function\" \"python_example\" {\n  function_name    = \"PythonExampleFunction\"\n  s3_bucket        = aws_s3_bucket.lambda_bucket.id\n  s3_key           = aws_s3_object.python_lambda_code.key\n  handler          = \"main.lambda_handler\" # Dosyaad\u0131.fonksiyonad\u0131\n  runtime          = \"python3.9\" # Veya kulland\u0131\u011f\u0131n\u0131z Python s\u00fcr\u00fcm\u00fc\n  role             = aws_iam_role.go_lambda_exec_role.arn # Ayn\u0131 rol\u00fc kullanabiliriz\n  memory_size      = 128\n  timeout          = 30\n  source_code_hash = data.archive_file.python_lambda_zip.output_base64sha256\n}\n\n# Python Lambda Function URL\nresource \"aws_lambda_function_url\" \"python_example_url\" {\n  function_name      = aws_lambda_function.python_example.function_name\n  authorization_type = \"NONE\"\n  cors {\n    allow_credentials = false\n    allow_origins     = [\"*\"]\n    allow_methods     = [\"*\"]\n    allow_headers     = [\"*\"]\n    expose_headers    = [\"*\"]\n  }\n}\n\n# Function URL'e anonim eri\u015fim izni\nresource \"aws_lambda_permission\" \"python_example_url_permission\" {\n  statement_id   = \"AllowPublicAccessPython\"\n  action         = \"lambda:InvokeFunctionUrl\"\n  function_name  = aws_lambda_function.python_example.function_name\n  principal      = \"*\"\n  function_url_auth_type = \"NONE\"\n}\n\n# Python ZIP paketini olu\u015fturmak i\u00e7in null_resource\nresource \"null_resource\" \"python_build\" {\n  triggers = {\n    always_run = timestamp()\n  }\n  provisioner \"local-exec\" {\n    command = \"cd python-lambda && zip -r deployment_package.zip main.py && cd ..\"\n    working_dir = path.module\n  }\n}\n\n# ZIP dosyas\u0131n\u0131n hash'ini almak i\u00e7in data kayna\u011f\u0131\ndata \"archive_file\" \"python_lambda_zip\" {\n  type        = \"zip\"\n  source_file = \"python-lambda\/main.py\"\n  output_path = \"python-lambda\/deployment_package.zip\"\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>Performans, Maliyet ve Geli\u015ftirici Deneyimi Kar\u015f\u0131la\u015ft\u0131rmas\u0131<\/h3>\n<p>Go ve Python aras\u0131ndaki se\u00e7im, sadece teknik \u00f6zelliklere de\u011fil, ayn\u0131 zamanda projenin genel gereksinimlerine ve ekibin dinamiklerine de ba\u011fl\u0131d\u0131r.<\/p>\n<h4>So\u011fuk Ba\u015flang\u0131\u00e7 (Cold Start) ve \u00c7al\u0131\u015fma Zaman\u0131 Performans\u0131<\/h4>\n<ul>\n<li><strong>Go:<\/strong> Genellikle daha h\u0131zl\u0131 so\u011fuk ba\u015flang\u0131\u00e7 s\u00fcrelerine sahiptir. Derlenmi\u015f, k\u00fc\u00e7\u00fck ikili dosyalar\u0131 sayesinde Lambda ortam\u0131nda daha h\u0131zl\u0131 ba\u015flat\u0131l\u0131r. \u00c7al\u0131\u015fma zaman\u0131 performans\u0131 da CPU yo\u011fun i\u015flerde Python'a g\u00f6re daha \u00fcst\u00fcnd\u00fcr.<\/li>\n<li><strong>Python:<\/strong> Yorumlanm\u0131\u015f bir dil oldu\u011fu i\u00e7in Go'ya g\u00f6re daha uzun so\u011fuk ba\u015flang\u0131\u00e7 s\u00fcreleri ya\u015fayabilir. Ba\u011f\u0131ml\u0131l\u0131klar\u0131n fazla oldu\u011fu durumlarda bu s\u00fcre daha da artabilir. \u00c7al\u0131\u015fma zaman\u0131 performans\u0131 \u00e7o\u011fu I\/O yo\u011fun i\u015f i\u00e7in yeterli olsa da, CPU yo\u011fun i\u015flerde Go kadar verimli de\u011fildir.<\/li>\n<\/ul>\n<h4>Maliyet Etkileri (Bellek, S\u00fcre)<\/h4>\n<p>AWS Lambda, kullan\u0131lan bellek ve \u00e7al\u0131\u015fma s\u00fcresine g\u00f6re faturaland\u0131r\u0131l\u0131r. Bu ba\u011flamda:<\/p>\n<ul>\n<li><strong>Go:<\/strong> Genellikle daha az bellek t\u00fcketir ve daha h\u0131zl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in daha k\u0131sa s\u00fcreler kullan\u0131r. Bu, \u00f6zellikle y\u00fcksek hacimli veya performans kritik uygulamalarda daha d\u00fc\u015f\u00fck maliyetlere yol a\u00e7abilir.<\/li>\n<li><strong>Python:<\/strong> Go'ya g\u00f6re biraz daha fazla bellek t\u00fcketebilir ve daha uzun \u00e7al\u0131\u015fma s\u00fcreleri gerektirebilir. Ancak, \u00e7o\u011fu senaryoda bu farklar ihmal edilebilir d\u00fczeyde kalabilir. Geli\u015ftirme h\u0131z\u0131 sayesinde pazara \u00e7\u0131k\u0131\u015f s\u00fcresi (time-to-market) avantaj\u0131, potansiyel mikro maliyet farklar\u0131n\u0131 dengeleyebilir.<\/li>\n<\/ul>\n<h4>Geli\u015ftirici Verimlili\u011fi ve Ekosistem<\/h4>\n<ul>\n<li><strong>Go:<\/strong> Daha kat\u0131 bir dil yap\u0131s\u0131na sahiptir ve \u00f6\u011frenme e\u011frisi Python'a g\u00f6re biraz daha dik olabilir. Ancak, ekip Go'ya hakimse, g\u00fc\u00e7l\u00fc tip sistemi ve e\u015fzamanl\u0131l\u0131k \u00f6zellikleri sayesinde b\u00fcy\u00fck \u00f6l\u00e7ekli ve performansl\u0131 sistemler geli\u015ftirmek i\u00e7in \u00e7ok verimli olabilir. Ekosistemi b\u00fcy\u00fcmeye devam etse de, Python kadar geni\u015f de\u011fildir.<\/li>\n<li><strong>Python:<\/strong> H\u0131zl\u0131 prototipleme ve geli\u015ftirme i\u00e7in m\u00fckemmeldir. Geni\u015f ve olgun ekosistemi, bir\u00e7ok farkl\u0131 alanda haz\u0131r k\u00fct\u00fcphaneler sunar. Bu, geli\u015ftiricilerin tekerle\u011fi yeniden icat etmek yerine i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131n\u0131 sa\u011flar. B\u00fcy\u00fck bir geli\u015ftirici toplulu\u011fu, \u00f6\u011frenmeyi ve sorun gidermeyi kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<p>A\u015fa\u011f\u0131daki tablo, Go ve Python'\u0131n temel kar\u015f\u0131la\u015ft\u0131rmas\u0131n\u0131 \u00f6zetlemektedir:<\/p>\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Go (Golang)<\/th>\n<th>Python<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Performans<\/strong><\/td>\n<td>Y\u00fcksek (Derlenmi\u015f)<\/td>\n<td>Orta (Yorumlanm\u0131\u015f)<\/td>\n<\/tr>\n<tr>\n<td><strong>So\u011fuk Ba\u015flang\u0131\u00e7<\/strong><\/td>\n<td>\u00c7ok H\u0131zl\u0131<\/td>\n<td>Orta - Yava\u015f (Ba\u011f\u0131ml\u0131l\u0131\u011fa ba\u011fl\u0131)<\/td>\n<\/tr>\n<tr>\n<td><strong>Bellek T\u00fcketimi<\/strong><\/td>\n<td>D\u00fc\u015f\u00fck<\/td>\n<td>Orta<\/td>\n<\/tr>\n<tr>\n<td><strong>Geli\u015ftirme H\u0131z\u0131<\/strong><\/td>\n<td>Orta - Y\u00fcksek<\/td>\n<td>\u00c7ok Y\u00fcksek<\/td>\n<\/tr>\n<tr>\n<td><strong>Ekosistem<\/strong><\/td>\n<td>Geli\u015fmekte<\/td>\n<td>\u00c7ok Geni\u015f ve Olgun<\/td>\n<\/tr>\n<tr>\n<td><strong>\u00d6\u011frenme E\u011frisi<\/strong><\/td>\n<td>Orta<\/td>\n<td>D\u00fc\u015f\u00fck<\/td>\n<\/tr>\n<tr>\n<td><strong>Kullan\u0131m Alan\u0131<\/strong><\/td>\n<td>Performans kritik API'ler, mikroservisler<\/td>\n<td>H\u0131zl\u0131 API'ler, veri i\u015fleme, ML, otomasyon<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Uygulamal\u0131 Bir Kar\u015f\u0131la\u015ft\u0131rma: Terraform Shootout<\/h3>\n<p>Yukar\u0131daki kod \u00f6rnekleri ve a\u00e7\u0131klamalar, Go ve Python Lambda fonksiyonlar\u0131n\u0131 Function URL'leri ile Terraform kullanarak nas\u0131l da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 g\u00f6stermektedir. Bu \"shootout\" (kar\u015f\u0131la\u015ft\u0131rma), iki dilin ayn\u0131 altyap\u0131 y\u00f6netimi arac\u0131yla nas\u0131l entegre oldu\u011funu pratik bir \u015fekilde ortaya koyar.<\/p>\n<h4>Ortak Terraform Mod\u00fclleri ve Yap\u0131land\u0131rma<\/h4>\n<p>Her iki dil i\u00e7in de IAM rolleri, S3 kovalar\u0131 gibi temel altyap\u0131 bile\u015fenleri ortak olabilir veya ayr\u0131 ayr\u0131 tan\u0131mlanabilir. Mod\u00fcler bir Terraform yap\u0131s\u0131, bu ortak bile\u015fenleri tek bir yerde tan\u0131mlay\u0131p farkl\u0131 Lambda fonksiyonlar\u0131 i\u00e7in yeniden kullanmaya olanak tan\u0131r. \u00d6rne\u011fin, temel bir Lambda y\u00fcr\u00fctme rol\u00fc her iki fonksiyon i\u00e7in de kullan\u0131labilir.<\/p>\n<pre><code class=\"language-terraform\"># Ortak IAM Rol\u00fc\nresource \"aws_iam_role\" \"lambda_exec_role\" {\n  name = \"common_lambda_exec_role\"\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [{\n      Action = \"sts:AssumeRole\"\n      Effect = \"Allow\"\n      Principal = {\n        Service = \"lambda.amazonaws.com\"\n      }\n    }]\n  })\n}\n\nresource \"aws_iam_role_policy_attachment\" \"lambda_policy\" {\n  role       = aws_iam_role.lambda_exec_role.name\n  policy_arn = \"arn:aws:iam::aws:policy\/service-role\/AWSLambdaBasicExecutionRole\"\n}\n\n# Ortak S3 Kovas\u0131\nresource \"aws_s3_bucket\" \"lambda_code_bucket\" {\n  bucket = \"common-go-python-lambda-code-${random_id.id.hex}\"\n  force_destroy = true # Dikkat: \u00dcretimde kullan\u0131lmamal\u0131d\u0131r\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu ortak kaynaklar tan\u0131mland\u0131ktan sonra, Go ve Python fonksiyonlar\u0131 kendi \u00f6zel yap\u0131land\u0131rmalar\u0131yla bu ortak kaynaklar\u0131 kullanabilir.<\/p>\n<h4>Go ve Python Fonksiyonlar\u0131n\u0131n Da\u011f\u0131t\u0131m\u0131<\/h4>\n<p>Terraform'u kullanarak her iki fonksiyonu da ayn\u0131 anda da\u011f\u0131tabilirsiniz. Her bir fonksiyon i\u00e7in ayr\u0131 <code>aws_lambda_function<\/code> ve <code>aws_lambda_function_url<\/code> kaynaklar\u0131 tan\u0131mlayarak, AWS \u00fczerinde iki ayr\u0131 Lambda fonksiyonu ve onlara \u00f6zel Function URL'leri olu\u015fturulur.<\/p>\n<p>Da\u011f\u0131<\/p>\n","protected":false},"excerpt":{"rendered":"AWS Lambda i\u00e7in dil se\u00e7imi, projenin gereksinimlerine, ekibin deneyimine ve performans beklentilerine g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir. Go ve Python, farkl&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1406],"tags":[],"class_list":{"0":"post-36506","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Go vs Python AWS Lambda&#039;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#039;leri ile) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Go vs Python AWS Lambda&#039;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#039;leri ile)\" \/>\n<meta property=\"og:description\" content=\"AWS Lambda i\u00e7in dil se\u00e7imi, projenin gereksinimlerine, ekibin deneyimine ve performans beklentilerine g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir. Go ve Python, farkl...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-19T00:00:49+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Go vs Python AWS Lambda&#8217;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#8217;leri ile)\",\"datePublished\":\"2025-12-19T00:00:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/\"},\"wordCount\":2332,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AWS\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/\",\"name\":\"Go vs Python AWS Lambda'da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL'leri ile) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-19T00:00:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Go vs Python AWS Lambda&#8217;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#8217;leri ile)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Go vs Python AWS Lambda'da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL'leri ile) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/","og_locale":"tr_TR","og_type":"article","og_title":"Go vs Python AWS Lambda'da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL'leri ile)","og_description":"AWS Lambda i\u00e7in dil se\u00e7imi, projenin gereksinimlerine, ekibin deneyimine ve performans beklentilerine g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir. Go ve Python, farkl...","og_url":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-19T00:00:49+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Go vs Python AWS Lambda&#8217;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#8217;leri ile)","datePublished":"2025-12-19T00:00:49+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/"},"wordCount":2332,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AWS"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/","url":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/","name":"Go vs Python AWS Lambda'da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL'leri ile) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-19T00:00:49+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/go-vs-python-aws-lambdada-pratik-bir-terraform-karsilastirmasi-function-urlleri-ile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Go vs Python AWS Lambda&#8217;da: Pratik Bir Terraform Kar\u015f\u0131la\u015ft\u0131rmas\u0131 (Function URL&#8217;leri ile)"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36506"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36506\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}