CloudFormation

Çok Katmanlı Bir Web Uygulaması
circle-info

IAC (Infra-as-a-Code): Altyapı işlerini tek tek yapmaktansa kod ile taslak oluşturup bu süreci otomatikleştirmektir.

AWS CloudFormation, bulut ortamınızdaki tüm altyapı kaynakları için ortak bir dil sağlar. CloudFormation, tüm coğrafyalarda ve hesaplarda otomatik ve güvenli bir şekilde modellemek ve devreye almak için basit bir metin dosyası kullanmanıza izin verir. Bu dosya bulut ortamınız için tek bir gerçek kaynak olarak hizmet vermektedir.

İstediğiniz hizmet veya uygulama mimarileri için JSON veya YAML formatında template’ler oluşturabilir ve AWS CloudFormation’ın bu template’leri hizmetlerin veya uygulamaların hızlı ve güvenilir bir şekilde kurulması için kullanılmasını sağlayabilirsiniz (“stack” olarak adlandırılır). Ayrıca stack’leri gerektiğinde kolayca güncelleyebilir veya çoğaltabilirsiniz.

Örnek:

Template v1.0

  • XXX isimli security group yarat, 80 portunu dış dünyadan erişilebilir yap

  • 1 adet t2.micro sanal makine yarat

  • XXX isimli security group ile ilişkilendir

  • KKK isimli key pair ile ilişkilendir

  • YYY adından bir S3 bucket yarat

  • ZZZ adından bir DynamoDB tablosu yarat

Stack Yapısı
Örnek JSON Template

CloudFormation Template Bölümleri

  • Version: Template’e versiyon numarası atayarak gelişimini takip etmeni ve birden fazla versiyonunu yaratmana imkân sağlar.

  • Description: Template ile ilgili bir açıklama girmek istediğin zaman kullanılır. Örneğin bu template neden oluşturuldu, amacı nedir, sonucunda ne olacak tarzı yazılı bir açıklama eklenir.

  • MetaData: Template’in temel özelliklerini ve template hakkında ek bilgileri tutar. Örneğin AWS::CloudFormation::Designer attribute’u ile bu template’i kimin oluşturduğu bilgisi saklanabilir.

  • Parameters: Yaratılacak kaynaklarla ilgili geçilmesi gereken seçenekleri bu kısımda belirlersin. Örneğin EC2 sanal makine yaratırken isim, Key Pair seçimi gibi parametreler burada tanımlanır.

  • Mappings: Yaratılan kaynakların diğer AWS kaynakları ve özellikleriyle eşleştirilmesini sağlar. Örneğin hangi bölgede hangi AMI ID’nin kullanılacağını burada belirleyebilirsin.

  • Conditions: Şartları belirtir. Eğer seçildiğinde bu kaynak oluşturulsun gibi koşullu mantıkları buraya yazarsın.

  • Outputs: Stack yaratımı sonunda kullanıcıya geri bildirmek istediğin bilgileri belirtirsin. Örneğin EC2’nun IP adresini göstermek gibi.

  • Resources: Her template’de mutlaka bulunması gereken tek alandır. Template ile yaratılmasını istediğin kaynakları burada belirlersin.

StackSet: Birden fazla Region için tanımlanabilen Stack'lerdir.

CloudFormation’da alarm atayabilir ve bu alarma bağlı olarak otomatik aksiyonlar alabilirsin.

Timeout: Stack çalışmaya başladıktan sonra belirtilen süre içinde tamamlanmazsa ne yapılacağını belirler.

Rollback on Failure: Timeout’tan önce veya hata durumunda, stack’in o ana kadar oluşturduğu kaynakların silinip silinmeyeceğini belirler.

  • Açık (Enabled): Hata durumunda veya timeout’ta oluşturulan tüm kaynaklar otomatik olarak silinir.

  • Kapalı (Disabled): Hata olsa bile o ana kadar oluşturulan kaynaklar korunur.

Stack Policy: Hangi rollerin veya kullanıcıların stack üzerinde güncelleme (update) yapabileceğini belirleyen bir güvenlik politikasıdır.

Last updated