น่าเสียดายที่การทดลองของฉันคือการเห็นด้วยกับข้อสรุปของคุณแกรม ฉันต้องดิ้นรนกับสิ่งนี้มาระยะหนึ่งแล้ว แต่ไม่พบวิธีการคำนวณสตริงผ่าน Fn :: เข้าร่วมและเก็บรักษาไว้ในเทมเพลตในภายหลัง
ฉันจะแบ่งปันตัวอย่างทั่วไปให้กับคุณได้หรือไม่?
ณ วันที่ 2014-09-18 วิธีที่ซับซ้อนที่สุดในการจัดเก็บค่าสตริงสำหรับการใช้งานซ้ำในส่วนทรัพยากรจะเป็นการทำแผนที่ (ระดับที่สอง) ยังดีกว่าฉันสามารถคำนวณเงื่อนไขล่วงหน้าและกำหนดว่าจะใช้สตริงหรือไม่ แต่น่าเสียดายที่การจัดเก็บสตริงไม่ทำงาน
นี่คือตัวอย่างของการทำแผนที่ ...
"LoadBalancerBucketMap": {
"BucketName": {
"string": {
"Fn::Join": [
"-",
[
"mylb",
{
"Ref": "Environment"
},
"logs"
]
]
}
}
},
และนี่คือนิพจน์การเข้าถึงในทรัพยากร
"S3BucketName": {
"Fn::FindInMap": [
"LoadBalancerBucketMap",
"BucketName",
"string"
}
ในตัวอย่างนี้ Environment เป็นพารามิเตอร์สตริงตัวอักษรที่มีค่าเริ่มต้นที่สะดวก นั่นเป็นตัวอย่างที่ชัดเจนของการสร้างและการใช้สตริงอีกครั้ง แต่นี่คือสิ่งที่หน่วยประมวลผล CloudFormation พูดว่า ...
ข้อผิดพลาดการตรวจสอบเทมเพลต: ข้อผิดพลาดการจัดรูปแบบเทมเพลต: แอตทริบิวต์การแมปทั้งหมดจะต้องเป็นสตริงหรือรายการ
ดังนั้นฉันจึงแบ่งปันความคับข้องใจของคุณว่าดูเหมือนจะไม่มีทางในแม่แบบที่จะให้ผลของตัวแปรสตริงชั่วคราว
…เท่าที่ฉันเห็น แต่คำตอบที่คุณได้รับตอนแรกพูดตรงข้ามกับสิ่งนี้ (แม้ว่าจะไม่มีตัวอย่าง)
ดังนั้นหากใครมีตัวอย่างวิธีแก้ปัญหาพวกเขาสามารถแบ่งปันได้มั้ย