ใน cloudformation เป็นไปได้หรือไม่ที่จะสร้างสตริงที่ใช้ซ้ำได้?


14

ฉันมีสตริงที่ถูกสร้างขึ้นจากตัวแปรจำนวนหนึ่งที่ฉันใช้สำหรับสิ่งต่าง ๆ เช่นแท็กและชื่อโฮสต์

มีวิธีสร้างสตริงที่ใช้ซ้ำได้ซึ่งฉันสามารถอ้างอิงถึงแม้ว่าเทมเพลตได้หรือไม่

ความคิดใด ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชมมาก แก้ไข: ตัวอย่างจะผ่านใน 2 พารามิเตอร์เช่น ProjectName และสภาพแวดล้อมที่เข้าร่วมพวกเขา

"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]

และใช้ผลลัพธ์ในหลาย ๆ ที่


คุณกำลังพูดถึงพารามิเตอร์หรือไม่? docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/ …
Edwin

ฉันคิดว่าการเปลี่ยนแปลงเป็นสิ่งที่ AWS ให้สำหรับสิ่งนี้ น่าเศร้าที่พวกเขายังไม่สนับสนุนนามแฝงของ YAML
jgomo3

คำตอบ:


7

น่าเสียดายที่การทดลองของฉันคือการเห็นด้วยกับข้อสรุปของคุณแกรม ฉันต้องดิ้นรนกับสิ่งนี้มาระยะหนึ่งแล้ว แต่ไม่พบวิธีการคำนวณสตริงผ่าน Fn :: เข้าร่วมและเก็บรักษาไว้ในเทมเพลตในภายหลัง

ฉันจะแบ่งปันตัวอย่างทั่วไปให้กับคุณได้หรือไม่?

ณ วันที่ 2014-09-18 วิธีที่ซับซ้อนที่สุดในการจัดเก็บค่าสตริงสำหรับการใช้งานซ้ำในส่วนทรัพยากรจะเป็นการทำแผนที่ (ระดับที่สอง) ยังดีกว่าฉันสามารถคำนวณเงื่อนไขล่วงหน้าและกำหนดว่าจะใช้สตริงหรือไม่ แต่น่าเสียดายที่การจัดเก็บสตริงไม่ทำงาน

นี่คือตัวอย่างของการทำแผนที่ ...

    "LoadBalancerBucketMap": {
        "BucketName": {
            "string": {
                "Fn::Join": [
                    "-",
                    [
                        "mylb",
                        {
                            "Ref": "Environment"
                        },
                        "logs"
                    ]
                ]
            }
        }
    },

และนี่คือนิพจน์การเข้าถึงในทรัพยากร

                "S3BucketName": {
                    "Fn::FindInMap": [
                        "LoadBalancerBucketMap",
                        "BucketName",
                        "string"
                    }

ในตัวอย่างนี้ Environment เป็นพารามิเตอร์สตริงตัวอักษรที่มีค่าเริ่มต้นที่สะดวก นั่นเป็นตัวอย่างที่ชัดเจนของการสร้างและการใช้สตริงอีกครั้ง แต่นี่คือสิ่งที่หน่วยประมวลผล CloudFormation พูดว่า ...

ข้อผิดพลาดการตรวจสอบเทมเพลต: ข้อผิดพลาดการจัดรูปแบบเทมเพลต: แอตทริบิวต์การแมปทั้งหมดจะต้องเป็นสตริงหรือรายการ

ดังนั้นฉันจึงแบ่งปันความคับข้องใจของคุณว่าดูเหมือนจะไม่มีทางในแม่แบบที่จะให้ผลของตัวแปรสตริงชั่วคราว

…เท่าที่ฉันเห็น แต่คำตอบที่คุณได้รับตอนแรกพูดตรงข้ามกับสิ่งนี้ (แม้ว่าจะไม่มีตัวอย่าง)

ดังนั้นหากใครมีตัวอย่างวิธีแก้ปัญหาพวกเขาสามารถแบ่งปันได้มั้ย


2

คุณสามารถใช้พารามิเตอร์หรือการแมปเพื่อจัดเก็บสตริงที่คุณสามารถใช้ในแม่แบบของคุณ


1
ใช้งานได้กับสตริงคงที่เท่านั้น OP ขอเฉพาะสตริงที่คำนวณซึ่งดูเหมือนจะเป็นไปไม่ได้เลย
Joe

0

น่าเสียดายที่ฉันพบว่ามันเป็นไปไม่ได้ที่จะทำสิ่งที่ฉันพยายามจะทำ มันไม่ได้ช่วย แต่มี


0

เราสร้างชื่อสแต็ค CloudFormation ของเราอย่างแน่นอน{ProjectName}-{Environment}ในระหว่างaws cloudformation deployนั้น คุณพิจารณาอนุสัญญาการตั้งชื่อนี้สำหรับชื่อสแต็กของคุณหรือไม่

{ "Fn:Sub": "${AWS::StackName}" }หลังจากนั้นคุณก็สามารถอ้างอิงเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.