本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
演練:參考在另一個 AWS CloudFormation 堆疊中的資源輸出
若要將資源從一個 AWS CloudFormation 堆疊匯出到另一個堆疊,請建立跨堆疊參考。跨堆疊參考可讓您使用分層或服務導向的架構。而不是將所有資源包含在單個堆棧中,而是在單獨的堆棧中創建相關 AWS 資源; 然後您可以從其他堆棧引用所需的資源輸出。透過將跨堆疊參考限制在輸出,您可以控制堆疊中由其他堆疊參考的部分。
例如,您可能有一個使用 VPC、安全群組,以及公有 Web 應用程式子網路的網路堆疊,以及另一個公有 Web 應用程式堆疊。若要確保 Web 應用程式使用來自網路堆疊的安全群組和子網路,您可以建立跨堆疊參考,允許 Web 應用程式堆疊參考網路堆疊的資源輸出。使用跨堆疊參考,Web 應用程式堆疊的擁有者便不需要建立或維護網路規則或資產。
若要建立跨堆疊參考,請使用 Export
輸出欄位,標記要匯出的資源輸出值。然後,使用 Fn::ImportValue
內部函數匯入值。如需詳細資訊,請參閱 輸出 及 Fn::ImportValue。
必要條件
在開始本逐步解說之前,請檢查您是否具有 AWS Identity and Access Management (IAM) 許
注意
AWS CloudFormation 是一項免費服務。不過,我們會按照每個 AWS 資源的目前費率向您收取包含在堆疊中的資源費用。如需 AWS
定價的詳細資訊,請參閱各項產品的詳細資訊頁面
下列限制適用於跨堆疊參考:
-
每 AWS 帳戶個
Export
名稱在「區域」中都必須是唯一的。 -
您無法跨區域建立跨堆疊參考。您可以使用內部函數
Fn::ImportValue
,僅匯入已在同一區域內匯出的值。 -
對於輸出,
Export
的Name
屬性值無法使用依賴某個資源的Ref
或者GetAtt
函數。同樣,
ImportValue
函數不能包含依賴某個資源的Ref
或GetAtt
函數。 -
如果另一堆疊參考其中一個輸出,則無法刪除堆疊。
-
您無法修改或移除其他堆疊所參考的輸出值。
步驟 1:使用範例範本建立網路堆疊
網路堆疊包含您會在 Web 應用程式堆疊中使用的 VPC、安全群組和子網路。除了這些資源之外,網路堆疊也會建立網際網路閘道及路由表,以啟用公有存取。
注意
您必須在您建立 Web 應用程式堆疊前建立此堆疊。若您先建立 Web 應用程式堆疊,它將不會擁有安全群組或子網路。
建立網路堆疊
-
開啟 AWS CloudFormation 主控台
,然後選擇 Create stack (建立堆疊)。 -
選擇 Template is ready (範本就緒),然後在 Specify template (指定範本) 區段中選擇 Amazon S3 URL。複製以下 URL 並貼入文字方塊:
https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template
連結會提供網路堆疊範本的位置。若要查看堆疊建立的資源,請選擇連結,開啟範本。在輸出區段中,您可以查看範例範本匯出的網路資源。匯出資源的名稱會加上堆疊名稱的字首,以在您從其他堆疊匯出網路資源時進行區別。當使用者匯入網路資源時,他們便可以指定要匯入哪些堆疊的資源。
-
在檢閱範本後,選擇 Next (下一步)。
-
針對 Stack name (堆疊名稱),輸入
SampleNetworkCrossStack
,然後選擇 Next (下一步)。注意
記錄此堆疊的名稱。當您在啟動 Web 應用程式堆疊時,您將會需要堆疊名稱。
-
選擇下一步。針對此演練,您不需要新增標籤或指定進階設定。
-
確認堆疊名稱和範本 URL 正確,然後選擇 Create stack (建立堆疊)。
建立您的堆疊可能需 AWS CloudFormation 要幾分鐘的時間。等待所有資源成功建立,再繼續建立 Web 應用程式堆疊。
-
若要監控進度,請檢視堆疊事件。如需詳細資訊,請參閱 檢視 AWS CloudFormation 堆疊資料和資源 AWS Management Console。
步驟 2:使用範例範本建立 Web 應用程式堆疊
Web 應用程式堆疊會建立使用網路堆疊之安全群組和子網路的 EC2 執行個體。
注意
您必須在和網路堆疊相同的區域中建立此堆疊。
建立 Web 應用程式堆疊
-
開啟 AWS CloudFormation 主控台
,然後選擇 Create stack (建立堆疊)。 -
選擇 Template is ready (範本就緒),然後在 Specify template (指定範本) 區段中選擇 Amazon S3 URL。將下列網址複製並貼到文字方塊中 SampleWebAppCrossStack
:https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/ 連結會提供 Web 應用程式範本的位置。若要查看堆疊建立的資源,請選擇連結,開啟範本。在資源區段中,檢視 EC2 執行個體的屬性。您可以使用
Fn::ImportValue
函數查看從另一個堆疊匯入網路資源的方式。 -
在檢閱範本後,選擇 Next (下一步)。
-
在 Stack Name (堆疊名稱) 中輸入
SampleWebAppCrossStack
。在「參數」段落中,使用NetworkStackName參數的預設值,然後選擇「下一步」。範例範本會使用參數值指定要從哪個堆疊匯入值。
-
選擇下一步。針對此演練,您不需要新增標籤或指定進階設定。
-
確認堆疊名稱和範本 URL 正確,然後選擇 Create stack (建立堆疊)。
建立您的堆疊可能需 AWS CloudFormation 要幾分鐘的時間。
-
在堆疊建立之後,檢視其資源並注意執行個體 ID。如需檢視堆疊資源的詳細資訊,請參閱檢視 AWS CloudFormation 堆疊資料和資源 AWS Management Console。
若要驗證執行個體的安全群組和子網路,請在 Amazon EC2 主控台
檢視執行個體的屬性。若執行個體使用來自 SampleNetworkCrossStack
堆疊的安全群組和子網路,表示您已成功建立跨堆疊參考。使用主控台檢視堆疊輸出和範例網站 URL,驗證 Web 應用程式已在執行中。如需詳細資訊,請參閱 檢視 AWS CloudFormation 堆疊資料和資源 AWS Management Console。
步驟 3:清除您的資源
為了確保您不需要為不必要的服務支付費用,請刪除堆疊。
刪除堆疊
-
在主 AWS CloudFormation 控台中,選擇 SampleWebAppCrossStack 堆疊。
-
選擇 Actions (動作),然後選擇 Delete stack (刪除堆疊)。
-
在確認訊息中,選擇 Delete (刪除)。
-
刪除堆疊之後,對 SampleNetworkCrossStack 堆疊重複相同的步驟。
注意
等到 AWS CloudFormation 完全刪除 SampleWebAppCrossStack 堆棧。如果 EC2 執行個體仍在 VPC 中執行,則 AWS CloudFormation 不會刪除堆疊中的 SampleNetworkCrossStack VPC。
所有您先前建立的資源都已刪除。
使用此演練的範例範本建置您自己的跨參考堆疊。