08/28 2020

如何讓 AWS CloudFormation中有相同父系堆疊的巢狀堆疊間互相傳遞參數

AWS快問快答

隨著您的基礎架構逐漸成長,可能出現需要在每個範本中宣告相同的元件。您可以分離這些常見的元件,為他們建立專用的範本,如此一來,您就可以混合及搭配不同的範本,使用巢狀堆疊來建立單一整合堆疊。

本篇將說明如何以巢狀(nested)方式使用複數 CloudFormation 組合出基礎架構時,在同一個父系堆疊(parent stack)的巢狀堆疊(nested stack)間互相傳遞參數。

簡易說明

1. 一個 nested Stack B 要使用同一個 Parent 的 nested Stack A 資源,必須先為 Stack A 的資源新增 Outputs,並於 Stack B 增加要接收的參數。

2. 在 Parent stack 使用 Fn::GetAtt 將 Stack A 的 Output傳給 Stack B 的 Parameter。

AWS Parent Stack

設定步驟

1.1 Stack A 是一個簡易的 VPC 架構

AWS Stack A是一個簡易的VPC架構

1.2 Stack B 是一個基本 Security Group template

2. 建立 Security 需要 VPC 的 ID,因此在 Stack A 編輯 VPC Outputs

在Stack A編輯VPC Outputs
在Stack A編輯VPC Outputs

3. 在 Stack B 新增 Parameter

在Stack B新增Parameter
在Stack B新增Parameter
在Stack B新增Parameter
在Stack B新增Parameter

4.  在父系堆疊使用 Fn::GetAtt 將 Stack A 的 Output 傳給 Stack B 的 Parameter

在父系堆疊使用 FnGetAtt
在父系堆疊使用 FnGetAtt
在父系堆疊使用 FnGetAtt
在父系堆疊使用 FnGetAtt

這樣就大功告成啦! 是不是清楚簡單又快速呢?

請持續鎖定 Nextlink 架構師專欄,以獲得最新專業資訊喔!

若您有任何 AWS 需求,歡迎與我們聯繫!