AWS CloudFormation'da Koşullu Özellik


10

Bazı EC2 örnekleri oluşturmak için bir AWS CloudFormation şablonumuz var. Ancak bunlardan bazıları belirli bir PrivateIpAddressşey gerektiriyor ve bunu şablona nasıl dahil edeceğimizi anlamaya çalışıyorum.

Şimdilik bir şablon parametresi PrivateIPve bir Koşul oluşturuyorum RequestedPrivateIP. Çok uzak çok iyi. Ancak bunu AWS::EC2::Instancekaynak özelliklerine nasıl ekleyeceğimi bilemiyorum . Bunu denedim:

    "PrivateIpAddress": {
        "Fn::If": [ "RequestedPrivateIP",
            { "Ref": "PrivateIP" },
            ""                            <-- This doesn't work
        ]
    },

Ama bu RequestedPrivateIPyanlış olduğunda başarısız olur

CREATE_FAILED    AWS::EC2::Instance    NodeInstance    Invalid addresses: []

İsteğe bağlı olarak statik Özel IP atama konusunda herhangi bir fikir ve belirtilmezse dinamik bir IP ayarlamak için AWS'ye bırakın?

Yanıtlar:



0

O gibi görünüyor beri PrivateIpAddressçok değer veren olarak boş bir dize desteklemiyor mülkiyet, Gözlerinde iki ayrı kaynak yaratmak öneririm AWS::EC2::Instance. Bunlardan biri sizin durumunuza RequestedPrivateIPsahipken, diğeri aynı koşula sahip olmalı, ancak reddedilmelidir, örn DidNotRequestPrivateIP.

"InstanceWithPrivateIp": {
    "Type": "AWS::EC2::Instance",
    "Condition": "RequestedPrivateIP",
    "Properties": {
        [...]
    }
},

"InstanceWithoutPrivateIp": {
    "Type": "AWS::EC2::Instance",
    "Condition": "DidNotRequestPrivateIP",
    "Properties": {
        [...]
    }
}

1
Bu gerçekten bir seçenek ama yapmaya hevesli olmadığım KURU (Kendinizi Tekrarlama) ilkesini ciddi şekilde ihlal ediyor. Ayrıca - örneğin ELB'nin bir SSL sertifikasının ayarlanıp ayarlanmadığına bağlı olarak HTTPS'yi dinleyip dinlemeyeceği ayarlanabilecek veya belirlenmeyecek başka özellikler de vardır. Tüm bildirimleri küçük bir değişiklikle tekrarlayarak tüm bu küçük varyasyonları yakalamaya çalışmak, hızla devasa bir şekilde sürdürülemez bir şablona yol açacaktır. Ama yine de öneri için teşekkürler.
MLu

1
@MLu ile tamamen aynı fikirdeyim, tekrar etmek asla eğlenceli değil. Ancak, CloudFormation ile yaşadığım deneyimden, bazen kendinizi tekrarlamak zorundasınız. Gördüğüm diğer çözüm, yukarıda bahsettiğim koşullara dahil ettiğiniz alt kümeler oluşturmaktır ve daha sonra bu alt kümelere bu koşul için özel şeyler yaparsınız.
Bazze
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.