CloudFormation'da mevcut kaynakları nasıl yeniden kullanabilirim?


32

CloudFormation şablonumda kaynak olarak S3 kovası var. İle DeletionPolicyayarlanmış Retain. Bu, beklendiği gibi çalışır, yığını silerken, gerçekten de kepçeyi tutar. Ancak, yığını yeniden oluşturmaya çalıştığımda, aynı kepçe oluşturmaya çalışırken oluşturma işlemi başarısız oluyor ve hata iletisinin zaten var olduğundan şikayet ediyor.

Zaten var olan bir kaynağı yeniden oluşturmayı denemek için CloudFormation şablonuma ne eklemeliyim?

Şablonumun alakalı parçası aşağıdaki gibidir:

  "Resources": {
    "SomeS3Bucket" : {
      "Type" : "AWS::S3::Bucket",
      "DeletionPolicy" : "Retain",
      "Properties": {
          "BucketName": "SomeS3Bucket"
          }
      }

ilgi dışında, kova ne için kullanılır? Belki ne yapmaya çalıştığınıza bağlı olarak başka bir yol daha vardır.
Drew Khoury

Yanıtlar:


15

Bir yaklaşım, mevcut bir kepçenin kullanılması gerektiğini belirtmek için CloudFormation şablonuna bir giriş parametresi eklemektir.

Kova oluşturmak için şablondaki Koşul cümleciklerini, yalnızca parametre gerekli olduğunu gösterdiğinde kullanın.


4
Şimdiye kadar +1, gördüğüm tek yol bu. Yine de cevap olarak işaretlememek, çünkü bunu otomatikleştirmenin bir yolunu arıyorum.
vartec

1
Olmaması gereken bir yol olmalı: “CloudFormer” nasıl çalışır?
jgomo3

7

CloudFormation, hangi kaynakların hangi yığınlarda yer aldığıyla ilişkili olduğunu takip etmek için "aws:" önekine sahip etiketleri kullanır - bu, ne ekleyeceğinizi / sileceğinizi / güncelleyeceğinize karar vermeden önce bir şablonla karşılaştırmak için kullandığı "canlı" durumdur.

Bir kullanıcı olarak, bu etiketleri ekleyemez, düzenleyemez veya silemezsiniz.

Dolayısıyla, mevcut kaynaklarınız bu etiketlere sahip değilse veya bu etiketler için doğru değerlere sahip değilse, yeni yığının parçası olarak kabul edilmezler ve bunu değiştirmenin bir yolunu göremiyorum.


2

Ben de bunu otomatikleştirmeye çalışıyorum, görünüşe göre sadece Cloudformation şablonu ile yapılamıyor. Düşündüğüm süreç şöyle olur:

  1. başka bir geçici kova oluştur temp-$originalbucketname
  2. orada tüm içeriği kovadan kovaya kopyalayın
  3. tüm içeriği kaldır $originalbucketname
  4. $ originalbucketname öğesini şimdi boş bırakın
  5. Cloudformation yığınını oluşturun (kepçeyi yeniden oluşturur)
  6. içeriği geri kopyala
  7. Kaldır temp-$originalbucketname

Bu çok ilgili bir işlemdir, kova büyüklüğüne bağlı olarak, adımların çoğu O (n) tuş sayısı ile olduğu için saatlerce kolayca sürebilir.

Cloudformation’in AWS otomasyonunun temel katmanı olduğunu düşünebilirsiniz, ancak bence tüm hizmetleri için Bizans API’lerini bir araya getiren sadece (oldukça sınırlı) bir canavar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.