{"id":34299,"date":"2025-11-14T22:31:21","date_gmt":"2025-11-14T19:31:21","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/"},"modified":"2025-11-14T22:31:21","modified_gmt":"2025-11-14T19:31:21","slug":"capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/","title":{"rendered":"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi"},"content":{"rendered":"<style>\n    \/* Temel stil tan\u0131mlamalar\u0131 *\/\n    body {\n        font-family: Arial, sans-serif;\n        line-height: 1.6;\n        margin: 0 auto;\n        padding: 20px;\n        max-width: 1000px;\n        color: #333;\n    }\n    h2 {\n        color: #2c3e50;\n        border-bottom: 2px solid #3498db;\n        padding-bottom: 10px;\n        margin-top: 40px;\n    }\n    h3 {\n        color: #34495e;\n        margin-top: 30px;\n    }\n    p {\n        margin-bottom: 15px;\n    }\n    code {\n        background-color: #f4f4f4;\n        padding: 2px 4px;\n        border-radius: 4px;\n        font-family: 'Courier New', monospace;\n    }\n    pre {\n        background-color: #ecf0f1;\n        border: 1px solid #ddd;\n        padding: 15px;\n        border-radius: 5px;\n        overflow-x: auto;\n        margin-bottom: 20px;\n    }\n    ul, ol {\n        margin-bottom: 15px;\n        margin-left: 20px;\n    }\n    li {\n        margin-bottom: 5px;\n    }\n    table {\n        width: 100%;\n        border-collapse: collapse;\n        margin-bottom: 20px;\n    }\n    table, th, td {\n        border: 1px solid #ddd;\n    }\n    th, td {\n        padding: 10px;\n        text-align: left;\n    }\n    th {\n        background-color: #f8f8f8;\n    }\n    .expert-tip {\n        background-color: #e8f5e9; \/* Light green *\/\n        border-left: 5px solid #4CAF50; \/* Green *\/\n        padding: 15px;\n        margin: 20px 0;\n        border-radius: 5px;\n        font-style: italic;\n    }<\/p>\n<p>    \/* Mobil uyumluluk i\u00e7in medya sorgular\u0131 *\/\n    @media (max-width: 768px) {\n        body {\n            padding: 15px;\n        }\n        h2 {\n            font-size: 1.8em;\n        }\n        h3 {\n            font-size: 1.3em;\n        }\n        pre {\n            white-space: pre-wrap; \/* Uzun kod sat\u0131rlar\u0131n\u0131 sarar *\/\n            word-wrap: break-word;\n        }\n        table, thead, tbody, th, td, tr {\n            display: block;\n        }\n        thead tr {\n            position: absolute;\n            top: -9999px;\n            left: -9999px;\n        }\n        tr { border: 1px solid #ccc; }\n        td {\n            border: none;\n            border-bottom: 1px solid #eee;\n            position: relative;\n            padding-left: 50%;\n            text-align: right;\n        }\n        td:before {\n            position: absolute;\n            top: 6px;\n            left: 6px;\n            width: 45%;\n            padding-right: 10px;\n            white-space: nowrap;\n            text-align: left;\n            font-weight: bold;\n        }\n        \/* \u00d6rnek tablo ba\u015fl\u0131klar\u0131 i\u00e7in: *\/\n        td:nth-of-type(1):before { content: \"Kaynak\"; }\n        td:nth-of-type(2):before { content: \"Hedef\"; }\n        td:nth-of-type(3):before { content: \"A\u00e7\u0131klama\"; }\n    }\n<\/style>\n<p><body><\/p>\n<p>Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir s\u00fcre\u00e7 haline gelebilir. Peki, bir geli\u015ftirme hesab\u0131ndaki S3 paketine y\u00fcklenen bir dosyan\u0131n, \u00fcretim hesab\u0131ndaki CodePipeline&#8217;\u0131 otomatik olarak nas\u0131l ba\u015flataca\u011f\u0131n\u0131 hi\u00e7 merak ettiniz mi?<\/p>\n<p>Bu kapsaml\u0131 rehberde, \u00e7apraz hesap (cross-account) S3 y\u00fcklemesi olay\u0131n\u0131 kullanarak AWS CodePipeline&#8217;\u0131 EventBridge ve IAM Rolleri arac\u0131l\u0131\u011f\u0131yla nas\u0131l tetikleyece\u011finizi ad\u0131m ad\u0131m \u00f6\u011frenece\u011fiz. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli kurulu\u015flar ve \u00e7oklu hesap stratejisi uygulayan ekipler i\u00e7in hayati \u00f6nem ta\u015f\u0131yan bu otomasyon, geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi h\u0131zland\u0131r\u0131rken g\u00fcvenlik standartlar\u0131n\u0131z\u0131 da y\u00fckseltmenize yard\u0131mc\u0131 olacakt\u0131r. Bu makale, konuya yeni ba\u015flayanlardan deneyimli DevOps m\u00fchendislerine kadar herkesin faydalanabilece\u011fi detayl\u0131 bilgiler ve pratik \u00f6rnekler sunmaktad\u0131r.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn bulut tabanl\u0131 mimarilerinde, kurulu\u015flar genellikle farkl\u0131 i\u015f y\u00fckleri, ortamlar veya g\u00fcvenlik seviyeleri i\u00e7in birden fazla AWS hesab\u0131 kullan\u0131r. Bu &#8220;\u00e7oklu hesap stratejisi&#8221;, kaynak izolasyonu, maliyet y\u00f6netimi, g\u00fcvenlik ve operasyonel verimlilik gibi bir\u00e7ok avantaj sunar. \u00d6rne\u011fin, bir yaz\u0131l\u0131m geli\u015ftirme ekibinin bir Geli\u015ftirme (Dev) hesab\u0131, bir Test hesab\u0131 ve bir \u00dcretim (Prod) hesab\u0131 bulunabilir. Her hesab\u0131n kendi S3 paketleri, EC2 \u00f6rnekleri ve di\u011fer AWS hizmetleri olabilir. Ancak, bu izolasyon beraberinde baz\u0131 entegrasyon zorluklar\u0131 da getirir.<\/p>\n<p>Bir geli\u015ftirme hesab\u0131nda test edilen ve onaylanan bir uygulaman\u0131n veya yap\u0131land\u0131rma dosyas\u0131n\u0131n, \u00fcretim ortam\u0131na otomatik olarak da\u011f\u0131t\u0131lmas\u0131 gerekti\u011finde, \u00e7apraz hesap entegrasyonu ka\u00e7\u0131n\u0131lmaz hale gelir. \u0130\u015fte bu noktada, geli\u015ftirme hesab\u0131ndaki bir S3 paketine yap\u0131lan bir y\u00fcklemenin, \u00fcretim hesab\u0131ndaki CodePipeline&#8217;\u0131 tetiklemesi senaryosu devreye girer. Bu t\u00fcr bir otomasyon, manuel ad\u0131mlar\u0131 ortadan kald\u0131rarak insan hatas\u0131 riskini azalt\u0131r, da\u011f\u0131t\u0131m s\u00fcrelerini k\u0131salt\u0131r ve s\u00fcrekli entegrasyon\/s\u00fcrekli teslimat (CI\/CD) s\u00fcre\u00e7lerini daha verimli hale getirir.<\/p>\n<p>Bir ba\u015fka ger\u00e7ek d\u00fcnya senaryosu ise, farkl\u0131 i\u015f birimlerinin veya ekiplerin kendi AWS hesaplar\u0131n\u0131 y\u00f6netti\u011fi b\u00fcy\u00fck bir kurumu ele alabiliriz. \u00d6rne\u011fin, pazarlama departman\u0131 web sitesi i\u00e7eri\u011fini kendi S3 paketine y\u00fcklerken, operasyon departman\u0131 bu i\u00e7eri\u011fi otomatik olarak CDN&#8217;e da\u011f\u0131tmak veya farkl\u0131 bir b\u00f6lgeye senkronize etmek isteyebilir. Bu durumda, pazarlama hesab\u0131ndaki S3 olaylar\u0131n\u0131n, operasyon hesab\u0131ndaki bir CodePipeline&#8217;\u0131 tetiklemesi, iki farkl\u0131 departman\u0131n i\u015f ak\u0131\u015flar\u0131n\u0131 sorunsuz bir \u015fekilde birle\u015ftirmeyi sa\u011flar. Benzer \u015fekilde, bir yaz\u0131l\u0131m tedarik\u00e7isi, m\u00fc\u015fterilerinin AWS hesaplar\u0131na g\u00fcvenli bir \u015fekilde g\u00fcncellemeler da\u011f\u0131tmak i\u00e7in bu modeli kullanabilir. Kaynak hesab\u0131n (tedarik\u00e7i) S3 paketine yeni bir yaz\u0131l\u0131m paketi y\u00fcklendi\u011finde, hedef hesaplardaki (m\u00fc\u015fteriler) CodePipeline&#8217;lar tetiklenebilir ve g\u00fcncellemeler otomatik olarak da\u011f\u0131t\u0131labilir.<\/p>\n<p>\u00c7apraz hesap entegrasyonunun temel faydalar\u0131 aras\u0131nda \u015funlar say\u0131labilir:<\/p>\n<ul>\n<li><strong>G\u00fcvenlik \u0130zolasyonu:<\/strong> \u00dcretim ortamlar\u0131n\u0131n geli\u015ftirme ve test ortamlar\u0131ndan tamamen ayr\u0131lmas\u0131n\u0131 sa\u011flar, b\u00f6ylece bir hesapta ya\u015fanan g\u00fcvenlik ihlali di\u011ferini etkilemez.<\/li>\n<li><strong>Kaynak ve Maliyet Y\u00f6netimi:<\/strong> Her hesab\u0131n kaynaklar\u0131 ve maliyetleri ayr\u0131 ayr\u0131 y\u00f6netilebilir.<\/li>\n<li><strong>Otomasyon ve H\u0131z:<\/strong> Manuel m\u00fcdahaleyi azaltarak da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini otomatikle\u015ftirir ve h\u0131zland\u0131r\u0131r. Bu durum, \u00f6zellikle s\u0131k g\u00fcncellemeler yap\u0131lan ortamlarda b\u00fcy\u00fck bir avantajd\u0131r.<\/li>\n<li><strong>Y\u00f6neti\u015fim ve Uyumluluk:<\/strong> Farkl\u0131 ortamlara farkl\u0131 g\u00fcvenlik ve uyumluluk politikalar\u0131 uygulanmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<p>Dolay\u0131s\u0131yla, \u00e7apraz hesap S3 y\u00fcklemesiyle CodePipeline tetikleme, modern DevOps pratiklerinin ve kurumsal bulut mimarilerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Bu sayede, karma\u015f\u0131k da\u011f\u0131t\u0131m senaryolar\u0131n\u0131 basit ve g\u00fcvenli bir \u015fekilde otomatize edebilir, ekipler aras\u0131 i\u015f birli\u011fini art\u0131rabilir ve genel operasyonel verimlili\u011fi y\u00fckseltebilirsiniz.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: \u00c7oklu hesap mimarisi sadece g\u00fcvenlik ve maliyet i\u00e7in de\u011fil, ayn\u0131 zamanda servis limitlerinden daha verimli faydalanmak ve farkl\u0131 b\u00f6lgelerdeki kaynaklar\u0131 y\u00f6netmek i\u00e7in de kritik \u00f6neme sahiptir. CodePipeline gibi CI\/CD ara\u00e7lar\u0131 i\u00e7in kaynak hesab\u0131n\u0131zda bir &#8216;artifact&#8217; S3 bucket&#8217;\u0131, hedef hesaplar\u0131n\u0131zda ise &#8216;deployment&#8217; S3 bucket&#8217;lar\u0131 bulundurmak i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 sadele\u015ftirecektir.\n    <\/div>\n<h2>Temel AWS Bile\u015fenleri Nelerdir? CodePipeline, EventBridge ve IAM Rolleri<\/h2>\n<p>Bu \u00e7apraz hesap tetikleme senaryosunu anlamak ve ba\u015far\u0131l\u0131 bir \u015fekilde uygulamak i\u00e7in, birka\u00e7 temel AWS hizmetinin rol\u00fcn\u00fc ve i\u015fleyi\u015fini bilmek \u00f6nemlidir. \u00d6ncelikle, ana oyuncular\u0131m\u0131z olan AWS CodePipeline, Amazon S3, Amazon EventBridge ve AWS Identity and Access Management (IAM) hakk\u0131nda k\u0131sa bir genel bak\u0131\u015f sunal\u0131m.<\/p>\n<h3>AWS CodePipeline Nedir?<\/h3>\n<p>AWS CodePipeline, yaz\u0131l\u0131m yay\u0131nlama s\u00fcrecinizi modelleyen, g\u00f6rselle\u015ftiren ve otomatikle\u015ftiren tamamen y\u00f6netilen bir s\u00fcrekli teslimat (CD) hizmetidir. Geli\u015ftiricilerin kod de\u011fi\u015fikliklerini her onayland\u0131\u011f\u0131nda yay\u0131nlamas\u0131na yard\u0131mc\u0131 olur. CodePipeline, uygulaman\u0131z\u0131 h\u0131zl\u0131 ve g\u00fcvenilir bir \u015fekilde teslim etmenize olanak tan\u0131yan bir dizi olu\u015fturma, test etme ve da\u011f\u0131t\u0131m a\u015famas\u0131ndan ge\u00e7er. Bir kod de\u011fi\u015fikli\u011fi alg\u0131land\u0131\u011f\u0131nda (\u00f6rne\u011fin bir S3 y\u00fcklemesi), CodePipeline otomatik olarak tetiklenir ve tan\u0131mlanm\u0131\u015f t\u00fcm ad\u0131mlar\u0131 s\u0131ras\u0131yla y\u00fcr\u00fct\u00fcr. Bu ad\u0131mlar aras\u0131nda kodun derlenmesi, testlerin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131, Docker imajlar\u0131n\u0131n olu\u015fturulmas\u0131 ve nihayetinde bir \u00fcretim ortam\u0131na da\u011f\u0131t\u0131m yapmak gibi s\u00fcre\u00e7ler yer alabilir.<\/p>\n<h3>Amazon S3 (Simple Storage Service) ve Olay Bildirimleri<\/h3>\n<p>Amazon S3, \u00f6l\u00e7eklenebilir, y\u00fcksek oranda kullan\u0131labilir, g\u00fcvenli ve dayan\u0131kl\u0131 bir bulut depolama hizmetidir. Nesneleri (dosyalar\u0131) depolamak i\u00e7in kullan\u0131l\u0131r. Bu senaryoda S3, CodePipeline&#8217;\u0131 tetikleyecek dosyalar\u0131n (\u00f6rne\u011fin, uygulama kod paketleri, yap\u0131land\u0131rma dosyalar\u0131, deployment scriptleri) y\u00fcklendi\u011fi kaynak g\u00f6revi g\u00f6r\u00fcr. S3&#8217;\u00fcn \u00f6nemli bir \u00f6zelli\u011fi, paketlerdeki olaylar (\u00f6rne\u011fin, yeni bir nesnenin olu\u015fturulmas\u0131, mevcut bir nesnenin silinmesi) hakk\u0131nda bildirim g\u00f6nderebilmesidir. Bu bildirimler do\u011frudan SNS, SQS veya Lambda&#8217;ya g\u00f6nderilebildi\u011fi gibi, daha esnek entegrasyonlar i\u00e7in EventBridge&#8217;e de g\u00f6nderilebilir.<\/p>\n<h3>Amazon EventBridge Nedir?<\/h3>\n<p>Amazon EventBridge, AWS hizmetlerinden, SaaS uygulamalar\u0131ndan ve kendi \u00f6zel uygulamalar\u0131n\u0131zdan ger\u00e7ek zamanl\u0131 veri ak\u0131\u015flar\u0131n\u0131 kolayla\u015ft\u0131ran sunucusuz bir olay veri yolu hizmetidir. EventBridge, olaylar\u0131 al\u0131p bunlar\u0131 hedef hizmetlere (Lambda fonksiyonlar\u0131, SQS kuyruklar\u0131, SNS konular\u0131, ba\u015fka EventBridge veri yollar\u0131 ve hatta CodePipeline gibi) y\u00f6nlendiren kurallar\u0131 tan\u0131mlaman\u0131za olanak tan\u0131r. Entegrasyon senaryomuzda EventBridge, S3 paketindeki bir dosya y\u00fckleme olay\u0131n\u0131 alacak ve bu olay\u0131 \u00e7apraz hesap olarak hedef EventBridge veri yoluna iletmek i\u00e7in bir k\u00f6pr\u00fc g\u00f6revi g\u00f6recektir. Bu sayede olaylar\u0131n ak\u0131\u015f\u0131 merkezi ve g\u00fcvenli bir \u015fekilde y\u00f6netilmi\u015f olur.<\/p>\n<h3>AWS Identity and Access Management (IAM) ve Rollerin \u00d6nemi<\/h3>\n<p>AWS IAM, AWS kaynaklar\u0131n\u0131za eri\u015fimi g\u00fcvenli bir \u015fekilde y\u00f6netmenizi sa\u011flar. Bu, kimlerin kimli\u011fini do\u011frulayabilece\u011fini (authentication) ve hangi kaynaklara hangi izinlerle eri\u015febilece\u011fini (authorization) kontrol etmenizi i\u00e7erir. \u00c7apraz hesap entegrasyonlar\u0131nda IAM Rolleri kritik bir \u00f6neme sahiptir. Bir IAM Rol\u00fc, belirli bir g\u00f6rev i\u00e7in ge\u00e7ici izinler sa\u011flayan bir AWS kimli\u011fidir. Rolleri, kullan\u0131c\u0131lar, uygulamalar veya AWS hizmetleri \u00fcstlenebilir. Bizim senaryomuzda:<\/p>\n<ul>\n<li>Kaynak hesaptaki EventBridge&#8217;in olay\u0131 hedef hesaba g\u00f6nderebilmesi i\u00e7in bir IAM Rol\u00fc ve izinler gerekecektir.<\/li>\n<li>Hedef hesaptaki EventBridge veri yolunun (event bus) bu olay\u0131 kabul edebilmesi i\u00e7in bir kaynak politikas\u0131 (resource policy) tan\u0131mlanmas\u0131 gerekecektir.<\/li>\n<li>Hedef hesaptaki CodePipeline&#8217;\u0131n tetiklenebilmesi i\u00e7in EventBridge taraf\u0131ndan \u00fcstlenilebilecek bir IAM Rol\u00fc ve gerekli CodePipeline tetikleme izinleri gerekecektir.<\/li>\n<\/ul>\n<p>IAM Rolleri sayesinde, iki farkl\u0131 hesap aras\u0131nda do\u011frudan bir kullan\u0131c\u0131 veya anahtar payla\u015f\u0131m\u0131 yapmak yerine, g\u00fcvenli ve yetkilendirilmi\u015f bir etkile\u015fim modeli olu\u015fturulur. Bu, en az ayr\u0131cal\u0131k (least privilege) prensibini uygulaman\u0131z\u0131 ve g\u00fcvenlik duru\u015funuzu g\u00fc\u00e7lendirmenizi sa\u011flar. IAM, bu karma\u015f\u0131k \u00e7apraz hesap yetkilendirme ak\u0131\u015f\u0131n\u0131n bel kemi\u011fini olu\u015fturur ve do\u011fru yap\u0131land\u0131rma, t\u00fcm sistemin g\u00fcvenli\u011fi ve i\u015flevselli\u011fi i\u00e7in hayati \u00f6nem ta\u015f\u0131r. Bu bile\u015fenlerin uyumlu bir \u015fekilde \u00e7al\u0131\u015fmas\u0131yla, S3&#8217;teki basit bir dosya y\u00fcklemesi, karma\u015f\u0131k bir CodePipeline s\u00fcrecini farkl\u0131 bir AWS hesab\u0131nda g\u00fcvenli bir \u015fekilde tetikleyebilir.<\/p>\n<h2>\u00c7apraz Hesap Tetikleme Mimarisi Nas\u0131l \u0130\u015fler? EventBridge + IAM Rolleri<\/h2>\n<p>\u00c7apraz hesap tetikleme mimarisi, olay\u0131n \u00e7\u0131kt\u0131\u011f\u0131 kaynaktan hedefe ula\u015fana kadar izledi\u011fi yol ve bu yoldaki yetkilendirme mekanizmalar\u0131 \u00fczerine kuruludur. Temelde iki ana AWS hesab\u0131m\u0131z var: olay\u0131 ba\u015flatan &#8220;Kaynak Hesap&#8221; ve olay\u0131 al\u0131p CodePipeline&#8217;\u0131 tetikleyen &#8220;Hedef Hesap&#8221;. Bu mimarinin kalbinde Amazon EventBridge ve AWS IAM Rolleri yatar. \u015eimdi bu ak\u0131\u015f\u0131 ve bile\u015fenlerin nas\u0131l etkile\u015fimde bulundu\u011funu ad\u0131m ad\u0131m inceleyelim.<\/p>\n<h3>Olay Ak\u0131\u015f\u0131 ve Mekanizmas\u0131<\/h3>\n<ol>\n<li><strong>S3 Olay Bildirimi (Kaynak Hesap):<\/strong>\n<p>S\u00fcrecimiz, Kaynak Hesap&#8217;taki bir S3 paketine (\u00f6rne\u011fin, <code>my-source-artifact-bucket<\/code>) yeni bir nesne y\u00fcklendi\u011finde ba\u015flar. S3 paketi, bu t\u00fcr olaylar\u0131 (<code>s3:ObjectCreated:*<\/code>) EventBridge&#8217;e g\u00f6ndermek \u00fczere yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Bu, S3&#8217;\u00fcn yerel bir EventBridge veri yoluna (default event bus) olay g\u00f6ndermesini sa\u011flar.<\/p>\n<\/li>\n<li><strong>EventBridge Kural\u0131 (Kaynak Hesap):<\/strong>\n<p>Kaynak Hesap&#8217;taki EventBridge varsay\u0131lan veri yoluna (default event bus) gelen S3 olaylar\u0131n\u0131 dinleyen bir kural tan\u0131mlan\u0131r. Bu kural, belirli bir S3 paketinden gelen ve \u00f6nceden belirlenmi\u015f bir desene uyan olaylar\u0131 (\u00f6rne\u011fin, sadece <code>.zip<\/code> uzant\u0131l\u0131 dosyalar\u0131n y\u00fcklenmesi) yakalar. Kural\u0131n hedefi, bu olay\u0131 Hedef Hesap&#8217;taki \u00f6zel bir EventBridge veri yoluna g\u00f6ndermektir. Bu \u00e7apraz hesap g\u00f6nderimi i\u00e7in, kural\u0131n hedeflerinden biri olarak Hedef Hesap&#8217;\u0131n AWS Hesap Kimli\u011fi belirtilir.<\/p>\n<\/li>\n<li><strong>IAM Yetkilendirmesi (Kaynak Hesap):<\/strong>\n<p>Kaynak Hesap&#8217;taki EventBridge kural\u0131n\u0131n olay\u0131 Hedef Hesap&#8217;a g\u00f6nderebilmesi i\u00e7in, EventBridge&#8217;in bu i\u015flemi yapmas\u0131na izin veren bir IAM Rol\u00fc (\u00f6rne\u011fin, <code>EventBridgeCrossAccountSenderRole<\/code>) \u00fcstlenmesi gerekir. Bu rol, <code>events:PutEvents<\/code> eylemini Hedef Hesap&#8217;taki belirli bir EventBridge veri yoluna (veya t\u00fcm veri yollar\u0131na) kar\u015f\u0131 ger\u00e7ekle\u015ftirmesine izin veren bir ilkeye (policy) sahip olmal\u0131d\u0131r. Ayr\u0131ca, bu rol\u00fcn g\u00fcven ili\u015fkisi (trust policy), EventBridge hizmetinin (<code>events.amazonaws.com<\/code>) bu rol\u00fc \u00fcstlenmesine izin vermelidir.<\/p>\n<\/li>\n<li><strong>EventBridge Kaynak Politikas\u0131 (Hedef Hesap):<\/strong>\n<p>Hedef Hesap&#8217;taki EventBridge varsay\u0131lan veri yolu (default event bus), Kaynak Hesap&#8217;tan gelen olaylar\u0131 kabul etmesi i\u00e7in bir kaynak politikas\u0131na (resource policy) sahip olmal\u0131d\u0131r. Bu politika, Kaynak Hesap&#8217;tan belirli bir prensibe (\u00f6rne\u011fin, <code>arn:aws:iam::SOURCE_ACCOUNT_ID:role\/EventBridgeCrossAccountSenderRole<\/code>) sahip olan olaylar\u0131n al\u0131nmas\u0131na izin verir. Bu ad\u0131m, olaylar\u0131n hedef veri yoluna g\u00fcvenli bir \u015fekilde ula\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<\/li>\n<li><strong>EventBridge Kural\u0131 (Hedef Hesap):<\/strong>\n<p>Hedef Hesap&#8217;taki EventBridge varsay\u0131lan veri yoluna gelen olaylar\u0131 dinleyen ba\u015fka bir kural tan\u0131mlan\u0131r. Bu kural, Kaynak Hesap&#8217;tan gelen S3 olaylar\u0131n\u0131 filtreler (\u00f6rne\u011fin, olay kayna\u011f\u0131 ve detay\u0131 \u00fczerinde e\u015fle\u015fmeler yaparak). Kural\u0131n hedefi ise AWS CodePipeline&#8217;\u0131 tetiklemektir. CodePipeline, belirli bir artefakt giri\u015fini bekleyen bir ba\u015flang\u0131\u00e7 a\u015famas\u0131na sahip olmal\u0131d\u0131r.<\/p>\n<\/li>\n<li><strong>IAM Yetkilendirmesi (Hedef Hesap):<\/strong>\n<p>Hedef Hesap&#8217;taki EventBridge kural\u0131n\u0131n CodePipeline&#8217;\u0131 tetikleyebilmesi i\u00e7in, EventBridge&#8217;in bu i\u015flemi yapmas\u0131na izin veren bir IAM Rol\u00fc (\u00f6rne\u011fin, <code>EventBridgeCodePipelineInvokerRole<\/code>) \u00fcstlenmesi gerekir. Bu rol, <code>codepipeline:StartPipelineExecution<\/code> gibi eylemleri belirli bir CodePipeline kayna\u011f\u0131na (veya t\u00fcm CodePipeline&#8217;lara) kar\u015f\u0131 ger\u00e7ekle\u015ftirmesine izin veren bir ilkeye sahip olmal\u0131d\u0131r. Yine, bu rol\u00fcn g\u00fcven ili\u015fkisi EventBridge hizmetinin bu rol\u00fc \u00fcstlenmesine izin vermelidir.<\/p>\n<\/li>\n<li><strong>CodePipeline Tetiklenmesi (Hedef Hesap):<\/strong>\n<p>Son olarak, Hedef Hesap&#8217;taki EventBridge kural\u0131 taraf\u0131ndan tetiklenen CodePipeline, tan\u0131mlanm\u0131\u015f t\u00fcm a\u015famalar\u0131 (kaynak, derleme, da\u011f\u0131t\u0131m vb.) ba\u015flat\u0131r. Bu, uygulaman\u0131n otomatik olarak in\u015fa edilmesini, test edilmesini ve da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<\/li>\n<\/ol>\n<p>Bu mimari, her ad\u0131mda yetkilendirme kontrolleri yaparak y\u00fcksek g\u00fcvenlik seviyesi sa\u011flar. IAM Rolleri ve Kaynak Politikalar\u0131, sadece yetkili varl\u0131klar\u0131n belirli eylemleri ger\u00e7ekle\u015ftirmesine izin verir. EventBridge, bu olay tabanl\u0131 mimarinin merkezi koordinat\u00f6r\u00fcd\u00fcr, olaylar\u0131 g\u00fcvenilir bir \u015fekilde al\u0131r, filtreler ve do\u011fru hedeflere y\u00f6nlendirir. Bu entegrasyonun g\u00fcc\u00fc, birbirinden izole edilmi\u015f bulut ortamlar\u0131 aras\u0131nda karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 otomatikle\u015ftirme yetene\u011finden gelir.<\/p>\n<h2>Ad\u0131m Ad\u0131m Kurulum: Kaynak Hesaptaki S3 ve EventBridge Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>\u015eimdi teoriden prati\u011fe ge\u00e7elim ve \u00e7apraz hesap tetikleme senaryomuzun ilk k\u0131sm\u0131n\u0131, yani Kaynak Hesap&#8217;taki (Source Account) yap\u0131land\u0131rmay\u0131 ger\u00e7ekle\u015ftirelim. Bu b\u00f6l\u00fcmde, S3 paketimizdeki olaylar\u0131n EventBridge&#8217;e nas\u0131l y\u00f6nlendirilece\u011fini ve EventBridge&#8217;in bu olaylar\u0131 Hedef Hesap&#8217;a nas\u0131l g\u00f6nderece\u011fini ad\u0131m ad\u0131m g\u00f6rece\u011fiz. Unutmay\u0131n, bu ad\u0131mlar Kaynak Hesap&#8217;\u0131n\u0131zda yap\u0131lacakt\u0131r.<\/p>\n<h3>1. S3 Paketini Olu\u015fturma ve EventBridge Bildirimlerini Etkinle\u015ftirme<\/h3>\n<p>\u00d6ncelikle, CodePipeline&#8217;\u0131 tetikleyecek dosyalar\u0131 bar\u0131nd\u0131racak bir S3 paketi olu\u015fturmam\u0131z gerekiyor. Bu paket, nesne olu\u015fturma olaylar\u0131n\u0131 EventBridge&#8217;e g\u00f6nderecek \u015fekilde yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.<\/p>\n<ol>\n<li>AWS Y\u00f6netim Konsolu&#8217;nda S3 hizmetine gidin.<\/li>\n<li>Yeni bir paket olu\u015fturun (\u00f6rne\u011fin, <code>my-source-artifact-bucket-12345<\/code>). Paket ad\u0131n\u0131z\u0131n benzersiz oldu\u011fundan emin olun.<\/li>\n<li>Paket olu\u015fturulduktan sonra, paketinizin \u00f6zelliklerine (Properties) gidin.<\/li>\n<li>&#8220;Event notifications&#8221; b\u00f6l\u00fcm\u00fcn\u00fc bulun ve &#8220;Create event notification&#8221; se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li>\n<li>Bildirim i\u00e7in bir ad verin (\u00f6rne\u011fin, <code>SendToEventBridge<\/code>).<\/li>\n<li>&#8220;Events&#8221; b\u00f6l\u00fcm\u00fcnde, ihtiyac\u0131n\u0131za g\u00f6re olay t\u00fcrlerini se\u00e7in. Genellikle <code>All object create events<\/code> (<code>Put<\/code>, <code>Post<\/code>, <code>Copy<\/code>, <code>Multipart Upload<\/code>) se\u00e7ene\u011fi yeterlidir.<\/li>\n<li>&#8220;Destination&#8221; olarak &#8220;EventBridge&#8221; se\u00e7ene\u011fini i\u015faretleyin ve kaydedin.<\/li>\n<\/ol>\n<p>Bu yap\u0131land\u0131rma sayesinde, <code>my-source-artifact-bucket-12345<\/code> adl\u0131 S3 paketine yeni bir dosya y\u00fcklendi\u011finde, S3 otomatik olarak varsay\u0131lan EventBridge veri yolunuza bir olay g\u00f6nderecektir. Bu olay, daha sonraki ad\u0131mlarda kullanaca\u011f\u0131m\u0131z tetikleyicinin ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h3>2. EventBridge Kural\u0131 Olu\u015fturma (Kaynak Hesaptan Hedef Hesaba Olay G\u00f6nderme)<\/h3>\n<p>\u015eimdi Kaynak Hesap&#8217;taki EventBridge&#8217;e gelen S3 olaylar\u0131n\u0131 yakalay\u0131p, bunlar\u0131 Hedef Hesap&#8217;a y\u00f6nlendirecek bir kural tan\u0131mlayal\u0131m.<\/p>\n<ol>\n<li>AWS Y\u00f6netim Konsolu&#8217;nda EventBridge hizmetine gidin.<\/li>\n<li>Sol men\u00fcden &#8220;Rules&#8221; se\u00e7ene\u011fine t\u0131klay\u0131n ve &#8220;Create rule&#8221; butonuna bas\u0131n.<\/li>\n<li>Kural i\u00e7in bir ad verin (\u00f6rne\u011fin, <code>S3ToTargetAccountRule<\/code>) ve iste\u011fe ba\u011fl\u0131 bir a\u00e7\u0131klama ekleyin.<\/li>\n<li>&#8220;Define pattern&#8221; ad\u0131m\u0131nda &#8220;Event pattern&#8221; se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>Olay deseni (event pattern) i\u00e7in a\u015fa\u011f\u0131daki JSON&#8217;u kullan\u0131n. Bu desen, S3&#8217;ten gelen nesne olu\u015fturma olaylar\u0131n\u0131 ve spesifik paket ad\u0131n\u0131z\u0131 filtreleyecektir:<\/li>\n<\/ol>\n<pre><code class=\"language-json\">\n{\n  \"source\": [\"aws.s3\"],\n  \"detail-type\": [\"Object Created\"],\n  \"detail\": {\n    \"bucket\": {\n      \"name\": [\"my-source-artifact-bucket-12345\"]\n    },\n    \"reason\": [\"PutObject\", \"CompleteMultipartUpload\"]\n  }\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Deseni onaylad\u0131ktan sonra \"Select event bus\" k\u0131sm\u0131nda \"AWS default event bus\" se\u00e7ene\u011finin i\u015faretli oldu\u011fundan emin olun.<\/p>\n<ol start=\"6\">\n<li>\"Select targets\" ad\u0131m\u0131nda, \"AWS service\" olarak \"Event bus in another account\" se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>\"Account ID\" alan\u0131na Hedef Hesap'\u0131n 12 haneli AWS Hesap Kimli\u011fini girin.<\/li>\n<li>\"Event bus\" b\u00f6l\u00fcm\u00fcnde \"Default event bus\" se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>EventBridge'in bu \u00e7apraz hesap g\u00f6nderme i\u015flemini yapabilmesi i\u00e7in bir IAM Rol\u00fc'ne ihtiyac\u0131 vard\u0131r. \"Execution role\" alt\u0131nda \"Create a new role for this specific resource\" se\u00e7ene\u011fini se\u00e7in ve rol i\u00e7in bir ad verin (\u00f6rne\u011fin, <code>EventBridgeCrossAccountSenderRole<\/code>). EventBridge, bu rol\u00fc olu\u015fturacak ve gerekli izinleri ekleyecektir.<\/li>\n<li>Kural\u0131 olu\u015fturmak i\u00e7in gerekli ad\u0131mlar\u0131 tamamlay\u0131n.<\/li>\n<\/ol>\n<h3>3. EventBridgeCrossAccountSenderRole \u0130\u00e7in IAM \u0130zinlerini Kontrol Etme (\u0130ste\u011fe Ba\u011fl\u0131)<\/h3>\n<p>\u00d6nceki ad\u0131mda EventBridge taraf\u0131ndan otomatik olarak olu\u015fturulan rol\u00fcn, Hedef Hesap'a olay g\u00f6nderme iznine sahip oldu\u011fundan emin olmal\u0131y\u0131z. Genellikle EventBridge bunu do\u011fru bir \u015fekilde yapar, ancak do\u011frulamak \u00f6nemlidir.<\/p>\n<ol>\n<li>AWS Y\u00f6netim Konsolu'nda IAM hizmetine gidin.<\/li>\n<li>Sol men\u00fcden \"Roles\" se\u00e7ene\u011fine t\u0131klay\u0131n ve olu\u015fturdu\u011funuz <code>EventBridgeCrossAccountSenderRole<\/code> rol\u00fcn\u00fc aray\u0131n.<\/li>\n<li>Rol\u00fcn \"Permissions\" sekmesinde, a\u015fa\u011f\u0131daki gibi bir ilkenin (policy) ba\u011fl\u0131 oldu\u011fundan emin olun. Bu ilke, EventBridge'in Hedef Hesap'taki varsay\u0131lan veri yoluna olay g\u00f6ndermesine izin verir:<\/li>\n<\/ol>\n<pre><code class=\"language-json\">\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": \"events:PutEvents\",\n            \"Resource\": \"arn:aws:events:REGION:TARGET_ACCOUNT_ID:event-bus\/default\"\n        }\n    ]\n}\n    <\/pre>\n<p><\/code><\/p>\n<p><code>REGION<\/code> yerine kulland\u0131\u011f\u0131n\u0131z AWS b\u00f6lgesini (\u00f6rne\u011fin, <code>eu-central-1<\/code>) ve <code>TARGET_ACCOUNT_ID<\/code> yerine Hedef Hesap'\u0131n kimli\u011fini yazd\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, Kaynak Hesap'taki S3 paketine yap\u0131lan herhangi bir dosya y\u00fcklemesi, EventBridge arac\u0131l\u0131\u011f\u0131yla Hedef Hesap'taki EventBridge veri yoluna g\u00fcvenli bir \u015fekilde iletilmeye haz\u0131r olacakt\u0131r. \u015eimdi s\u0131ra Hedef Hesap'taki yap\u0131land\u0131rmada.<\/p>\n<h2>Hedef Hesaptaki EventBridge ve CodePipeline Yap\u0131land\u0131rmas\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Kaynak Hesap'taki S3 ve EventBridge yap\u0131land\u0131rmas\u0131n\u0131 tamamlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi s\u0131ra Hedef Hesap'ta (Target Account) gelen olaylar\u0131 kar\u015f\u0131lamak ve CodePipeline'\u0131 tetiklemek i\u00e7in gerekli ad\u0131mlar\u0131 atmaya geldi. Bu k\u0131s\u0131m, Kaynak Hesap'tan gelen olaylar\u0131n i\u015flenmesi ve da\u011f\u0131t\u0131m s\u00fcrecinin ba\u015flat\u0131lmas\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>1. EventBridge Varsay\u0131lan Veri Yolu \u0130\u00e7in Kaynak Politikas\u0131 Olu\u015fturma (Hedef Hesap)<\/h3>\n<p>Hedef Hesap'taki EventBridge varsay\u0131lan veri yolu, Kaynak Hesap'tan gelen olaylar\u0131 kabul etmesi i\u00e7in a\u00e7\u0131k\u00e7a yetkilendirilmelidir. Bu yetkilendirme, bir kaynak politikas\u0131 (resource policy) arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r.<\/p>\n<ol>\n<li>AWS Y\u00f6netim Konsolu'nda Hedef Hesap'\u0131n\u0131zda EventBridge hizmetine gidin.<\/li>\n<li>Sol men\u00fcden \"Event buses\" se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li>\n<li>\"Default\" isimli veri yolunu se\u00e7in ve \"Permissions\" sekmesine t\u0131klay\u0131n.<\/li>\n<li>\"Add permission\" butonuna t\u0131klay\u0131n ve a\u015fa\u011f\u0131daki ilkeyi (policy) yap\u0131\u015ft\u0131r\u0131n. Bu ilke, Kaynak Hesap'tan gelen <code>events:PutEvents<\/code> eylemine izin verir:<\/li>\n<\/ol>\n<pre><code class=\"language-json\">\n{\n  \"Sid\": \"AllowAccountToPutEvents\",\n  \"Effect\": \"Allow\",\n  \"Principal\": {\n    \"AWS\": \"arn:aws:iam::SOURCE_ACCOUNT_ID:root\"\n  },\n  \"Action\": \"events:PutEvents\",\n  \"Resource\": \"arn:aws:events:REGION:TARGET_ACCOUNT_ID:event-bus\/default\"\n}\n    <\/pre>\n<p><\/code><\/p>\n<p><code>SOURCE_ACCOUNT_ID<\/code> yerine Kaynak Hesap'\u0131n 12 haneli AWS Hesap Kimli\u011fini, <code>REGION<\/code> yerine kulland\u0131\u011f\u0131n\u0131z AWS b\u00f6lgesini ve <code>TARGET_ACCOUNT_ID<\/code> yerine Hedef Hesap'\u0131n kimli\u011fini yazd\u0131\u011f\u0131n\u0131zdan emin olun. <code>\"Principal\": {\"AWS\": \"arn:aws:iam::SOURCE_ACCOUNT_ID:root\"}<\/code> yerine, Kaynak Hesap'taki EventBridge taraf\u0131ndan kullan\u0131lan IAM Rol\u00fcn\u00fc (<code>\"Principal\": {\"AWS\": \"arn:aws:iam::SOURCE_ACCOUNT_ID:role\/EventBridgeCrossAccountSenderRole\"}<\/code>) belirterek daha dar bir yetkilendirme yapabilirsiniz, bu daha g\u00fcvenli bir yakla\u015f\u0131md\u0131r. Daha basit bir ba\u015flang\u0131\u00e7 i\u00e7in root prensip kullan\u0131labilir.<\/p>\n<h3>2. CodePipeline Olu\u015fturma (Hedef Hesap)<\/h3>\n<p>Hedef Hesap'ta, Kaynak Hesap'tan gelen S3 olay\u0131n\u0131 kullanarak tetikleyece\u011fimiz bir CodePipeline olu\u015fturmam\u0131z gerekiyor. Bu CodePipeline, uygulamam\u0131z\u0131 da\u011f\u0131tmak i\u00e7in gerekli ad\u0131mlar\u0131 i\u00e7erecektir.<\/p>\n<ol>\n<li>AWS Y\u00f6netim Konsolu'nda Hedef Hesap'\u0131n\u0131zda CodePipeline hizmetine gidin.<\/li>\n<li>\"Create pipeline\" butonuna t\u0131klay\u0131n.<\/li>\n<li>Pipeline'a bir ad verin (\u00f6rne\u011fin, <code>MyAppDeploymentPipeline<\/code>).<\/li>\n<li>\"Service role\" i\u00e7in yeni bir rol olu\u015fturmas\u0131na izin verin veya mevcut bir rol\u00fc se\u00e7in (\u00f6rne\u011fin, <code>CodePipelineServiceRole<\/code>). Bu rol, CodePipeline'\u0131n S3, CodeBuild gibi di\u011fer AWS hizmetlerine eri\u015fimi i\u00e7in gerekli izinlere sahip olacakt\u0131r.<\/li>\n<li>\"Source stage\" olarak \"Amazon S3\" se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>\"S3 bucket\" olarak, CodePipeline'\u0131n tetiklenmesiyle kullan\u0131lacak olan artefaktlar\u0131n depolanaca\u011f\u0131 bir S3 paketi belirtin (bu genellikle Kaynak Hesap'taki S3 paketinden kopyalanacak olan artefaktt\u0131r, veya CodePipeline'\u0131n kendi artefact bucket'\u0131 olabilir).\n<div class=\"expert-tip\">\n                Uzman \u0130pucu: CodePipeline i\u00e7in ayr\u0131 bir Artifact S3 paketi olu\u015fturmak en iyi pratiklerden biridir. Bu paket, pipeline'\u0131n \u00e7\u0131kt\u0131lar\u0131n\u0131n ve ge\u00e7ici dosyalar\u0131n\u0131n depolanmas\u0131nda kullan\u0131l\u0131r. Kaynak S3'ten gelen olaylar CodePipeline'\u0131 tetiklerken, pipeline'\u0131n kendisi bu Artifact paketini kullanarak i\u015flem yapar.\n            <\/div>\n<\/li>\n<li>\"S3 object key\" alan\u0131na, CodePipeline'\u0131 tetikleyecek dosyan\u0131n (artefakt\u0131n) tam anahtar\u0131n\u0131 girin (\u00f6rne\u011fin, <code>app-release.zip<\/code>).<\/li>\n<li>\"Change detection options\" alt\u0131nda, \"AWS CodePipeline\" veya \"Amazon EventBridge (recommended)\" se\u00e7ene\u011fini se\u00e7in. Bizim senaryomuzda EventBridge'i kullanaca\u011f\u0131m\u0131z i\u00e7in burada S3 Polling'i kapatabiliriz.<\/li>\n<li>Di\u011fer a\u015famalar\u0131 (Build, Deploy) kendi ihtiyac\u0131n\u0131za g\u00f6re yap\u0131land\u0131r\u0131n veya \u015fimdilik atlay\u0131n. \u00d6rne\u011fin, bir CodeBuild projesi tan\u0131mlayarak derleme a\u015famas\u0131n\u0131, bir AWS Elastic Beanstalk veya AWS CodeDeploy uygulamas\u0131 tan\u0131mlayarak da\u011f\u0131t\u0131m a\u015famas\u0131n\u0131 ekleyebilirsiniz.<\/li>\n<li>Pipeline'\u0131 olu\u015fturun.<\/li>\n<\/ol>\n<h3>3. EventBridge Kural\u0131 Olu\u015fturma (Hedef Hesaptan CodePipeline Tetikleme)<\/h3>\n<p>\u015eimdi Kaynak Hesap'tan gelen olaylar\u0131 yakalay\u0131p, CodePipeline'\u0131 tetikleyecek son EventBridge kural\u0131n\u0131 tan\u0131mlayal\u0131m.<\/p>\n<ol>\n<li>AWS Y\u00f6netim Konsolu'nda Hedef Hesap'\u0131n\u0131zda EventBridge hizmetine tekrar gidin.<\/li>\n<li>Sol men\u00fcden \"Rules\" se\u00e7ene\u011fine t\u0131klay\u0131n ve \"Create rule\" butonuna bas\u0131n.<\/li>\n<li>Kural i\u00e7in bir ad verin (\u00f6rne\u011fin, <code>S3EventToCodePipelineRule<\/code>) ve iste\u011fe ba\u011fl\u0131 bir a\u00e7\u0131klama ekleyin.<\/li>\n<li>\"Define pattern\" ad\u0131m\u0131nda \"Event pattern\" se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>Olay deseni (event pattern) i\u00e7in a\u015fa\u011f\u0131daki JSON'u kullan\u0131n. Bu desen, Kaynak Hesap'tan gelen ve belirli bir S3 paketindeki nesne olu\u015fturma olaylar\u0131n\u0131 filtreleyecektir:<\/li>\n<\/ol>\n<pre><code class=\"language-json\">\n{\n  \"source\": [\"aws.s3\"],\n  \"detail-type\": [\"Object Created\"],\n  \"account\": [\"SOURCE_ACCOUNT_ID\"],\n  \"detail\": {\n    \"bucket\": {\n      \"name\": [\"my-source-artifact-bucket-12345\"]\n    },\n    \"reason\": [\"PutObject\", \"CompleteMultipartUpload\"]\n  }\n}\n    <\/pre>\n<p><\/code><\/p>\n<p><code>SOURCE_ACCOUNT_ID<\/code> yerine Kaynak Hesap'\u0131n kimli\u011fini ve S3 paket ad\u0131n\u0131 kendi paket ad\u0131n\u0131zla de\u011fi\u015ftirdi\u011finizden emin olun. Bu kural, Kaynak Hesap'tan geldi\u011fini do\u011frulad\u0131\u011f\u0131m\u0131z ve S3'ten kaynaklanan olaylar\u0131 hedefleyecektir.<\/p>\n<ol start=\"6\">\n<li>\"Select targets\" ad\u0131m\u0131nda, \"AWS service\" olarak \"CodePipeline\" se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>\"Pipeline\" a\u00e7\u0131l\u0131r listesinden az \u00f6nce olu\u015fturdu\u011funuz CodePipeline'\u0131 (\u00f6rne\u011fin, <code>MyAppDeploymentPipeline<\/code>) se\u00e7in.<\/li>\n<li>\"Execution role\" alt\u0131nda \"Create a new role for this specific resource\" se\u00e7ene\u011fini se\u00e7in ve rol i\u00e7in bir ad verin (\u00f6rne\u011fin, <code>EventBridgeCodePipelineInvokerRole<\/code>). Bu rol, EventBridge'in CodePipeline'\u0131 ba\u015flatmas\u0131na izin veren izinlere sahip olacakt\u0131r.<\/li>\n<li>Kural\u0131 olu\u015fturmak i\u00e7in gerekli ad\u0131mlar\u0131 tamamlay\u0131n.<\/li>\n<\/ol>\n<p>Bu ad\u0131mlarla Hedef Hesap'taki yap\u0131land\u0131rmay\u0131 tamamlam\u0131\u015f oluyorsunuz. Art\u0131k, Kaynak Hesap'taki S3 paketinize bir dosya y\u00fckledi\u011finizde, bu olay EventBridge arac\u0131l\u0131\u011f\u0131yla Kaynak Hesap'tan Hedef Hesap'a iletilecek ve Hedef Hesap'taki CodePipeline'\u0131n\u0131z otomatik olarak tetiklenerek da\u011f\u0131t\u0131m s\u00fcrecinizi ba\u015flatacakt\u0131r. Bu, \u00e7apraz hesap CI\/CD s\u00fcre\u00e7leriniz i\u00e7in g\u00fc\u00e7l\u00fc ve otomatik bir temel olu\u015fturur.<\/p>\n<h2>G\u00fcvenlik ve \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 Nelerdir?<\/h2>\n<p>\u00c7apraz hesap entegrasyonlar\u0131, karma\u015f\u0131k oldu\u011fu kadar g\u00fcvenlik a\u00e7\u0131s\u0131ndan da dikkatli planlama gerektirir. Otomasyonun faydalar\u0131n\u0131 maksimize ederken g\u00fcvenlik duru\u015funuzu korumak i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi pratikleri g\u00f6z \u00f6n\u00fcnde bulundural\u0131m.<\/p>\n<h3>1. En Az Ayr\u0131cal\u0131k (Least Privilege) Prensibi<\/h3>\n<p>Bu makalede olu\u015fturdu\u011fumuz IAM rolleri ve politikalar\u0131 i\u00e7in her zaman \"en az ayr\u0131cal\u0131k\" prensibini uygulay\u0131n. Bu, bir rol\u00fcn veya kullan\u0131c\u0131n\u0131n yaln\u0131zca g\u00f6revini yerine getirmesi i\u00e7in kesinlikle gerekli olan minimum izinlere sahip olmas\u0131 gerekti\u011fi anlam\u0131na gelir. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><code>EventBridgeCrossAccountSenderRole<\/code> i\u00e7in <code>events:PutEvents<\/code> eylemini yaln\u0131zca belirli bir hedef EventBridge veri yoluna (ARN ile) ve hatta belirli olay desenlerine kar\u015f\u0131 k\u0131s\u0131tlay\u0131n.<\/li>\n<li><code>EventBridgeCodePipelineInvokerRole<\/code> i\u00e7in <code>codepipeline:StartPipelineExecution<\/code> eylemini yaln\u0131zca belirli bir CodePipeline ARN'sine kar\u015f\u0131 k\u0131s\u0131tlay\u0131n.<\/li>\n<li>S3 paket izinlerinde, sadece EventBridge'in olay bildirimlerini g\u00f6ndermesine izin verin ve gereksiz okuma\/yazma izinlerinden ka\u00e7\u0131n\u0131n.<\/li>\n<\/ul>\n<p>Ayr\u0131ca, IAM rol g\u00fcven ili\u015fkilerinde (trust policies), rol\u00fc \u00fcstlenecek hizmeti (\u00f6rne\u011fin, <code>events.amazonaws.com<\/code>) ve iste\u011fe ba\u011fl\u0131 olarak d\u0131\u015f kimli\u011fi (External ID) veya belirli bir kaynak ARN'sini belirterek daha fazla k\u0131s\u0131tlama getirebilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-json\">\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"Service\": \"events.amazonaws.com\"\n      },\n      \"Action\": \"sts:AssumeRole\",\n      \"Condition\": {\n        \"StringEquals\": {\n          \"sts:ExternalId\": \"MY_UNIQUE_EXTERNAL_ID\"\n        }\n      }\n    }\n  ]\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>External ID kullan\u0131m\u0131, \"confused deputy\" sorununu \u00f6nlemeye yard\u0131mc\u0131 olan ek bir g\u00fcvenlik katman\u0131d\u0131r, \u00f6zellikle \u00e7apraz hesap rol \u00fcstlenme senaryolar\u0131nda \u00f6nemlidir.<\/p>\n<h3>2. KMS Enkripsiyonu<\/h3>\n<p>S3 paketinizde depolanan artefaktlar veya hassas veriler i\u00e7in AWS Key Management Service (KMS) kullanarak sunucu taraf\u0131 \u015fifrelemeyi etkinle\u015ftirin. Bu, depolanan verilerinizin hem aktar\u0131m s\u0131ras\u0131nda hem de bekleme durumundayken g\u00fcvende olmas\u0131n\u0131 sa\u011flar. CodePipeline'\u0131n ve CodeBuild'\u0131n da \u015fifrelenmi\u015f artefaktlar\u0131 i\u015fleyebilmesi i\u00e7in ilgili IAM rollerinin KMS anahtarlar\u0131n\u0131za eri\u015fim iznine sahip oldu\u011fundan emin olun.<\/p>\n<h3>3. Yap\u0131land\u0131rmay\u0131 Kod ile Y\u00f6netme (IaC)<\/h3>\n<p>T\u00fcm bu yap\u0131land\u0131rmalar\u0131 (S3 paketleri, EventBridge kurallar\u0131, IAM rolleri ve CodePipeline'lar) AWS CloudFormation veya Terraform gibi Altyap\u0131y\u0131 Kod Olarak (Infrastructure as Code - IaC) ara\u00e7lar\u0131 ile y\u00f6netmek, tutarl\u0131l\u0131k, tekrarlanabilirlik ve hata oran\u0131n\u0131n d\u00fc\u015f\u00fcr\u00fclmesi a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. IaC, s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda yap\u0131land\u0131rmalar\u0131n\u0131z\u0131 saklaman\u0131za, de\u011fi\u015fiklikleri izlemenize ve kolayca geri alabilmenize olanak tan\u0131r. \u00d6zellikle \u00e7oklu hesap ortamlar\u0131nda, her hesaptaki yap\u0131land\u0131rmalar\u0131n manuel olarak yap\u0131lmas\u0131 hem zaman al\u0131c\u0131 hem de hataya a\u00e7\u0131k olacakt\u0131r.<\/p>\n<h3>4. Kapsaml\u0131 \u0130zleme ve G\u00fcnl\u00fc\u011fe Kaydetme (Monitoring & Logging)<\/h3>\n<p>EventBridge ve CodePipeline s\u00fcre\u00e7lerinizin etkin bir \u015fekilde izlenmesi, sorun giderme ve g\u00fcvenlik denetimi i\u00e7in hayati \u00f6neme sahiptir:<\/p>\n<ul>\n<li><strong>Amazon CloudWatch Logs:<\/strong> EventBridge kurallar\u0131n\u0131z\u0131n ve CodePipeline a\u015famalar\u0131n\u0131z\u0131n g\u00fcnl\u00fcklerini CloudWatch Logs'a g\u00f6nderecek \u015fekilde yap\u0131land\u0131r\u0131n. Bu g\u00fcnl\u00fckler, olaylar\u0131n ba\u015far\u0131l\u0131 bir \u015fekilde i\u015flenip i\u015flenmedi\u011fini veya herhangi bir hata olup olmad\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur.<\/li>\n<li><strong>Amazon CloudWatch Metrics ve Alarmlar:<\/strong> EventBridge i\u00e7in kural tetiklenme metriklerini, CodePipeline i\u00e7in ba\u015far\u0131l\u0131\/ba\u015far\u0131s\u0131z pipeline \u00e7al\u0131\u015ft\u0131rma metriklerini izleyin. Belirli e\u015fik de\u011ferleri a\u015f\u0131ld\u0131\u011f\u0131nda (\u00f6rne\u011fin, ba\u015far\u0131s\u0131z pipeline \u00e7al\u0131\u015ft\u0131rmalar\u0131) sizi bilgilendirecek CloudWatch Alarmlar\u0131 kurun.<\/li>\n<li><strong>AWS CloudTrail:<\/strong> T\u00fcm AWS API \u00e7a\u011fr\u0131lar\u0131n\u0131 CloudTrail ile kaydedin. Bu, kimin ne zaman hangi AWS kayna\u011f\u0131nda hangi eylemi ger\u00e7ekle\u015ftirdi\u011fini denetlemenize olanak tan\u0131r. \u00d6zellikle IAM rol \u00fcstlenmeleri ve \u00e7apraz hesap eri\u015fimleri i\u00e7in CloudTrail kay\u0131tlar\u0131 kritik bilgiler sa\u011flar.<\/li>\n<\/ul>\n<h3>5. Vaka Analizi: K\u00fcresel Yaz\u0131l\u0131m Da\u011f\u0131t\u0131m\u0131<\/h3>\n<p>Bir yaz\u0131l\u0131m \u015firketi d\u00fc\u015f\u00fcn\u00fcn. Bu \u015firketin ana bir \"Merkezi Geli\u015ftirme\" hesab\u0131 var ve d\u00fcnya genelinde farkl\u0131 co\u011frafyalarda m\u00fc\u015fterileri i\u00e7in \"B\u00f6lgesel Da\u011f\u0131t\u0131m\" hesaplar\u0131 bulunuyor. \u015eirket, yeni bir yaz\u0131l\u0131m g\u00fcncellemesi yay\u0131nlad\u0131\u011f\u0131nda, bu g\u00fcncelleme merkezi geli\u015ftirme hesab\u0131ndaki bir S3 paketine y\u00fckleniyor. Bu y\u00fckleme, daha \u00f6nce a\u00e7\u0131klad\u0131\u011f\u0131m\u0131z \u00e7apraz hesap EventBridge ve IAM mimarisini kullanarak her bir b\u00f6lgesel da\u011f\u0131t\u0131m hesab\u0131ndaki CodePipeline'\u0131 tetikliyor. Her b\u00f6lgesel CodePipeline, yaz\u0131l\u0131m\u0131 kendi b\u00f6lgesindeki EC2\/ECS\/Lambda gibi hedeflere otomatik olarak da\u011f\u0131t\u0131yor. Bu sayede:<\/p>\n<ul>\n<li>Yeni yaz\u0131l\u0131m s\u00fcr\u00fcmleri dakikalar i\u00e7inde k\u00fcresel olarak da\u011f\u0131t\u0131labiliyor.<\/li>\n<li>Her b\u00f6lgenin kendi spesifik yap\u0131land\u0131rmas\u0131 ve da\u011f\u0131t\u0131m mant\u0131\u011f\u0131 kendi CodePipeline'\u0131nda izole edilmi\u015f oluyor.<\/li>\n<li>Merkezi ekip, tek bir yerden g\u00fcncellemeyi y\u00f6netirken, da\u011f\u0131t\u0131m\u0131n sorumlulu\u011fu b\u00f6lgesel hesaplara devrediliyor.<\/li>\n<li>G\u00fcvenlik, IAM rolleri ve EventBridge kaynak politikalar\u0131 ile s\u0131k\u0131 bir \u015fekilde y\u00f6netiliyor, b\u00f6ylece merkezi hesab\u0131n t\u00fcm b\u00f6lgesel hesaplara do\u011frudan tam eri\u015fimi engelleniyor.<\/li>\n<\/ul>\n<p>Bu tip bir mimari, \u00f6zellikle b\u00fcy\u00fck ve co\u011frafi olarak da\u011f\u0131lm\u0131\u015f organizasyonlar i\u00e7in y\u00fcksek verimlilik ve g\u00fcvenlik sa\u011flar. \u0130leri d\u00fczey ipu\u00e7lar\u0131n\u0131 uygulayarak bu t\u00fcr karma\u015f\u0131k senaryolar\u0131 daha sa\u011flam ve y\u00f6netilebilir hale getirebilirsiniz.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu kapsaml\u0131 rehberde, AWS'nin g\u00fcc\u00fcn\u00fc kullanarak \u00e7apraz hesap S3 y\u00fcklemeleriyle CodePipeline tetikleme mekanizmas\u0131n\u0131 detayl\u0131 bir \u015fekilde inceledik. Modern bulut mimarilerinde s\u0131kl\u0131kla kar\u015f\u0131la\u015f\u0131lan \u00e7oklu hesap stratejisinin getirdi\u011fi entegrasyon zorluklar\u0131n\u0131 a\u015fmak i\u00e7in Amazon S3, EventBridge ve IAM Rollerinin nas\u0131l bir araya getirilebilece\u011fini ad\u0131m ad\u0131m \u00f6\u011frendik. Kaynak hesaptaki bir S3 paketine yap\u0131lan basit bir dosya y\u00fcklemesinin, EventBridge'in \u00e7apraz hesap olay g\u00f6nderme yetene\u011fi ve do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f IAM izinleri sayesinde hedef hesaptaki bir CodePipeline'\u0131 nas\u0131l otomatik olarak tetikledi\u011fini g\u00f6rd\u00fck. Bu otomasyon, CI\/CD s\u00fcre\u00e7lerini h\u0131zland\u0131rman\u0131n, manuel hatalar\u0131 azaltman\u0131n ve kurumsal da\u011f\u0131t\u0131m stratejilerini g\u00fcvenli bir \u015fekilde uygulaman\u0131n anahtar\u0131d\u0131r.<\/p>\n<p>En az ayr\u0131cal\u0131k prensibi, KMS \u015fifrelemesi, Altyap\u0131y\u0131 Kod Olarak (IaC) y\u00f6netimi ve kapsaml\u0131 izleme gibi ileri d\u00fczey g\u00fcvenlik ve operasyonel ipu\u00e7lar\u0131, bu t\u00fcr bir mimarinin sadece i\u015flevsel de\u011fil, ayn\u0131 zamanda sa\u011flam ve y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flar. Bu yakla\u015f\u0131m, yaz\u0131l\u0131m da\u011f\u0131t\u0131mlar\u0131n\u0131z\u0131 otomatikle\u015ftirirken bulut ortam\u0131n\u0131z\u0131n g\u00fcvenli\u011fini ve verimlili\u011fini en \u00fcst d\u00fczeye \u00e7\u0131karman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Umuyoruz ki bu rehber, kendi \u00e7apraz hesap otomasyon \u00e7\u00f6z\u00fcmlerinizi tasarlaman\u0131z ve uygulaman\u0131z i\u00e7in size sa\u011flam bir temel sunmu\u015ftur.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<h4>1. \u00c7apraz hesap entegrasyonunda neden IAM Rolleri kullanmak zorunday\u0131m?<\/h4>\n<p>IAM Rolleri, iki farkl\u0131 AWS hesab\u0131 aras\u0131nda g\u00fcvenli ve ge\u00e7ici izinler sa\u011flaman\u0131n en iyi yoludur. Do\u011frudan kullan\u0131c\u0131 kimlik bilgilerini veya eri\u015fim anahtarlar\u0131n\u0131 payla\u015fmak yerine, bir rol tan\u0131mlayarak di\u011fer hesab\u0131n bu rol\u00fc belirli bir s\u00fcre i\u00e7in \u00fcstlenmesine izin verirsiniz. Bu, en az ayr\u0131cal\u0131k prensibini uygulaman\u0131z\u0131, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 azaltman\u0131z\u0131 ve kimlik bilgilerinin if\u015fa riskini ortadan kald\u0131rman\u0131z\u0131 sa\u011flar. Rollerin g\u00fcven ili\u015fkileri (trust policies) ve izin politikalar\u0131 (permission policies) sayesinde, tam olarak hangi eylemlerin hangi kaynaklar \u00fczerinde ger\u00e7ekle\u015ftirilebilece\u011fini hassas bir \u015fekilde kontrol edebilirsiniz.<\/p>\n<h4>2. S3 olaylar\u0131 do\u011frudan CodePipeline'\u0131 tetikleyemez mi, neden EventBridge'e ihtiyac\u0131m var?<\/h4>\n<p>Evet, S3 olaylar\u0131 do\u011frudan CodePipeline'\u0131 tetikleyebilir ancak bu genellikle ayn\u0131 hesap i\u00e7indeki tetiklemeler i\u00e7in ge\u00e7erlidir. \u00c7apraz hesap senaryosunda, S3'\u00fcn olaylar\u0131 do\u011frudan ba\u015fka bir hesaptaki CodePipeline'\u0131 tetiklemesi karma\u015f\u0131k ve g\u00fcvensiz olabilir. EventBridge, \u00e7apraz hesap olay y\u00f6nlendirmesi i\u00e7in tasarlanm\u0131\u015f merkezi bir hizmettir. Olaylar\u0131 farkl\u0131 hesaplar aras\u0131nda g\u00fcvenli bir \u015fekilde iletmek, filtrelemek ve d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in g\u00fc\u00e7l\u00fc yetenekler sunar. EventBridge sayesinde, olay ak\u0131\u015f\u0131n\u0131z\u0131 merkezi olarak y\u00f6netebilir ve karma\u015f\u0131k mant\u0131klar\u0131 kurallarla tan\u0131mlayabilirsiniz. Bu, mimariyi daha mod\u00fcler, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir hale getirir.<\/p>\n<h4>3. Kaynak Hesaptaki S3'e y\u00fcklenen dosyan\u0131n i\u00e7eri\u011fi Hedef Hesaptaki CodePipeline'a nas\u0131l ula\u015f\u0131r?<\/h4>\n<p>EventBridge, S3 olay\u0131n\u0131n sadece meta verisini (\u00f6rne\u011fin, paket ad\u0131, nesne anahtar\u0131, boyut) iletir, dosyan\u0131n kendisini de\u011fil. CodePipeline, tetiklendi\u011finde genellikle kendi \"Source\" a\u015famas\u0131nda bir S3 paketi belirtir. Bu S3 paketi, tetikleyici olaydaki nesne anahtar\u0131na g\u00f6re Kaynak Hesaptaki S3 paketinden artefakt\u0131 \u00e7ekebilmelidir. Bu, hedef CodePipeline hizmet rol\u00fcn\u00fcn (<code>CodePipelineServiceRole<\/code>) Kaynak Hesaptaki S3 paketine <code>s3:GetObject<\/code> izinlerine sahip olmas\u0131 gerekti\u011fi anlam\u0131na gelir. G\u00fcvenli eri\u015fim i\u00e7in, Kaynak S3 paketi \u00fczerinde hedef CodePipeline rol\u00fcne izin veren bir bucket policy veya CodePipeline rol\u00fcnde cross-account s3 eri\u015fimi i\u00e7in bir IAM politikas\u0131 tan\u0131mlanmal\u0131d\u0131r. Ancak, CodePipeline'\u0131 tetiklemenin en yayg\u0131n yolu, Kaynak Hesaptaki S3 paketinin sadece tetikleyici olarak kullan\u0131lmas\u0131 ve CodePipeline'\u0131n kendisinin kaynak kodunu bir CodeCommit veya GitHub reposundan \u00e7ekmesi veya CodePipeline'\u0131n Artifact Source olarak yine kendi hesab\u0131ndaki bir S3'\u00fc kullanmas\u0131d\u0131r. E\u011fer artefakt ger\u00e7ekten Kaynak S3'ten \u00e7ekilecekse, S3 paket politikas\u0131 \u015fu \u015fekilde g\u00fcncellenmelidir:<\/p>\n<pre><code class=\"language-json\">\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::TARGET_ACCOUNT_ID:role\/CodePipelineServiceRole\"\n      },\n      \"Action\": [\n        \"s3:GetObject\",\n        \"s3:GetObjectVersion\"\n      ],\n      \"Resource\": \"arn:aws:s3:::my-source-artifact-bucket-12345\/*\"\n    }\n  ]\n}\n    <\/pre>\n<p><\/code><\/p>\n<h4>4. Da\u011f\u0131t\u0131m\u0131 geri almak istersem ne yapmal\u0131y\u0131m?<\/h4>\n<p>CodePipeline, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin geri al\u0131nmas\u0131 (rollback) i\u00e7in yerle\u015fik \u00f6zelliklere sahiptir. Bir da\u011f\u0131t\u0131m\u0131 geri almak i\u00e7in genellikle iki yakla\u015f\u0131m kullan\u0131l\u0131r:<\/p>\n<ul>\n<li><strong>\u00d6nceki ba\u015far\u0131l\u0131 s\u00fcr\u00fcm\u00fc da\u011f\u0131tma:<\/strong> CodePipeline ge\u00e7mi\u015finde, daha \u00f6nce ba\u015far\u0131l\u0131 bir \u015fekilde da\u011f\u0131t\u0131lm\u0131\u015f bir pipeline \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 manuel olarak se\u00e7ip tekrar \u00e7al\u0131\u015ft\u0131rmak. Bu, \u00f6nceki iyi bilinen bir duruma geri d\u00f6nmenizi sa\u011flar.<\/li>\n<li><strong>Geri alma a\u015famalar\u0131:<\/strong> CodePipeline tan\u0131m\u0131n\u0131za \u00f6zel geri alma a\u015famalar\u0131 (rollback stages) eklemek. Bu a\u015famalar, bir hata durumunda otomatik olarak devreye girer veya manuel olarak tetiklenebilir ve \u00f6nceki s\u00fcr\u00fcm\u00fc veya bir geri alma scriptini \u00e7al\u0131\u015ft\u0131rarak sistemi eski haline d\u00f6nd\u00fcr\u00fcr. \u00d6rne\u011fin, CodeDeploy ile bir da\u011f\u0131t\u0131m yap\u0131yorsan\u0131z, CodeDeploy'in kendi geri alma yeteneklerini kullanabilirsiniz.<\/li>\n<\/ul>\n<h4>5. EventBridge kural\u0131m\u0131 test etmek i\u00e7in ne yapabilirim?<\/h4>\n<p>EventBridge konsolu \u00fczerinde \"Send test event\" \u00f6zelli\u011fini kullanarak kural\u0131n\u0131z\u0131n bekledi\u011finiz olay desenine tepki verip vermedi\u011fini test edebilirsiniz. S3 olay\u0131n\u0131n bir JSON \u00f6rne\u011fini buraya yap\u0131\u015ft\u0131rarak kural\u0131n e\u015fle\u015fip e\u015fle\u015fmedi\u011fini ve hedefi do\u011fru tetikleyip tetiklemedi\u011fini g\u00f6rebilirsiniz. Ayr\u0131ca, EventBridge i\u00e7in CloudWatch Logs'a teslim g\u00fcnl\u00fcklerini (delivery logs) etkinle\u015ftirerek olaylar\u0131n hedeflere ba\u015far\u0131l\u0131 bir \u015fekilde iletilip iletilmedi\u011fini detayl\u0131 olarak izleyebilirsiniz. Kaynak hesab\u0131n\u0131zdaki S3 paketine ger\u00e7ek bir test dosyas\u0131 y\u00fcklemek de u\u00e7tan uca test i\u00e7in en g\u00fcvenilir y\u00f6ntemdir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1406],"tags":[],"class_list":{"0":"post-34299","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi<\/title>\n<meta name=\"description\" content=\"Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir s\u00fcre\u00e7 haline gelebilir. Peki, bir geli\u015ftirme hesab\u0131ndaki S3 paketine y\u00fcklenen bir dosyan\u0131n, \u00fcretim hesab\u0131ndaki CodePipeline&#039;\u0131 otomatik olarak nas\u0131l ba\u015flataca\u011f\u0131n\u0131 hi\u00e7 merak ettiniz mi?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi\" \/>\n<meta property=\"og:description\" content=\"Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir s\u00fcre\u00e7 haline gelebilir. Peki, bir geli\u015ftirme hesab\u0131ndaki S3 paketine y\u00fcklenen bir dosyan\u0131n, \u00fcretim hesab\u0131ndaki CodePipeline&#039;\u0131 otomatik olarak nas\u0131l ba\u015flataca\u011f\u0131n\u0131 hi\u00e7 merak ettiniz mi?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-14T19:31:21+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi\",\"datePublished\":\"2025-11-14T19:31:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/\"},\"wordCount\":5319,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AWS\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/\",\"name\":\"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-14T19:31:21+00:00\",\"description\":\"Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir s\u00fcre\u00e7 haline gelebilir. Peki, bir geli\u015ftirme hesab\u0131ndaki S3 paketine y\u00fcklenen bir dosyan\u0131n, \u00fcretim hesab\u0131ndaki CodePipeline'\u0131 otomatik olarak nas\u0131l ba\u015flataca\u011f\u0131n\u0131 hi\u00e7 merak ettiniz mi?\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi","description":"Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir s\u00fcre\u00e7 haline gelebilir. Peki, bir geli\u015ftirme hesab\u0131ndaki S3 paketine y\u00fcklenen bir dosyan\u0131n, \u00fcretim hesab\u0131ndaki CodePipeline'\u0131 otomatik olarak nas\u0131l ba\u015flataca\u011f\u0131n\u0131 hi\u00e7 merak ettiniz mi?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi","og_description":"Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir s\u00fcre\u00e7 haline gelebilir. Peki, bir geli\u015ftirme hesab\u0131ndaki S3 paketine y\u00fcklenen bir dosyan\u0131n, \u00fcretim hesab\u0131ndaki CodePipeline'\u0131 otomatik olarak nas\u0131l ba\u015flataca\u011f\u0131n\u0131 hi\u00e7 merak ettiniz mi?","og_url":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-14T19:31:21+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi","datePublished":"2025-11-14T19:31:21+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/"},"wordCount":5319,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AWS"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/","name":"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-14T19:31:21+00:00","description":"Bulut ortamlar\u0131nda CI\/CD s\u00fcre\u00e7lerini y\u00f6netirken, farkl\u0131 AWS hesaplar\u0131 aras\u0131nda g\u00fcvenli ve otomatik tetikleyiciler kurmak \u00e7o\u011fu zaman karma\u015f\u0131k bir s\u00fcre\u00e7 haline gelebilir. Peki, bir geli\u015ftirme hesab\u0131ndaki S3 paketine y\u00fcklenen bir dosyan\u0131n, \u00fcretim hesab\u0131ndaki CodePipeline'\u0131 otomatik olarak nas\u0131l ba\u015flataca\u011f\u0131n\u0131 hi\u00e7 merak ettiniz mi?","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/capraz-hesap-s3-yuklemesi-ile-aws-codepipeline-tetikleme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\u00c7apraz Hesap S3 Y\u00fcklemesi ile AWS CodePipeline Tetikleme Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34299"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34299\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}