﻿
{"id":27608,"date":"2025-03-08T23:25:26","date_gmt":"2025-03-08T23:25:26","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=27608"},"modified":"2025-03-08T23:25:26","modified_gmt":"2025-03-08T23:25:26","slug":"asp-net-core-web-api-uygulamasini-aws-app-runnera-ecr-ve-github-araciligiyla-deploy-etme","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-web-api-uygulamasini-aws-app-runnera-ecr-ve-github-araciligiyla-deploy-etme\/","title":{"rendered":"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#8217;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde AWS&#8217;de, \u00f6nceden inceledi\u011fimiz <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-web-api-uygulamasini-amazon-ec2de-host-etme\/\" target=\"_blank\">EC2<\/a>, <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-api-uygulamasini-amazon-escye-deploy-etme-aws-fargate-ile-dockerize-operasyonu\/\" target=\"_blank\">ECS<\/a>, <a href=\"https:\/\/www.gencayyildiz.com\/blog\/aws-codepipeline-kullanarak-asp-net-core-web-api-uygulamasini-aws-elastic-beanstalk-ile-deploy-etme\/\" target=\"_blank\">Elastic Beanstalk<\/a> ve <a href=\"https:\/\/www.gencayyildiz.com\/blog\/net-7-aws-lambda-ile-serverless-computing\/\" target=\"_blank\">Lambda<\/a> deploy y\u00f6ntemlerinden farkl\u0131 bir se\u00e7enek olan, ECR ve GitHub arac\u0131l\u0131\u011f\u0131yla App Runner&#8217;a deploy s\u00fcrecini inceliyor olaca\u011f\u0131z.<\/p>\n<h3>AWS App Runner Nedir?<\/h3>\n<p>AWS App Runner, Amazon&#8217;un tam y\u00f6netilen<em>(fully managed)<\/em> bir servisidir ve geli\u015ftiricilere konteyner tabanl\u0131 uygulamalar\u0131<em>(container-based applications)<\/em> kolayca deploy edebilme, y\u00f6netme ve \u00f6l\u00e7eklendirme imkan\u0131 sunmakta ve <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-api-uygulamasini-amazon-escye-deploy-etme-aws-fargate-ile-dockerize-operasyonu\/\" target=\"_blank\">AWS Fargate<\/a> gibi altyap\u0131 y\u00f6netimiyle u\u011fra\u015fmaks\u0131z\u0131n uygulamalar\u0131n \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flamaktad\u0131r. Hatta AWS Fargate&#8217;e nazaran daha soyut ve basit bir deploy yolu sundu\u011fu i\u00e7in Fargate&#8217;in halefi olarak yorumlanabilmekte ve daha \u00e7ok tercih edilebilmektedir.<\/p>\n<h5>AWS App Runner&#8217;\u0131n \u00d6zellikleri<\/h5>\n<p>AWS App Runner&#8217;\u0131n bir ka\u00e7 kritik \u00f6zelli\u011fini a\u015fa\u011f\u0131da madde madde bir ka\u00e7 sat\u0131rda ele alarak vurgulamakta fayda g\u00f6rmekteyim;<\/p>\n<ul>\n<li><em><strong>Fully Managed Service<\/strong>(Tam Y\u00f6netilen Servis)<\/em> : AWS App Runner&#8217;da; altyap\u0131 y\u00f6netimi(infrastructure management), y\u00fck dengeleme(load balancing) ve \u00f6l\u00e7eklendirme(scaling) AWS taraf\u0131ndan otomatik olarak yap\u0131land\u0131r\u0131lmaktad\u0131r. Yani sorumlulu\u011fu geli\u015ftiricilerden ziyade AWS taraf\u0131 tam olarak \u00fcstlenmektedir.<\/li>\n<li><em><strong>Easy Deployment<\/strong>(Kolay Deploy)<\/em> : Docker container image \u00fczerinden ECR ve Docker Hub kullanarak ya da GitHub gibi bir source code repository \u00fczerinden kolayca deploy s\u00fcreci y\u00f6netilebilmektedir.<\/li>\n<li><em><strong>Auto Scaling<\/strong>(Otomatik \u00d6l\u00e7eklendirme)<\/em> : AWS App Runner, trafi\u011fe ya da yo\u011funlu\u011fa ba\u011fl\u0131 olarak uygulamay\u0131 otomatik olarak \u00f6l\u00e7eklendirir.<\/li>\n<li><em><strong>Continuous Deployment (CI\/CD)<\/strong><\/em> : AWS App Runner, kaynak kodda bir de\u011fi\u015fiklik meydana geldi\u011finde otomatik olarak yeniden deploy s\u00fcrecini ger\u00e7ekle\u015ftirir. Haliyle b\u00f6ylece, yeni s\u00fcr\u00fcm \u00e7\u0131k\u0131\u015flar\u0131 otomatik ve h\u0131zl\u0131 bir \u015fekilde cereyan edecektir.<\/li>\n<li><em><strong>IAM Integration<\/strong><\/em> : AWS servisleriyle g\u00fcvenli kimlik do\u011frulama ve yetkilendirme sa\u011flar.<\/li>\n<\/ul>\n<p>Bu ve bunlara benzer m\u00fchim \u00f6zellikleri sayesinde AWS App Runner, AWS Fargate&#8217;e nazaran daha basit bir sistem ortaya koymaktad\u0131r. Evet; AWS Fargate, daha esnek olsa da baz\u0131 altyap\u0131 y\u00f6netimlerinin manuel yap\u0131lmas\u0131n\u0131 gerektirmektedir. Ancak AWS App Runner, h\u0131zl\u0131 deploy s\u00fcre\u00e7lerinde ve basit ya da orta \u00f6l\u00e7ekli uygulamalarda daha \u00e7ok tercih sebebimizdir. Daha karma\u015f\u0131k container y\u00f6netimi gerektiren i\u015f y\u00fcklerinde ise AWS App Runner&#8217;dan ziyade AWS Fargate&#8217;e y\u00f6nelerek elle yap\u0131land\u0131rmalarda bulunabilir ve b\u00f6ylece de uygulaman\u0131n gereksinimlerine uygun se\u00e7enekleri daha detayl\u0131 bir \u015fekilde optimize edebilirsiniz.<\/p>\n<blockquote><p><em>AWS App Runner; \u015fu anda ap-south-1, eu-west-2, ap-northeast-1, us-east-1, us-west-2 vs. gibi b\u00f6lgelerde kullan\u0131lmaktad\u0131r. Tam liste i\u00e7in <a href=\"https:\/\/www.aws-services.info\/apprunner.html\" target=\"_blank\">\u015furaya<\/a> g\u00f6z atabilirsiniz.<\/em><\/p><\/blockquote>\n<h3>Neden AWS App Runner&#8217;\u0131 Kullanmal\u0131y\u0131z?<\/h3>\n<p>AWS App Runner&#8217;\u0131 tercih nedeni i\u00e7in her \u015feyden \u00f6nce basitlik ve kullan\u0131m kolayl\u0131\u011f\u0131n\u0131 \u00f6ne s\u00fcrebiliriz. Yukar\u0131daki sat\u0131rlarda bahsedildi\u011fi gibi altyap\u0131 yap\u0131land\u0131rmas\u0131, y\u00fck dengeleme, otomatik \u00f6l\u00e7eklendirme vs. gibi t\u00fcm yap\u0131land\u0131rma sorumlulu\u011fu AWS taraf\u0131ndan \u00fcstlenilmekte ve ayr\u0131ca maliyet a\u00e7\u0131s\u0131ndan da t\u00fcm bu s\u00fcre\u00e7 olduk\u00e7a verimli seyretmektedir. App Runner, kulland\u0131k\u00e7a \u00f6de fiyatland\u0131rma modelini uygulamaktad\u0131r ve bir yandan da sadece uygulama taraf\u0131ndan t\u00fcketilen bellek ve CPU i\u00e7in \u00fccretlendirme durumu s\u00f6z konusudur. Yani herhangi bir T zamanda, gelen bir request s\u00f6z konusu de\u011filse i\u015fte o taktirde size ayr\u0131lan CPU bo\u015fta kalacak ve dolay\u0131s\u0131yla bunun i\u00e7in bir \u00fccret \u00f6demenize gerek kalmayacakt\u0131r. \u00d6te yandan size ayr\u0131lan belle\u011fin yan\u0131nda deploy tetikleyicileri(deployment triggers) ve derleme zamanlar\u0131(build times) i\u00e7in elbet ek \u00fccretler s\u00f6z konusu olacakt\u0131r. Bu da genel olarak, k\u00fc\u00e7\u00fck bir uygulama i\u00e7in ayda yakla\u015f\u0131k $5&#8217;l\u0131k bir \u00fccretlendirmeye tekab\u00fcl edecektir. Gayet iyi de\u011fil mi? \ud83d\ude42<\/p>\n<h3>Ne \u0130n\u015fa Edece\u011fiz?<\/h3>\n<p>\u0130\u00e7eri\u011fimiz s\u00fcresince, herhangi bir alanda hizmet veren Asp.NET Core Web API uygulamas\u0131 geli\u015ftirecek ve bu uygulama i\u00e7in AWS App Runner Service&#8217;de kaynak olarak kullanaca\u011f\u0131m\u0131z bir docker dosyas\u0131 olu\u015fturaca\u011f\u0131z. Devam\u0131nda ise uygulaman\u0131n docker image&#8217;\u0131n\u0131 <a href=\"https:\/\/www.gencayyildiz.com\/blog\/tag\/amazon-elastic-container-registry\/\" target=\"_blank\">Elastic Container Registry<\/a>&#8216;ye g\u00f6nderece\u011fiz. Ayr\u0131ca, uygulaman\u0131n GitHub \u00fczerinden nas\u0131l source deploy edilebilece\u011fini de ke\u015ffediyor olaca\u011f\u0131z. O halde hade ba\u015flayal\u0131m.<\/p>\n<h4>Bir Asp.NET Core Web API Uygulamas\u0131 Geli\u015ftirme ve Dockerize Etme<\/h4>\n<p>\u0130lk olarak bir Asp.NET Core Web API projesi olu\u015ftural\u0131m ve i\u00e7eri\u011fine a\u015fa\u011f\u0131daki gibi bir minimal api ekleyelim;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Scalar.AspNetCore;\r\n\r\nvar builder = WebApplication.CreateBuilder(args);\r\nbuilder.Services.AddOpenApi();\r\n\r\nvar app = builder.Build();\r\n\r\napp.UseHttpsRedirection();\r\napp.MapOpenApi();\r\napp.MapScalarApiReference();\r\n\r\napp.MapGet(&quot;\/&quot;, () =&gt; &quot;Hello World!&quot;);\r\n\r\napp.Run();\r\n<\/pre>\n<\/div>\n<p>Evet, \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131m\u0131z uygulamam\u0131z bundan ibarettir diyebiliriz \ud83d\ude42 \u015eimdi bu uygulama i\u00e7in bir Dockerfile dosyas\u0131 olu\u015fturup image tasarlayal\u0131m ve ard\u0131ndan bu image&#8217;i AWS ECR repository&#8217;sine g\u00f6nderelim.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nFROM mcr.microsoft.com\/dotnet\/sdk:9.0 AS build\r\nARG BUILD_CONFIGURATION=Release\r\nWORKDIR \/src\r\nCOPY *.csproj .\r\nRUN dotnet restore\r\nCOPY . .\r\nRUN dotnet publish -c Release -o \/app\r\n\r\nFROM mcr.microsoft.com\/dotnet\/aspnet:9.0 AS runtime\r\nWORKDIR \/app\r\nEXPOSE 80\r\nEXPOSE 443\r\nCOPY --from=build \/app .\r\nENTRYPOINT &#x5B;&quot;dotnet&quot;, &quot;AWS.App.Runner.Example.dll&quot;]\r\n<\/pre>\n<\/div>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere basit bir Dockerfile talimat dizisi olu\u015fturmu\u015f bulunuyoruz. \u015eimdi Dockerfile haz\u0131r oldu\u011funa g\u00f6re bir image olu\u015fturup AWS repository&#8217;e g\u00f6nderebiliriz.<\/p>\n<h4>Docker Image&#8217;i Private Amazon ECR&#8217;ye Publish Etme<\/h4>\n<p>Olu\u015fturaca\u011f\u0131m\u0131z image&#8217;\u0131 AWS repository&#8217;e g\u00f6nderebilmek i\u00e7in \u00f6ncelikle bo\u015f bir <em>Elastic Container Repository<\/em> olu\u015fturmam\u0131z gerekmektedir. Bunun i\u00e7in a\u015fa\u011f\u0131daki g\u00f6rselde oldu\u011fu gibi AWS Console \u00fczerinden ECR&#8217;ye girelim.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"987\" height=\"165\" class=\"aligncenter size-full wp-image-27614\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme.png 987w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-300x50.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-768x128.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-980x165.png 980w\" sizes=\"auto, (max-width: 987px) 100vw, 987px\" \/><\/a>Ve a\u00e7\u0131lan sayfadan &#8216;Create a repository&#8217; butonuna t\u0131klayarak a\u015fa\u011f\u0131daki gibi bir repository olu\u015ftural\u0131m.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-1.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"544\" height=\"671\" class=\"aligncenter size-full wp-image-27615\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-1.png 544w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-1-243x300.png 243w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/a><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-2.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"732\" height=\"167\" class=\"aligncenter size-full wp-image-27616\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-2.png 732w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-2-300x68.png 300w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/a>Evet, g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere AWS repository&#8217;i olu\u015fturmu\u015f bulunuyoruz. \u015eimdi olu\u015fturdu\u011fumuz Dockerimage dosyas\u0131ndan bir image olu\u015ftural\u0131m ve ard\u0131ndan bu image&#8217;\u0131 Amazon ECR&#8217;de ki bu repository&#8217;e g\u00f6nderelim. Bunun i\u00e7in proje dizinine odakl\u0131 bir terminal penceresinden a\u015fa\u011f\u0131daki talimatlar\u0131 s\u0131rayla girelim;<\/p>\n<ol>\n<li>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\naws ecr get-login-password | docker login --username AWS --password-stdin 905418427199.dkr.ecr.us-west-2.amazonaws.com\/example-api\r\n<\/pre>\n<\/div>\n<p>AWS ECR&#8217;de Docker ile oturum a\u00e7\u0131yoruz.\n<\/li>\n<li>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndocker build -t awsapprunnerexample .\r\n<\/pre>\n<\/div>\n<p>Bulunulan dizindeki Dockerfile dosyas\u0131ndan bir Docker image&#8217;\u0131 olu\u015fturuyoruz.\n<\/li>\n<li>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndocker tag awsapprunnerexample:latest 905418427199.dkr.ecr.us-west-2.amazonaws.com\/example-api\r\n<\/pre>\n<\/div>\n<p>Olu\u015fturulan Docker image&#8217;\u0131n\u0131 ECR repository&#8217;sine y\u00fcklemek i\u00e7in etiketliyoruz.\n<\/li>\n<li>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndocker push 905418427199.dkr.ecr.us-west-2.amazonaws.com\/example-api\r\n<\/pre>\n<\/div>\n<p>Etiketledi\u011fimiz Docker image&#8217;\u0131n\u0131 hedef ECR repository&#8217;sine g\u00f6nderiyoruz.\n<\/li>\n<\/ol>\n<p>Bu talimatlarda s\u0131ras\u0131yla bulundu\u011funuzda a\u015fa\u011f\u0131daki g\u00f6rseldeki gibi \u00e7\u0131kt\u0131lar edinilecektir;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-3.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"1776\" height=\"945\" class=\"aligncenter size-full wp-image-27619\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-3.png 1776w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-3-300x160.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-3-1024x545.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-3-768x409.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-3-1536x817.png 1536w\" sizes=\"auto, (max-width: 1776px) 100vw, 1776px\" \/><\/a>Ve AWS Management Console&#8217;a geri d\u00f6n\u00fcp ECR servisine tekrar g\u00f6z atarsan\u0131z e\u011fer, image&#8217;in repository&#8217;e y\u00fcklendi\u011fini g\u00f6rebilirsiniz;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-4.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"1632\" height=\"281\" class=\"aligncenter size-full wp-image-27620\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-4.png 1632w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-4-300x52.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-4-1024x176.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-4-768x132.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-4-1536x264.png 1536w\" sizes=\"auto, (max-width: 1632px) 100vw, 1632px\" \/><\/a>G\u00fczel&#8230; Art\u0131k bu a\u015famadan sonra bu image&#8217;i AWS App Runner instance&#8217;\u0131n\u0131 ba\u015flatmak i\u00e7in kaynak olarak kullanabiliriz.<\/p>\n<h4>Uygulamay\u0131 Docker Image \u00dczerinden AWS App Runner&#8217;a Deploy Etme<\/h4>\n<p>AWS Management Console \u00fczerinden AWS App Runner servisine gelelim,<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-5.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"817\" height=\"175\" class=\"aligncenter size-full wp-image-27622\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-5.png 817w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-5-300x64.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-5-768x165.png 768w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/a>ve a\u00e7\u0131lan sayfadan &#8216;Create an App Runner service&#8217; butonuna t\u0131klayarak bir App Runner hizmeti olu\u015ftural\u0131m.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-6.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"1273\" height=\"232\" class=\"aligncenter size-full wp-image-27623\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-6.png 1273w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-6-300x55.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-6-1024x187.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-6-768x140.png 768w\" sizes=\"auto, (max-width: 1273px) 100vw, 1273px\" \/><\/a>Ard\u0131ndan sonraki a\u00e7\u0131lacak sayfada hizmetin kayna\u011f\u0131n\u0131 tan\u0131mlamam\u0131z gerekecektir. Bunun i\u00e7in a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc inceleyebilirsiniz;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme.gif\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"800\" height=\"384\" class=\"aligncenter size-full wp-image-27625\" \/><\/a>Dikkat ederseniz &#8216;Source and deployment&#8217; alt\u0131ndaki &#8216;Repository type&#8217; k\u0131sm\u0131nda default olarak <em>Container registry<\/em> se\u00e7ili gelmektedir. Burada <em>Source code repository<\/em>&#8216;i se\u00e7erek iste\u011fe ba\u011fl\u0131 bir \u015fekilde Docker image&#8217;lar\u0131n\u0131 do\u011frudan GitHub repository&#8217;sinden veya herhangi bir ba\u015fka source control sisteminden build edebilme \u015fans\u0131na sahip oldu\u011funuzu da bilmenizi isterim. Tabi bunun i\u00e7in de ekstradan i\u015f y\u00fck\u00fc olaca\u011f\u0131n\u0131 s\u00f6ylemekte fayda var. Misal olarak, GitHub repository&#8217;sini se\u00e7tiyseniz, GitHub hesab\u0131n\u0131z\u0131 AWS&#8217;ye ba\u011flaman\u0131z gerekecek ve hesaptaki bir repository&#8217;i se\u00e7erek, uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131 i\u00e7in build komutlar\u0131n\u0131 eklemeniz gerekecektir \ud83d\ude42 Bizler bu noktada t\u00fcm bu u\u011fra\u015flar\u0131 es ge\u00e7iyor ve <em>Container registry<\/em> ile devam ediyoruz.<\/p>\n<p>&#8216;Provider&#8217; k\u0131sm\u0131nda ise <em>Amazon ECR<\/em>&#8216;yi se\u00e7erek private ECR&#8217;de tutulan container image&#8217;lar\u0131n\u0131 se\u00e7ip yolumuza devam ediyoruz. <em>Container image URI<\/em>&#8216;de ise biraz \u00f6nce olu\u015fturdu\u011fumuz image&#8217;i bulup, se\u00e7iyoruz. <em>Deployment<\/em> ayarlar\u0131n\u0131 ise <em>Automatic<\/em> olarak ayarlay\u0131p, yeni bir image s\u00fcr\u00fcm\u00fc g\u00f6nderildi\u011fi vakit AWS App Runner taraf\u0131ndan otomatik bir \u015fekilde deploy&#8217;u ger\u00e7ekle\u015ftiriyoruz. T\u00fcm bunlar\u0131n d\u0131\u015f\u0131nda ECR eri\u015fimi i\u00e7in temel bir politikaya sahip IAM rol\u00fcn\u00fc direkt k\u0131ssadan hisse yaparak olu\u015fturuyoruz. Tabi bu noktada gereksinimlerimize g\u00f6re gerekli izinlere sahip olan yeni bir IAM rol\u00fc olu\u015fturarak da yola devam edebilece\u011finizi de s\u00f6ylemeden ge\u00e7meyelim.<\/p>\n<p>Son olarak servisi, 1 vCPU(Virtual CPU) ve 2 GB(Virtual memory) olacak \u015fekilde minimum de\u011ferlerde yap\u0131land\u0131r\u0131yor ve Dockerfile&#8217;da belirtti\u011fimizin aksine port&#8217;u 8080 olarak ayarl\u0131yoruz. Bunlar\u0131n d\u0131\u015f\u0131nda geri kalan her \u015feyi varsay\u0131lan ayarlar\u0131nda b\u0131rak\u0131p, deploy&#8217;u ba\u015flat\u0131yoruz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-7.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"1407\" height=\"271\" class=\"aligncenter size-full wp-image-27628\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-7.png 1407w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-7-300x58.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-7-1024x197.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-7-768x148.png 768w\" sizes=\"auto, (max-width: 1407px) 100vw, 1407px\" \/><\/a>Bu deploy s\u00fcrecinde; pipeline&#8217;\u0131n olu\u015fturulmas\u0131, gerekli kaynaklar\u0131n sa\u011flanmas\u0131 ve docker image&#8217;\u0131n\u0131n pull edilmesi i\u00e7in birka\u00e7 dakika gerekecektir. Her \u015fey bitti\u011fi taktirde olu\u015fturulan servis a\u015fa\u011f\u0131daki gibi default domain&#8217;i e\u015fli\u011finde &#8216;Running&#8217; olarak g\u00f6z\u00fckecektir.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-8.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-8.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"1768\" height=\"465\" class=\"aligncenter size-full wp-image-27631\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-8.png 1768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-8-300x79.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-8-1024x269.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-8-768x202.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-8-1536x404.png 1536w\" sizes=\"auto, (max-width: 1768px) 100vw, 1768px\" \/><\/a>Evet, hi\u00e7 vakit kaybetmeksizin <em>Default domain<\/em> linkine t\u0131klayarak testimizi ger\u00e7ekle\u015ftirirsek,<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-9.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-9.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"413\" height=\"74\" class=\"aligncenter size-full wp-image-27632\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-9.png 413w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-9-300x54.png 300w\" sizes=\"auto, (max-width: 413px) 100vw, 413px\" \/><\/a>b\u00f6ylece uygulamam\u0131z\u0131n AWS App Runner arac\u0131l\u0131\u011f\u0131yla ba\u015far\u0131yla deploy edildi\u011fini g\u00f6rm\u00fc\u015f olaca\u011f\u0131z&#8230;<\/p>\n<h4>GitHub&#8217;\u0131 Kullanarak Uygulamay\u0131 AWS App Runner&#8217;a Deploy Etme<\/h4>\n<p>\u015eimdi de, ayn\u0131 uygulamay\u0131 GitHub&#8217;\u0131 kullanarak tekrar deploy etmeyi inceleyece\u011fiz. Bunun i\u00e7in \u00f6ncelikle uygulamay\u0131 GitHub&#8217;a g\u00f6nderelim, ard\u0131ndan a\u015fa\u011f\u0131daki gibi yeni bir servis create edelim.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-10.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"1178\" height=\"760\" class=\"aligncenter size-full wp-image-27633\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-10.png 1178w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-10-300x194.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-10-1024x661.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-10-768x495.png 768w\" sizes=\"auto, (max-width: 1178px) 100vw, 1178px\" \/><\/a>Tabi bu sefer <em>Source code repository<\/em>&#8216;i se\u00e7erek devam ediyoruz. B\u00f6ylece se\u00e7ti\u011fimiz ilgili GitHub repository&#8217;sine her yeni bir commit g\u00f6nderildi\u011finde, pipeline otomatik tetiklenecek ve AWS App Runner, olu\u015fturulan servise en son de\u011fi\u015fiklikleri otomatik deploy edecektir.<\/p>\n<p>Velhas\u0131l, devam\u0131nda ise GitHub&#8217;a dair build ve start yap\u0131land\u0131rmas\u0131nda bulunmam\u0131z gerekmektedir. Bunun i\u00e7in de a\u015fa\u011f\u0131daki g\u00f6rseldeki gibi bir yap\u0131land\u0131rmada bulunal\u0131m;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-11.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-11.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"1341\" height=\"690\" class=\"aligncenter size-full wp-image-27634\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-11.png 1341w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-11-300x154.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-11-1024x527.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-11-768x395.png 768w\" sizes=\"auto, (max-width: 1341px) 100vw, 1341px\" \/><\/a>Burada dikkat ederseniz e\u011fer runtime olarak sadece .NET 6&#8217;y\u0131 g\u00f6rmekteyiz. Ne tuhaft\u0131r ki AWS, App Runner servisinde .NET 6&#8217;n\u0131n \u00fcst versiyonlar\u0131n\u0131 hala runtime&#8217;da desteklememektedir <span style=\"font-size:12px;\">(bknz : <a href=\"https:\/\/docs.aws.amazon.com\/apprunner\/latest\/dg\/service-source-code-dotnet-releases.html\" target=\"_blank\">supported runtime versions<\/a>)<\/span> Haliyle bu durumda yapabileceklerimiz, ya uygulaman\u0131n altyap\u0131s\u0131n\u0131 .NET 6&#8217;ya g\u00f6re uyarlamak ya da hi\u00e7 GitHub source&#8217;a bula\u015fmaks\u0131z\u0131n Dockerfile yap\u0131s\u0131ndan yani biraz \u00f6nce g\u00f6rd\u00fc\u011f\u00fcm\u00fcz <em>Container registry<\/em> y\u00f6nteminden istifade etmektir. Tabi bizler GitHub source&#8217;u burada i\u00e7erik kalitesi i\u00e7in tecr\u00fcbe edece\u011fimizden dolay\u0131 uygulaman\u0131n uygun versiyona d\u00f6n\u00fc\u015f\u00fcm\u00fcyle devam edece\u011fiz.<\/p>\n<p>Burada ayr\u0131ca dikkat ederseniz <em>Build command<\/em> ve <em>Start command<\/em> alanlar\u0131nda uygulaman\u0131n build ve start yap\u0131land\u0131rmalar\u0131n\u0131 vermi\u015f bulunuyoruz. Burada verilen kodlar s\u0131ras\u0131yla a\u015fa\u011f\u0131daki gibidir;<\/p>\n<p><em>Build command<\/em><\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndotnet publish -c Release -o release\r\n<\/pre>\n<\/div>\n<p><em>Start command<\/em><\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndotnet release\/AWS.App.Runner.Example.dll --urls=http:\/\/0.0.0.0:8080\r\n<\/pre>\n<\/div>\n<p>Bu yap\u0131land\u0131rmalardan sonraki ad\u0131mda, olu\u015fturulacak bu servise bir isim verip;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-12.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"865\" height=\"334\" class=\"aligncenter size-full wp-image-27635\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-12.png 865w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-12-300x116.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-12-768x297.png 768w\" sizes=\"auto, (max-width: 865px) 100vw, 865px\" \/><\/a>ard\u0131ndan deploy&#8217;u ger\u00e7ekle\u015ftirelim&#8230; Birka\u00e7 dakika daha bekledikten sonra servisimiz haz\u0131r olacakt\u0131r.<\/p>\n<p>B\u00f6ylece art\u0131k deploy edilmi\u015f bu uygulaman\u0131n GitHub repository&#8217;sine yeni bir de\u011fi\u015fiklik\/comment g\u00f6ndermeyi denedi\u011fimizde, AWS App Runner&#8217;\u0131n tepkisini ve otomatik bir \u015fekilde yeniden deploy s\u00fcrecini ba\u015flatt\u0131\u011f\u0131n\u0131 g\u00f6zlemleyebilirsiniz.<\/p>\n<h4>Otomatik \u00d6l\u00e7eklendirme<\/h4>\n<p>Son olarak otomatik \u00f6l\u00e7eklendirmeyi de test edip i\u00e7eri\u011fimizi sonland\u0131ral\u0131m istiyorum. Bunun i\u00e7in a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde oldu\u011fu gibi App Runner \u00fczerinden olu\u015fturdu\u011fumuz servisi a\u00e7al\u0131m ve <em>Configuration<\/em> sekmesine gelip <em>Edit<\/em> butonuna t\u0131klayal\u0131m. A\u00e7\u0131lan sayfadan biraz a\u015fa\u011f\u0131dan <em>Auto scaling<\/em> alan\u0131na gelip, &#8216;Create new ASC&#8217; butonuna t\u0131klay\u0131p otomatik \u00f6l\u00e7eklendirme yap\u0131land\u0131rmas\u0131nda bulunal\u0131m.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-1.gif\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"800\" height=\"384\" class=\"aligncenter size-full wp-image-27636\" \/><\/a>Yap\u0131land\u0131rmam\u0131z a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-13.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-13.png\" alt=\"Asp.NET Core Web API Uygulamas\u0131n\u0131 AWS App Runner&#039;a ECR ve GitHub Arac\u0131l\u0131\u011f\u0131yla Deploy Etme\" width=\"570\" height=\"643\" class=\"aligncenter size-full wp-image-27637\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-13.png 570w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/03\/Asp.NET-Core-Web-API-Uygulamasini-AWS-App-Runnera-ECR-ve-GitHub-Araciligiyla-Deploy-Etme-13-266x300.png 266w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a>Burada g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere instance ba\u015f\u0131na 5 request al\u0131nmakta ve maksimum 25 instance&#8217;a kadar \u00f6l\u00e7eklendirme ger\u00e7ekle\u015ftirilmektedir.<\/p>\n<p>Nihai olarak;<br \/>\nT\u00fcm bunlar\u0131n d\u0131\u015f\u0131nda, olu\u015fturdu\u011fumuz AWS App Runner servisine \u00f6zel domain&#8217;imizi ekleyebilir ve uygulaman\u0131n health check yap\u0131land\u0131rmas\u0131n\u0131 HTTP ya da TCP protokolleri \u00fczerinden sa\u011flayabiliriz. B\u00f6ylece k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli uygulamalar i\u00e7in AWS App Runner&#8217;dan, kolay yap\u0131land\u0131r\u0131labilecek \u015fekilde, container tabanl\u0131 deste\u011fi tam tad\u0131nda alabiliriz. Ama tekrar s\u00f6ylemekte fayda vard\u0131r ki, b\u00fcy\u00fck kapsaml\u0131 uygulamalar\u0131n, teferruatl\u0131 yap\u0131land\u0131rma ve optimizasyon ihtiya\u00e7lar\u0131 s\u00f6z konusu olaca\u011f\u0131 i\u00e7in i\u015fte bu taktirde AWS App Runner do\u011fru se\u00e7enek olmayacakt\u0131r. Basitlik, otomasyon ve kullan\u0131m kolayl\u0131\u011f\u0131 \u00f6ncelikse ve web uygulamalar\u0131n\u0131 h\u0131zl\u0131 bir \u015fekilde deploy etmek ve y\u00f6netmek isteniyorsa AWS App Runner en uygun se\u00e7imdir diyebiliriz.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek \u00e7al\u0131\u015fmaya a\u015fa\u011f\u0131daki GitHub adresinden eri\u015febilirsiniz.<br \/>\n<a href=\"https:\/\/github.com\/gncyyldz\/AWS.App.Runner.Example\" target=\"_blank\">https:\/\/github.com\/gncyyldz\/AWS.App.Runner.Example<\/a><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde AWS&#8217;de, \u00f6nceden inceledi\u011fimiz EC2, ECS, Elastic Beanstalk ve Lambda deploy y\u00f6ntemlerinden farkl\u0131 bir se\u00e7enek olan, ECR ve GitHub arac\u0131l\u0131\u011f\u0131yla App Runner&#8217;a deploy s\u00fcrecini inceliyor olaca\u011f\u0131z. AWS App Runner Nedir? AWS App&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":27638,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5206,4730],"tags":[5252,5245,5247,5246,5243,5248,5249,4787,5251,5244],"class_list":["post-27608","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-aws","tag-amazon-ecr","tag-app-runner","tag-asp-net-core-aws","tag-asp-net-core-aws-app-runner","tag-aws-app-runner","tag-aws-app-runner-nedir","tag-aws-app-runnerin-ozellikleri","tag-ecr","tag-elastic-container-repository","tag-github"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=27608"}],"version-history":[{"count":11,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27608\/revisions"}],"predecessor-version":[{"id":27639,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27608\/revisions\/27639"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/27638"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=27608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=27608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=27608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}