﻿
{"id":27259,"date":"2024-11-02T13:45:18","date_gmt":"2024-11-02T13:45:18","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=27259"},"modified":"2024-11-02T13:46:32","modified_gmt":"2024-11-02T13:46:32","slug":"aws-cloud-development-kitaws-cdki-c-ile-inceleyelim","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/aws-cloud-development-kitaws-cdki-c-ile-inceleyelim\/","title":{"rendered":"AWS Cloud Development Kit(AWS CDK)&#8217;i C# \u0130le \u0130nceleyelim"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde, geli\u015ftiricilerin AWS kaynaklar\u0131n\u0131 programlama dilleriyle tan\u0131mlayarak y\u00f6netmelerine olanak tan\u0131yan bir yaz\u0131l\u0131m geli\u015ftirme paketi olan <em>AWS Cloud Development Kit(AWS CDK)<\/em>&#8216;i inceleyece\u011fiz. Tabi her \u015feyden \u00f6nce bu paketi bizlere sunan davran\u0131\u015f\u0131n temelleri olan <em>Infrastructure as Code (IaC)<\/em> kavram\u0131na temas ederek yola \u00e7\u0131kacak ve burada ilk olarak bir fark\u0131ndal\u0131k do\u011furduktan sonra AWS CDK ile tan\u0131\u015faca\u011f\u0131z. O halde fazla uzatmaks\u0131z\u0131n buyurun ba\u015flayal\u0131m.<\/p>\n<h4>Infrastructure as Code (IaC) Nedir?<\/h4>\n<p>Infrastructure as Code (IaC), bir altyap\u0131n\u0131n(ki bu altyap\u0131da sunucular, a\u011flar, veritabanlar\u0131, depolama alanlar\u0131 vs. hepsi olabilir) geleneksel olarak manuel ayarlanmas\u0131na kar\u015f\u0131n programlanabilir kod olarak y\u00f6netilmesini ve yap\u0131land\u0131r\u0131lmas\u0131n\u0131 ifade eden bir kavramd\u0131r. IaC ile s\u00fcre\u00e7 tekrarlanabilecek ve versiyonlanabilecek \u015fekilde otomatikle\u015ftirilebilmektedir.<\/p>\n<blockquote><p><em>IaC&#8217;nin en b\u00fcy\u00fck avantaj\u0131, olu\u015fturulmu\u015f bir altyap\u0131n\u0131n farkl\u0131 cloud provider&#8217;lar\u0131 yahut veri merkezleri \u00fczerinde benzer \u015fekilde kurulabilir olmas\u0131 yani ta\u015f\u0131nabilirli\u011fi sa\u011flamas\u0131d\u0131r.<\/em><\/p><\/blockquote>\n<p>IaC sayesinde altyap\u0131y\u0131 dakikalar i\u00e7erisinde kurma ve y\u00f6netme olana\u011f\u0131 elde edebilmekte, environment&#8217;lar\u0131 manuel yap\u0131land\u0131rma s\u00fcre\u00e7lerinde ya\u015fan\u0131lan olas\u0131 hata durumlar\u0131 m\u00fcmk\u00fcn mertebe ortadan kald\u0131r\u0131lmakta, ihtiyaca binaen altyap\u0131 de\u011fi\u015fiklikleri versiyonlanarak kolayca izlenebilmekte ve b\u00f6ylece t\u00fcm s\u00fcreci ister orta isterse de b\u00fcy\u00fck \u00f6l\u00e7ekli olsun t\u00fcm altyap\u0131larda kolay ve merkezi bir \u015fekilde y\u00f6netebilme olana\u011f\u0131 elde edilebilmektedir.<\/p>\n<p>Evet&#8230; anlayaca\u011f\u0131n\u0131z, IaC altyap\u0131 kaynaklar\u0131n\u0131 programatik bir \u015fekilde y\u00f6netmemizi sa\u011flayacak olan devrim niteli\u011finde bir yakla\u015f\u0131md\u0131r diyebiliriz.<\/p>\n<h4>AWS CDK Nedir?<\/h4>\n<blockquote><p><em>AWS CDK, AWS taraf\u0131ndan sunulan bir IaC framework&#8217;\u00fcd\u00fcr.<\/em><\/p><\/blockquote>\n<p>Malumunuz, geleneksel y\u00f6ntemlerde AWS altyap\u0131s\u0131 genellikle JSON yahut YAML tabanl\u0131 CloudFormation \u015fablonlar\u0131yla tan\u0131mlan\u0131rken AWS CDK ile bu kaynaklar TypeScript, JavaScript, Python, Java ve C# gibi y\u00fcksek seviyeli programlama dilleri kullan\u0131larak olu\u015fturulabilmektedir.<\/p>\n<h5>AWS CDK&#8217;n\u0131n Amac\u0131 Nedir?<\/h5>\n<p>AWS CDK&#8217;n\u0131n temel amac\u0131, AWS altyap\u0131s\u0131n\u0131 kod olarak tan\u0131mlayarak infrastructure y\u00f6netimini yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerine entegre etmek ve geli\u015ftiricilerin altyap\u0131 olu\u015fturmalar\u0131n\u0131 daha h\u0131zl\u0131 ve verimli hale getirmektir.<\/p>\n<h5>AWS CDK&#8217;n\u0131n Avantajlar\u0131 Nelerdir?<\/h5>\n<p>AWS CDK&#8217;n\u0131n sa\u011flad\u0131\u011f\u0131 ba\u015fl\u0131ca avantajlar\u0131 \u015f\u00f6yle s\u0131ralayabiliriz;<\/p>\n<ul>\n<li><em><strong>Kod Tabanl\u0131 Altyap\u0131 Tan\u0131m\u0131<\/strong><\/em><br \/>\nAltyap\u0131 kaynaklar\u0131 y\u00fcksek seviyeli programlama dilleriyle tan\u0131mlanabilmekte ve b\u00f6ylece geli\u015ftiriciler daha az karma\u015f\u0131kl\u0131kla ve daha okunabilir \u015fekilde altyap\u0131 olu\u015fturabilmektedirler.<\/li>\n<li><em><strong>Yeniden Kullan\u0131labilir Yap\u0131lar<\/strong><\/em><br \/>\nAltyap\u0131 bile\u015fenleri kod olarak tan\u0131mland\u0131\u011f\u0131 i\u00e7in mod\u00fcler yap\u0131lar olu\u015fturulabilir ve farkl\u0131 projelerde yeniden kullan\u0131labilir halde tasar\u0131mda bulunabilir.<\/li>\n<li><em><strong>CloudFormation \u0130le Uyumlu<\/strong><\/em><br \/>\nAWS CDK ile yaz\u0131lan kodlar arka planda CloudFormation \u015fablonlar\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr ve AWS&#8217;ye uygulan\u0131r. B\u00f6ylece CloudFormation&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 t\u00fcm g\u00fcvenlik ve yap\u0131land\u0131rma y\u00f6netimi \u00f6zelliklerinden yararlan\u0131l\u0131r.<\/li>\n<li><em><strong>Y\u00fcksek D\u00fczeyli Soyutlama<\/strong><\/em><br \/>\nAWS CDK, d\u00fc\u015f\u00fck seviyeli AWS kaynaklar\u0131n\u0131 soyutlayarak daha kullan\u0131c\u0131 dostu ve verimli kaynak y\u00f6netimi sa\u011flar. \u00d6rne\u011fin, sadece birka\u00e7 sat\u0131r kod ile bir Lambda fonksiyonu ve ona ba\u011fl\u0131 bir API Gateway olu\u015fturulabilir.<\/li>\n<li><em><strong>S\u00fcr\u00fckleyici Yaz\u0131l\u0131m Geli\u015ftirme Deneyimi<\/strong><\/em><br \/>\nIDE&#8217;ler ve kod tamamlama gibi ara\u00e7lar AWS CDK ile kolayca entegre edilebilir. Bu da geli\u015ftiricilere daha h\u0131zl\u0131 bir geli\u015ftirme deneyimi sunar.<\/li>\n<\/ul>\n<p>Yani anla\u015f\u0131lan AWS CDK&#8217;in nimetleri o kadar fazlad\u0131r ki, \u00f6zellikle benim gibi kompleks AWS cloud aray\u00fcz\u00fcnde emekli emmiler gibi problem ya\u015fayan geli\u015ftiriciler i\u00e7in soyutlama sa\u011flayarak sevdi\u011fi ortam olan kod diyar\u0131ndan pratik bir \u015fekilde altyap\u0131lar\u0131 standardize edebilmesine ve y\u00f6netebilmesine imkan tan\u0131maktad\u0131r.<\/p>\n<h4>AWS CDK Nas\u0131l Kullan\u0131l\u0131r?<\/h4>\n<p>AWS CDK&#8217;n\u0131n kullan\u0131m\u0131 i\u00e7in \u00f6ncelikle ilgili bilgisayara <code>AWS CDK CLI<\/code>&#8216;\u0131n y\u00fcklenmesi gerekmektedir. Bunun i\u00e7in a\u015fa\u011f\u0131daki talimat\u0131n terminal \u00fczerinden verilmesi yeterlidir;<\/p>\n<div style=\"text-align: center;\"><code style=\"color: purple;\">npm install -g aws-cdk<\/code><\/div>\n<p>AWS CDK CLI&#8217;\u0131n kurulumunu ger\u00e7ekle\u015ftirdikten sonra AWS ortam\u0131n\u0131n ba\u015flat\u0131lmas\u0131 ve gerekli \u00f6n haz\u0131rl\u0131klar\u0131n yap\u0131lmas\u0131 gerekmektedir. Bunun i\u00e7in de a\u015fa\u011f\u0131daki talimat\u0131n verilmesi gerekmektedir;<\/p>\n<div style=\"text-align: center;\"><code style=\"color: purple;\">cdk bootstrap<\/code><\/div>\n<p>Bu komutun her yeni AWS hesab\u0131 i\u00e7in bir kez \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 yeterli olacakt\u0131r. Ha hala <u>neden bu komutu \u00e7al\u0131\u015ft\u0131rmam\u0131z gerekti\u011fine dair<\/u> bir fikriniz yoksa \u015f\u00f6yle izah etmeye \u00e7al\u0131\u015fal\u0131m. AWS CDK ile olu\u015fturdu\u011funuz kaynaklar, arka planda AWS kaynaklar\u0131n\u0131 tan\u0131mlamak ve y\u00f6netmek i\u00e7in kod tabanl\u0131 \u015fablon imkan\u0131 sa\u011flayan CloudFormation servisi, AWS \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rlar. Ancak baz\u0131 CDK projeleri, ki \u00f6zellikle de <a href=\"https:\/\/www.gencayyildiz.com\/blog\/net-7-aws-lambda-ile-serverless-computing\/\" target=\"_blank\" rel=\"noopener\">Lambda<\/a>, <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-aws-s3-ile-dosya-islemleri-gerceklestirme-upload-download-delete-files\/\" target=\"_blank\" rel=\"noopener\">S3 Bucket<\/a>, <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-api-uygulamasini-amazon-escye-deploy-etme-aws-fargate-ile-dockerize-operasyonu\/\" target=\"_blank\" rel=\"noopener\">ECR (Elastic Container Registry)<\/a> gibi kaynaklar\u0131 kullanacak projeler kendi kendini referans alabilen kaynaklar\u0131 olu\u015ftururlar. Bu kaynaklar\u0131n AWS&#8217;de deploy edilebilmesi i\u00e7in \u00f6nceden bir &#8216;bootstrap&#8217; i\u015flemi yap\u0131lmas\u0131 gerekmektedir. <em>cdk bootstrap<\/em> komutu bu kaynaklar\u0131 haz\u0131rlayarak ortam\u0131 deploy s\u00fcrecine uygun hale getirmektedir. <span style=\"font-size: 12px;\">(Kendi kendine eri\u015fim ya da referans alabilmekten kas\u0131t; AWS CDK&#8217;n\u0131n AWS \u00fczerinde deploy etmek istedi\u011fi Lambda vs. gibi kaynaklar\u0131 \u00f6nce kendi ortam\u0131na y\u00fckleyip oradan y\u00f6netmesi gerekti\u011fi durumlara kar\u015f\u0131l\u0131k gelmektedir. Misal olarak, bir Lambda fonksiyonunu AWS&#8217;ye y\u00fckleyebilmek i\u00e7in \u00f6ncelikle S3 gibi bir depolama hizmeti y\u00fcklenmelidir. AWS CDK bu Lambda kodunu AWS&#8217;ye g\u00f6ndermeden \u00f6nce kendi olu\u015fturdu\u011fu S3 bucket&#8217;a y\u00fckler. Bu bucket, kendi kendine eri\u015fim kavram\u0131 i\u00e7in kullan\u0131lan bir varl\u0131kt\u0131r ve CloudFormation \u015fablonu, Lambda fonksiyonunu olu\u015ftururken bu S3 bucket&#8217;tan alacak ve kullanacakt\u0131r.)<\/span><\/p>\n<p>Ayr\u0131ca bu komut, CloudFormation stack&#8217;lerini ve Lambda gibi di\u011fer varl\u0131klar\u0131 y\u00fcklemek i\u00e7in gerekli S3 bucket&#8217;i olu\u015fturacak ve AWS CDK&#8217;nin CloudFormation stack&#8217;lerini deploy edebilmesi i\u00e7in ihtiya\u00e7 duyaca\u011f\u0131 izinlere sahip IAM rollerini olu\u015fturacakt\u0131r. B\u00f6ylece AWS kaynaklar\u0131n\u0131n kendi kendine eri\u015fim ve kaynak y\u00fckleme gereksinimi oldu\u011fu bu tarz durumlarda bir \u00f6n haz\u0131rl\u0131k ad\u0131m\u0131 ger\u00e7ekle\u015ftirilmi\u015f olunacakt\u0131r.<\/p>\n<p>Velhas\u0131l, ilgili talimat verildikten sonra varsay\u0131lan AWS profili neyse onun \u00fczerinden \u00e7al\u0131\u015ft\u0131r\u0131lacakt\u0131r.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27266\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim.png\" alt=\"AWS Cloud Development Kit(AWS CDK)'i C# \u0130le \u0130nceleyelim\" width=\"935\" height=\"37\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim.png 935w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-300x12.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-768x30.png 768w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/a>E\u011fer ki bu talimat\u0131 belirli bir AWS hesab\u0131 \u00fczerinden \u00e7al\u0131\u015ft\u0131rmak istiyor ya da yukar\u0131daki g\u00f6rselde oldu\u011fu gibi uyar\u0131l\u0131yorsan\u0131z a\u015fa\u011f\u0131daki gibi talimat\u0131 \u00f6zelle\u015ftirebilirsiniz;<\/p>\n<div style=\"text-align: center;\"><code style=\"color: purple;\">cdk bootstrap aws:\/\/&lt;AWS_ACCOUNT_ID&gt;\/&lt;AWS_REGION&gt;<\/code><\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1276\" height=\"820\" class=\"aligncenter size-full wp-image-27269\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1.png 1276w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1-300x193.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1-1024x658.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1-768x494.png 768w\" sizes=\"auto, (max-width: 1276px) 100vw, 1276px\" \/><\/a>Evet, g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere S3 bucket ve AWS CDK CLI&#8217;ye izin vermek i\u00e7in birka\u00e7 IAM rol\u00fc gibi gerekli kaynaklar\u0131 i\u00e7eren yeni bir CloudFormation stack&#8217;i olu\u015fturmu\u015f bulunmaktad\u0131r.<\/p>\n<p>Tabi bir yandan CDK Bootstrapping s\u00fcrecinin bir par\u00e7as\u0131 olarak hangi AWS kaynaklar\u0131n\u0131n deploy edildi\u011fini bilmek isterseniz AWS CloudFormation \u00fczerinden CDKToolkit stack&#8217;ine a\u015fa\u011f\u0131daki gibi g\u00f6z atabilirsiniz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1837\" height=\"899\" class=\"aligncenter size-full wp-image-27271\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2.png 1837w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2-300x147.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2-1024x501.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2-768x376.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2-1536x752.png 1536w\" sizes=\"auto, (max-width: 1837px) 100vw, 1837px\" \/><\/a>Bu a\u015famadan sonra bir .NET CDK projesi olu\u015fturup yola devam edebiliriz. Bunun i\u00e7in de <\/p>\n<div style=\"text-align: center;\"><code style=\"color: purple;\">cdk init --language csharp<\/code><\/div>\n<p> talimat\u0131ndan yararlan\u0131lmaktad\u0131r.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1276\" height=\"820\" class=\"aligncenter size-full wp-image-27272\" \/><\/a><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-4.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"105\" height=\"138\" class=\"alignleft size-full wp-image-27276\" \/><\/a>Bu talimat ile AWS CDK \u00fczerinden yandaki dosya i\u00e7eri\u011fine sahip C# ile geli\u015ftirilebilir bir proje olu\u015fturulmaktad\u0131r. Bu projenin i\u00e7erisindeki &#8216;src&#8217; klas\u00f6r\u00fc esas CDK projesine kar\u015f\u0131l\u0131k gelmektedir diyebiliriz. Bu klas\u00f6r i\u00e7erisine g\u00f6z at\u0131l\u0131rsa bir solution dosyas\u0131 g\u00f6r\u00fclecektir. \u0130\u015fte bu dosya Visual Studio&#8217;da a\u00e7\u0131larak proje aya\u011fa kald\u0131r\u0131labilir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"290\" height=\"215\" class=\"alignright size-full wp-image-27277\" \/><\/a><br \/>\nBurada ilk olarak dikkat edilmesini istedi\u011fim husus, CDK projesi hangi dizinde olu\u015fturuluyorsa projenin solution&#8217;\u0131n\u0131n ve i\u00e7erisindeki baz\u0131 dosyalar\u0131n isimlerinin oradan gelmesidir. Dikkat ederseniz <em style=\"color:green;\">CdkDotnetDevelopersStack.cs<\/em> dosyas\u0131 bu \u015fekilde olu\u015fturulmu\u015ftur. Bu dosya esas\u0131nda default CloudFormation Stack&#8217;ine kar\u015f\u0131l\u0131k gelmektedir ve i\u00e7eri\u011fi ilk etapta a\u015fa\u011f\u0131daki gibidir;<\/p>\n<div style=\"font-size: 12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Amazon.CDK;\r\nusing Constructs;\r\n\r\nnamespace CdkDotnetDevelopers\r\n{\r\n    public class CdkDotnetDevelopersStack : Stack\r\n    {\r\n        internal CdkDotnetDevelopersStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\r\n        {\r\n            \/\/ The code that defines your stack goes here\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div>\n<p><em style=\"color:green;\">GlobalSuppressions.cs<\/em> dosyas\u0131 ise projedeki statik analiz uyar\u0131lar\u0131n\u0131 bast\u0131rmak i\u00e7in kullan\u0131lmaktad\u0131r. <em>Bu ne demek hocam?<\/em> diye soruyorsan\u0131z \u015f\u00f6yle izah edelim: C# projelerinde statik kod analiz ara\u00e7lar\u0131, potansiyel sorunlar ve stil hatalar\u0131 i\u00e7in uyar\u0131lar verebilmektedir. Bizlerin bu t\u00fcr uyar\u0131lar\u0131 belirli kod par\u00e7alar\u0131 i\u00e7in g\u00f6rmezden gelmesi amac\u0131yla <em>GlobalSuppressions.cs<\/em> dosyas\u0131 kullan\u0131l\u0131r. Bu dosyan\u0131n i\u00e7eri\u011fi genellikle otomatik olarak olu\u015fturulur ve uyar\u0131lar\u0131n hangi kod b\u00f6l\u00fcmleri i\u00e7in bast\u0131r\u0131laca\u011f\u0131n\u0131 belirtir. \u0130\u00e7eri\u011fi ilk etapta a\u015fa\u011f\u0131daki gibidir;<\/p>\n<div style=\"font-size: 12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&#x5B;assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(&quot;Potential Code Quality Issues&quot;, &quot;RECS0026:Possible unassigned object created by 'new'&quot;, Justification = &quot;Constructs add themselves to the scope in which they are created&quot;)]\r\n<\/pre>\n<\/div>\n<p>Proje yap\u0131land\u0131rman\u0131za g\u00f6re bu dosya bo\u015f olabilir yahut belirli uyar\u0131lar i\u00e7in \u00f6zel suppress i\u015flemleri bar\u0131nd\u0131rabilir.<\/p>\n<p><em style=\"color:green;\">Program.cs<\/em> dosyas\u0131na gelirsek e\u011fer ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 \u00fczere AWS CDK projesinin giri\u015f noktas\u0131d\u0131r ve CDK uygulamas\u0131n\u0131n ba\u015flat\u0131lmas\u0131ndan sorumludur. <em>Program.cs<\/em> dosyas\u0131nda, CDK&#8217;n\u0131n \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 ve tan\u0131mlanan stack&#8217;lerin deploy edilmesi gibi i\u015flemler yap\u0131l\u0131r. \u0130lk etaptaki i\u00e7eri\u011fi yorumlardan ar\u0131nd\u0131r\u0131ld\u0131ktan sonra a\u015fa\u011f\u0131daki gibidir;<\/p>\n<div style=\"font-size: 12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Amazon.CDK;\r\n\r\nnamespace CdkDotnetDevelopers\r\n{\r\n    sealed class Program\r\n    {\r\n        public static void Main(string&#x5B;] args)\r\n        {\r\n            var app = new App();\r\n            new CdkDotnetDevelopersStack(app, &quot;CdkDotnetDevelopersStack&quot;, new StackProps\r\n            {\r\n\r\n            });\r\n            app.Synth();\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div>\n<p>Burada yap\u0131lan \u00e7al\u0131\u015fmay\u0131 \u00f6zetlememiz gerekirse; <code>App<\/code> nesnesi, AWS CDK uygulamas\u0131n\u0131 temsil etmekte ve t\u00fcm stack&#8217;lerin ve kaynaklar\u0131n bu uygulama i\u00e7erisinde tan\u0131mlanmas\u0131n\u0131 sa\u011flamaktad\u0131r. <code>new CdkDotnetDevelopersStack(app, \"CdkDotnetDevelopersStack\", new StackProps {})<\/code> tan\u0131m\u0131 ise stack&#8217;in olu\u015fturulmas\u0131n\u0131 sa\u011flamaktad\u0131r. <code>app.Synth()<\/code> komutu ise AWS CloudFormation i\u00e7in daha sonra AWS&#8217;ye g\u00f6nderilerek kaynaklar\u0131n olu\u015fturulmas\u0131n\u0131 sa\u011flayacak olan bir template \u00fcretmektedir.<\/p>\n<h5>C# Kullanarak Bir AWS S3 Bucket&#8217;\u0131 Olu\u015fturma<\/h5>\n<p>\u015eimdi ilk olarak basit bir AWS S3 Bucket&#8217;\u0131 olu\u015fturarak devam edelim;<\/p>\n<div style=\"font-size: 12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Amazon.CDK;\r\nusing Amazon.CDK.AWS.S3;\r\nusing Constructs;\r\n\r\nnamespace CdkDotnetDevelopers\r\n{\r\n    public class CdkDotnetDevelopersStack : Stack\r\n    {\r\n        internal CdkDotnetDevelopersStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\r\n        {\r\n            var s3Bucket = new Bucket(this, &quot;example-bucket&quot;, new BucketProps\r\n            {\r\n                Versioned = false,\r\n                AutoDeleteObjects = true,\r\n                RemovalPolicy = RemovalPolicy.SNAPSHOT\r\n            });\r\n\r\n            new CfnOutput(this, &quot;BucketArn&quot;, new CfnOutputProps { Value = s3Bucket.BucketArn });\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div>\n<p>Yukar\u0131daki \u00e7al\u0131\u015fmaya g\u00f6z atarsak e\u011fer, <code>new Bucket(..)<\/code> komutuyla bir depolama birimi olan <em>&#8220;example-bucket&#8221;<\/em> isminde bir S3 bucket nesnesi olu\u015fturulmaktad\u0131r. Olu\u015fturulan bu bucket&#8217;\u0131 yap\u0131land\u0131rmak i\u00e7in <code>BucketProps<\/code> nesnesi kullan\u0131lmakta ve <code>Versioned<\/code> property&#8217;sine <em>&#8216;false&#8217;<\/em> de\u011feri verilerek versiyonlama devre d\u0131\u015f\u0131 b\u0131rak\u0131lmaktad\u0131r. B\u00f6ylece ayn\u0131 isimle y\u00fcklenecek olan yeni dosyalar, eskilerin \u00fczerine yaz\u0131lacakt\u0131r. <code>RemovalPolicy<\/code> property&#8217;si ile de bucket&#8217;\u0131n silinmesi durumunda ne yap\u0131laca\u011f\u0131 belirlenmektedir. Burada <em>&#8216;RemovalPolicy.SNAPSHOT&#8217;<\/em> de\u011feri verilerek bucket silindi\u011fi taktirde bir snapshot al\u0131nmas\u0131 ve b\u00f6ylece verilerin korunmas\u0131 yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r.<\/p>\n<p><code>new CfnOutput(..)<\/code> kodunda ise stack&#8217;te olu\u015fturulan kaynaklar\u0131n kimi \u00f6zelliklerinin \u00e7\u0131kt\u0131s\u0131 al\u0131nmaktad\u0131r. Ki b\u00f6ylece bu stack&#8217;te olu\u015fturulan kaynak bilgileri di\u011fer stack&#8217;ler yahut hizmetler taraf\u0131ndan rahatl\u0131kla eri\u015filebilsin ve kullan\u0131labilsin.<\/p>\n<p>Velhas\u0131l, bu \u00e7al\u0131\u015fmay\u0131 yapt\u0131ktan sonra stack&#8217;i deploy etmemiz yeterli olacakt\u0131r. Bunun i\u00e7in a\u015fa\u011f\u0131daki talimat\u0131n verilmesi yeterlidir;<\/p>\n<div style=\"text-align: center;\"><code style=\"color: purple;\">cdk deploy<\/code><\/div>\n<p>Bu talimat\u0131n verilmesi neticesinde bir ihtimal a\u015fa\u011f\u0131daki gibi bir hatayla kar\u015f\u0131la\u015f\u0131labilmesi muhtemeldir;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-7.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1425\" height=\"280\" class=\"aligncenter size-full wp-image-27281\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-7.png 1425w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-7-300x59.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-7-1024x201.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-7-768x151.png 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><\/a>Bunun nedeni, AWS CDK&#8217;n\u0131n S3 bucket&#8217;\u0131 i\u00e7in <code>RemovalPolicy.SNAPSHOT<\/code> kullan\u0131m\u0131n\u0131 desteklememesi ve bunun yerine <code>RemovalPolicy.DESTROY<\/code> ya da <code>RemovalPolicy.RETAIN<\/code>&#8216;in kullan\u0131lmas\u0131 gereklili\u011fidir. Olas\u0131 hatayla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z taktirde gerekli d\u00fczenlemeleri yap\u0131p tekrardan ilgili talimat\u0131 verirseniz a\u015fa\u011f\u0131daki gibi deploy&#8217;un ba\u015far\u0131yla tamamland\u0131\u011f\u0131n\u0131 g\u00f6zlemleyebilirsiniz.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-6.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1545\" height=\"930\" class=\"aligncenter size-full wp-image-27280\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-6.png 1545w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-6-300x181.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-6-1024x616.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-6-768x462.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-6-1536x925.png 1536w\" sizes=\"auto, (max-width: 1545px) 100vw, 1545px\" \/><\/a>Bu i\u015flem \u00fczerine AWS CloudFormation&#8217;a giderseniz yeni stack&#8217;in a\u015fa\u011f\u0131daki gibi olu\u015fturuldu\u011funu g\u00f6rebilirsiniz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-8.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-8.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"833\" height=\"351\" class=\"aligncenter size-full wp-image-27282\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-8.png 833w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-8-300x126.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-8-768x324.png 768w\" sizes=\"auto, (max-width: 833px) 100vw, 833px\" \/><\/a>\u0130lgili stack&#8217;e t\u0131klay\u0131p &#8216;Resources&#8217; sekmesine g\u00f6z atarsan\u0131z e\u011fer CDK deploy s\u00fcrecinin bir par\u00e7as\u0131 olarak sa\u011flanan kaynaklar\u0131 da g\u00f6zlemleyebilirsiniz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-9.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-9.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"925\" height=\"781\" class=\"aligncenter size-full wp-image-27283\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-9.png 925w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-9-300x253.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-9-768x648.png 768w\" sizes=\"auto, (max-width: 925px) 100vw, 925px\" \/><\/a>En \u00f6nemlisi de S3 bucket&#8217;\u0131n\u0131n olu\u015fturulup olu\u015fturulmad\u0131\u011f\u0131n\u0131 do\u011frulayabilmek i\u00e7in de AWS S3&#8217;e gidip sa\u011flamas\u0131n\u0131 yapabilirsiniz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-10.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"961\" height=\"475\" class=\"aligncenter size-full wp-image-27284\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-10.png 961w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-10-300x148.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-10-768x380.png 768w\" sizes=\"auto, (max-width: 961px) 100vw, 961px\" \/><\/a>Evet, g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere S3 bucket ba\u015far\u0131yla olu\u015fturulmu\u015ftur.<\/p>\n<h5>Resource Yap\u0131land\u0131rmas\u0131nda G\u00fcncelleme Yapmak<\/h5>\n<p>Ya bir resource yap\u0131land\u0131rmas\u0131nda g\u00fcncelleme yapmak isteseydik? Misal olarak, S3 bucket&#8217;ta versiyonlamay\u0131(<code>Versioned<\/code>) etkinle\u015ftirmek istiyor olsayd\u0131k&#8230; Bunun i\u00e7in yap\u0131lmas\u0131 gereken CDK koduna gerekli g\u00fcncellemenin yans\u0131t\u0131lmas\u0131 ve ard\u0131ndan bu g\u00fcncelleme neticesinde mevcut olanla fark\u0131 yakalamak i\u00e7in <code style=\"color: purple;\">cdk diff<\/code> talimat\u0131n\u0131n verilmesidir. Bu talimat bizlere CloudFormation&#8217;da deploy edilmi\u015f stack&#8217;le, yeni yap\u0131lan de\u011fi\u015fiklik aras\u0131ndaki fark\u0131 verecektir.<\/p>\n<div style=\"font-size: 12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\n            var s3Bucket = new Bucket(this, &quot;example-bucket&quot;, new BucketProps\r\n            {\r\n                Versioned = true,\r\n                AutoDeleteObjects = true,\r\n                RemovalPolicy = RemovalPolicy.DESTROY\r\n            });\r\n.\r\n.\r\n.\r\n<\/pre>\n<\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-11.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-11.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"935\" height=\"281\" class=\"aligncenter size-full wp-image-27286\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-11.png 935w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-11-300x90.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-11-768x231.png 768w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/a>Evet, g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere yap\u0131lan i\u015flem neticesinde fark\u0131 elde etmi\u015f bulunuyor, ard\u0131ndan a\u015fa\u011f\u0131da oldu\u011fu gibi yenili\u011fi tekrar deploy ediyoruz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-12.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"931\" height=\"379\" class=\"aligncenter size-full wp-image-27288\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-12.png 931w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-12-300x122.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-12-768x313.png 768w\" sizes=\"auto, (max-width: 931px) 100vw, 931px\" \/><\/a><\/p>\n<h5>C# Kullanarak Bir AWS DynamoDB Tablosu Olu\u015fturma<\/h5>\n<p>\u015eimdi de ba\u015fka bir \u00f6rnek yapal\u0131m. Bir CDK projesi \u00fczerinden AWS DynamoDB tablosu olu\u015ftural\u0131m.<\/p>\n<div style=\"font-size: 12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Amazon.CDK;\r\nusing Amazon.CDK.AWS.DynamoDB;\r\nusing Amazon.CDK.AWS.S3;\r\nusing Constructs;\r\n\r\nnamespace CdkDotnetDevelopers\r\n{\r\n    public class CdkDotnetDevelopersStack : Stack\r\n    {\r\n        internal CdkDotnetDevelopersStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\r\n        {\r\n            #region Bucket - S3\r\n            .\r\n            .\r\n            .\r\n            #endregion\r\n\r\n            #region Table - DynamoDB\r\n            var dynamoDBTable = new Table(this, &quot;example-table&quot;, new TableProps\r\n            {\r\n                TableName = &quot;example-table&quot;,\r\n                PartitionKey = new Attribute { Name = &quot;id&quot;, Type = AttributeType.STRING },\r\n                BillingMode = BillingMode.PAY_PER_REQUEST\r\n            });\r\n\r\n            new CfnOutput(this, &quot;TableArn&quot;, new CfnOutputProps { Value = dynamoDBTable.TableArn });\r\n            #endregion\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div>\n<p>Burada yap\u0131lan \u00e7al\u0131\u015fmay\u0131 incelersek e\u011fer <code>Table<\/code> s\u0131n\u0131f\u0131 ile <em>&#8216;example-table&#8217;<\/em> ad\u0131nda bir DynamoDB tablosu tasarlanmakta ve <code>PartitionKey<\/code> property&#8217;si \u00fczerinden <em>&#8216;id&#8217;<\/em> ad\u0131nda string bir primary key alan\u0131 olu\u015fturulmaktad\u0131r. Ayr\u0131ca <code>BillingMode<\/code> propery&#8217;si sayesinde de faturaland\u0131rma modeli olarak <em>&#8216;BillingMode.PAY_PER_REQUEST&#8217;<\/em> de\u011feri se\u00e7ilerek yaln\u0131zca okuma ve yazma istekleri i\u00e7in \u00fccretlendirme yap\u0131land\u0131r\u0131lmas\u0131nda bulunulmaktad\u0131r. Bu faturaland\u0131rma politikas\u0131 i\u00e7in k\u00fc\u00e7\u00fck ve d\u00fczensiz veri ak\u0131\u015f\u0131 olan uygulamalar i\u00e7in en ideal ve ekonomik se\u00e7enektir diyebiliriz.<\/p>\n<p>Velhas\u0131l, yap\u0131lan bu \u00e7al\u0131\u015fman\u0131n deploy edilebilmesi i\u00e7in <code style=\"color: purple;\">cdk deploy<\/code> talimat\u0131n\u0131n verilmesi gerekmektedir.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-13.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-13.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"853\" height=\"375\" class=\"aligncenter size-full wp-image-27289\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-13.png 853w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-13-300x132.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/10\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-13-768x338.png 768w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/a>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere kontrol edildi\u011fi taktirde DynamoDB tablomuz olu\u015fturulmu\u015f vaziyettedir.<\/p>\n<h5>C# Kullanarak Bir AWS Lambda&#8217;y\u0131 Deploy Etme<\/h5>\n<p>Ee hadi gelin son olarak da CDK \u00fczerinden AWS Lambda&#8217;n\u0131n da deploy edilmesini inceleyerek i\u00e7eri\u011fimizi nihayete erdirelim. Tabi dikkat ederseniz olu\u015fturulmas\u0131 de\u011fil deploy edilmesi diyorum. \u00c7\u00fcnk\u00fc CDK \u00fczerinden bir lambda&#8217;n\u0131n olu\u015fturulmas\u0131 ve i\u015f mant\u0131\u011f\u0131n\u0131n \u00fcretilmesi teknik olarak pek m\u00fcmk\u00fcn de\u011fildir. O y\u00fczden \u00f6ncelikle bizim lambda&#8217;y\u0131 bildi\u011fimiz y\u00f6ntemlerle olu\u015fturmam\u0131z<span style=\"font-size:12px;\">(bknz: <a href=\"https:\/\/www.gencayyildiz.com\/blog\/net-7-aws-lambda-ile-serverless-computing\/\" rel=\"noopener\" target=\"_blank\">.NET 7 \u2013 AWS Lambda \u0130le Serverless Computing<\/a>)<\/span> ard\u0131ndan da bunu CDK ile deploy etmemiz gerekmektedir.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"469\" height=\"503\" class=\"aligncenter size-full wp-image-27292\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim.png 469w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-280x300.png 280w\" sizes=\"auto, (max-width: 469px) 100vw, 469px\" \/><\/a>Bunun i\u00e7in yukar\u0131da g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere empty t\u00fcr\u00fcnden h\u0131zl\u0131ca bir lambda olu\u015fturabilir ve \u00fczerinde herhangi bir de\u011fi\u015fiklik yapmaks\u0131z\u0131n a\u015fa\u011f\u0131daki talimat neticesinde bu lambda&#8217;n\u0131n CDK \u00fczerinden deploy edilebilmesi i\u00e7in s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f versiyonunu elde edebiliriz.<\/p>\n<div style=\"text-align: center;\"><code style=\"color: purple;\">dotnet lambda package --configuration release --framework net6.0 --output-package releases\/example-lambda.zip<\/code><\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1895\" height=\"480\" class=\"aligncenter size-full wp-image-27293\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1.png 1895w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1-300x76.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1-1024x259.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1-768x195.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-1-1536x389.png 1536w\" sizes=\"auto, (max-width: 1895px) 100vw, 1895px\" \/><\/a>Bu i\u015flem neticesinde ilgili lambda&#8217;n\u0131n .zip uzant\u0131l\u0131 dosyas\u0131 a\u015fa\u011f\u0131daki g\u00f6rselde oldu\u011fu gibi &#8216;releases&#8217; klas\u00f6r\u00fc i\u00e7erisinde elde edilmi\u015f olunacakt\u0131r.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"989\" height=\"156\" class=\"aligncenter size-full wp-image-27294\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2.png 989w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2-300x47.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2-768x121.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-2-980x156.png 980w\" sizes=\"auto, (max-width: 989px) 100vw, 989px\" \/><\/a>\u015eimdi bu lambda&#8217;y\u0131 CDK ile deploy edebilmek i\u00e7in a\u015fa\u011f\u0131daki gibi tan\u0131m\u0131n\u0131 ger\u00e7ekle\u015ftirelim;<\/p>\n<div style=\"font-size: 12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Amazon.CDK;\r\nusing Amazon.CDK.AWS.DynamoDB;\r\nusing Amazon.CDK.AWS.Lambda;\r\nusing Amazon.CDK.AWS.S3;\r\nusing Constructs;\r\n\r\nnamespace CdkDotnetDevelopers\r\n{\r\n    public class CdkDotnetDevelopersStack : Stack\r\n    {\r\n        internal CdkDotnetDevelopersStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\r\n        {\r\n            #region Bucket - S3\r\n            .\r\n            .\r\n            .\r\n            #endregion\r\n\r\n            #region Table - DynamoDB\r\n            .\r\n            .\r\n            .\r\n            #endregion\r\n\r\n            #region Lambda\r\n            var lambdaFunction = new Function(this, &quot;example-function&quot;, new FunctionProps\r\n            {\r\n                Runtime = Runtime.DOTNET_6,\r\n                Code = Code.FromAsset(&quot;.\/src\/CdkDotnetDevelopers\/releases\/example-lambda.zip&quot;),\r\n                Handler = &quot;Example.Lambda.Project::Example.Lambda.Project.Function::FunctionHandler&quot;\r\n            });\r\n            #endregion\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div>\n<p>ve <code style=\"color: purple;\">cdk deploy<\/code> talimat\u0131n\u0131 vererek AWS&#8217;ye deploy edelim.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1426\" height=\"728\" class=\"aligncenter size-full wp-image-27296\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3.png 1426w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3-300x153.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3-1024x523.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-3-768x392.png 768w\" sizes=\"auto, (max-width: 1426px) 100vw, 1426px\" \/><\/a>Deploy neticesinde lambda servisini kontrol etti\u011fimizde a\u015fa\u011f\u0131daki gibi neticeyle kar\u015f\u0131la\u015f\u0131lacakt\u0131r;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-4.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"922\" height=\"346\" class=\"aligncenter size-full wp-image-27297\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-4.png 922w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-4-300x113.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-4-768x288.png 768w\" sizes=\"auto, (max-width: 922px) 100vw, 922px\" \/><\/a>\u0130\u015fte bu kadar!<\/p>\n<h5>AWS Resource&#8217;lerini Destroy Etmek<\/h5>\n<p>\u015eu ana kadar olu\u015fturdu\u011fumuz AWS resource&#8217;lar\u0131n\u0131n yaratabilece\u011fi olas\u0131 ek maliyetlerden s\u00fcreci t\u00f6rp\u00fcleyebilmek i\u00e7in t\u00fcm stack&#8217;i destroy etmemiz gerekecektir. Bunun i\u00e7in<br \/>\n<code style=\"color: purple;\">cdk destroy<\/code> talimat\u0131n\u0131n verilmesi yeterlidir.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5.png\" alt=\"AWS Cloud Development Kit(AWS CDK)&#039;i C# \u0130le \u0130nceleyelim\" width=\"1422\" height=\"301\" class=\"aligncenter size-full wp-image-27299\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5.png 1422w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5-300x64.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5-1024x217.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2024\/11\/AWS-Cloud-Development-KitAWS-CDKi-C-Ile-Inceleyelim-5-768x163.png 768w\" sizes=\"auto, (max-width: 1422px) 100vw, 1422px\" \/><\/a>Evet, bu talimat ilgili stack&#8217;le ili\u015fkili t\u00fcm resource&#8217;lar\u0131 silecektir. Olduk\u00e7a basit de\u011fil mi?<\/p>\n<h4>AWS Servislerine Kar\u015f\u0131l\u0131k Gelen CDK S\u0131n\u0131flar\u0131 Listesi<\/h4>\n<p>Yaz\u0131 boyunca AWS CDK&#8217;n\u0131n \u00e7e\u015fitli AWS servislerini temsil eden s\u0131n\u0131flar i\u00e7erdi\u011fi malum&#8230; \u015eimdi gelin olas\u0131 ihtiya\u00e7lara kar\u015f\u0131n hangi servise hangi s\u0131n\u0131f\u0131n kar\u015f\u0131l\u0131k geldi\u011fini yazarak genel bir liste ortaya koyal\u0131m;<\/p>\n<ol style=\"font-size:13px;\">\n<li><strong>Depolama Servisleri<\/strong>\n<ul>\n<li><em>S3 (Simple Storage Service) :<\/em> <code>Bucket<\/code><\/li>\n<li><em>EBS (Elastic Block Store) :<\/em> <code>CfnVolume<\/code>, <code>CfnSnapshot<\/code><\/li>\n<li><em>EFS (Elastic File System) :<\/em> <code>FileSystem<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>Hesaplama Servisleri<\/strong>\n<ul>\n<li><em>EC2 (Elastic Compute Cloud) :<\/em> <code>Instance<\/code>, <code>Vpc<\/code>, <code>SecurityGroup<\/code>, <code>KeyPair<\/code>, <code>CfnVolume<\/code><\/li>\n<li><em>ECS (Elastic Container Service) :<\/em> <code>Cluster<\/code>, <code>TaskDefinition<\/code>, <code>Service<\/code><\/li>\n<li><em>EKS (Elastic Kubernetes Service) :<\/em> <code>Cluster<\/code><\/li>\n<li><em>Lambda :<\/em> <code>Function<\/code><\/li>\n<li><em>Batch :<\/em> <code>JobQueue<\/code>, <code>ComputeEnvironment<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>Veritaban\u0131 Servisleri<\/strong>\n<ul>\n<li><em>RDS (Relational Database Service) :<\/em> <code>DatabaseInstance<\/code>, <code>DatabaseCluster<\/code><\/li>\n<li><em>DynamoDB :<\/em> <code>Table<\/code><\/li>\n<li><em>ElastiCache :<\/em> <code>CacheCluster<\/code><\/li>\n<li><em>Neptune :<\/em> <code>DatabaseCluster<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>A\u011f ve \u0130\u00e7erik Teslimi<\/strong>\n<ul>\n<li><em>VPC (Virtual Private Cloud) :<\/em> <code>Vpc<\/code>, <code>Subnet<\/code>, <code>InternetGateway<\/code>, <code>NatGateway<\/code>, <code>RouteTable<\/code><\/li>\n<li><em>CloudFront :<\/em> <code>Distribution<\/code><\/li>\n<li><em>Route 53 :<\/em> <code>HostedZone<\/code>, <code>RecordSet<\/code><\/li>\n<li><em>API Gateway :<\/em> <code>RestApi<\/code>, <code>HttpApi<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>G\u00fcvenlik ve Kimlik Y\u00f6netimi<\/strong>\n<ul>\n<li><em>IAM (Identity and Access Management) :<\/em> <code>Role<\/code>, <code>User<\/code>, <code>Policy<\/code>, <code>Group<\/code><\/li>\n<li><em>KMS (Key Management Service) :<\/em> <code>Key<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>Mesajla\u015fma Servisi<\/strong>\n<ul>\n<li><em>SNS (Simple Notification Service) :<\/em> <code>Topic<\/code><\/li>\n<li><em>SQS (Simple Queue Service) :<\/em> <code>Queue<\/code><\/li>\n<li><em>EventBridge :<\/em> <code>Rule<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>Analitik ve Makine \u00d6\u011frenimi<\/strong>\n<ul>\n<li><em>Kinesis :<\/em> <code>Stream<\/code><\/li>\n<li><em>Glue :<\/em> <code>Crawler<\/code>, <code>Database<\/code>, <code>Job<\/code><\/li>\n<li><em>Redshift :<\/em> <code>Cluster<\/code><\/li>\n<li><em>SageMaker :<\/em> <code>NotebookInstance<\/code>, <code>Model<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>Y\u00f6netim ve G\u00f6zetim<\/strong>\n<ul>\n<li><em>CloudWatch :<\/em> <code>LogGroup<\/code>, <code>Alarm<\/code>, <code>Metric<\/code><\/li>\n<li><em>CloudTrail :<\/em> <code>Trail<\/code><\/li>\n<li><em>Config :<\/em> <code>ConfigurationRecorder<\/code>, <code>DeliveryChannel<\/code><\/li>\n<li><em>Systems Manager (SSM) :<\/em> <code>Parameter<\/code>, <code>Document<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>Da\u011f\u0131t\u0131m ve Geli\u015ftirme Ara\u00e7lar\u0131<\/strong>\n<ul>\n<li><em>CodeCommit :<\/em> <code>Repository<\/code><\/li>\n<li><em>CodePipeline :<\/em> <code>Pipeline<\/code><\/li>\n<li><em>CodeBuild :<\/em> <code>Project<\/code><\/li>\n<li><em>CodeDeploy :<\/em> <code>Application<\/code>, <code>DeploymentGroup<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong> Di\u011fer Servisler<\/strong>\n<ul>\n<li><em>Elastic Beanstalk :<\/em> <code>CfnApplication<\/code>, <code>CfnEnvironment<\/code><\/li>\n<li><em>Step Functions :<\/em> <code>StateMachine<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Her bir hizmet i\u00e7in bu s\u0131n\u0131flar sayesinde AWS altyap\u0131s\u0131n\u0131 kod yazarak kolayca y\u00f6netebilir ve \u00f6zelle\u015ftirebilirsiniz. <\/p>\n<p>Nihai olarak;<br \/>\nB\u00f6ylece .NET Developer&#8217;lar i\u00e7in AWS CDK ile ilgili genel \u00e7er\u00e7evede incelemede bulunmu\u015f ve k\u0131smi \u00f6rneklerle de temel yap\u0131lanmay\u0131 detayland\u0131rarak pratiksel ele alm\u0131\u015f oluyoruz.<\/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.CDK.Example\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/gncyyldz\/AWS.CDK.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, geli\u015ftiricilerin AWS kaynaklar\u0131n\u0131 programlama dilleriyle tan\u0131mlayarak y\u00f6netmelerine olanak tan\u0131yan bir yaz\u0131l\u0131m geli\u015ftirme paketi olan AWS Cloud Development Kit(AWS CDK)&#8216;i inceleyece\u011fiz. Tabi her \u015feyden \u00f6nce bu paketi bizlere sunan davran\u0131\u015f\u0131n temelleri olan&#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":27301,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4730],"tags":[4731,5163,5170,5162,5164,5167,5169,5166,5165,5168],"class_list":["post-27259","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","tag-aws","tag-aws-cdk","tag-aws-cdk-cli","tag-aws-cloud-development-kit","tag-cloudformation","tag-iac","tag-iac-nedir","tag-infrastructure-as-code","tag-infrastructure-as-code-iac","tag-infrastructure-as-code-nedir"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27259","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=27259"}],"version-history":[{"count":19,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27259\/revisions"}],"predecessor-version":[{"id":27303,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27259\/revisions\/27303"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/27301"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=27259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=27259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=27259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}