參考另一個 CloudFormation堆棧中的資源輸出 - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

參考另一個 CloudFormation堆棧中的資源輸出

本逐步解說說明如何參考另一個堆疊中某個 CloudFormation 堆疊的輸出,以建立更多模組化且可重複使用的範本。

而不是將所有資源包含在單個堆棧中,而是創建相關的 AWS 資源在單獨的堆棧中。然後,您可以從其他堆棧引用所需的資源輸出。透過將跨堆疊參考限制在輸出,您可以控制堆疊中由其他堆疊參考的部分。

例如,您可能有一個網路堆疊VPC,其中包含一個安全群組,以及公用 Web 應用程式的子網路,以及個別的公用 Web 應用程式堆疊。若要確保 Web 應用程式使用來自網路堆疊的安全群組和子網路,您可以建立跨堆疊參考,允許 Web 應用程式堆疊參考網路堆疊的資源輸出。使用跨堆疊參考,Web 應用程式堆疊的擁有者便不需要建立或維護網路規則或資產。

若要建立跨堆疊參考,請使用 Export 輸出欄位,標記要匯出的資源輸出值。然後,使用 Fn::ImportValue 內部函數匯入值。如需詳細資訊,請參閱從部署 CloudFormation的堆疊取得匯出的輸出

注意

CloudFormation 是一項免費服務。不過,您需要支付 AWS 您以當前速率包含在堆棧中的每個資源。如需關於 AWS 定價,請參閱每個產品的詳細信息頁面

步驟 1:使用範例範本建立網路堆疊

在開始本逐步解說之前,請檢查您是否IAM擁有使用下列所有服務的許可:Amazon VPC EC2、Amazon 和 CloudFormation.

網路堆疊包含您將在 VPC Web 應用程式堆疊中使用的、安全性群組和子網路。除了這些資源之外,網路堆疊也會建立網際網路閘道及路由表,以啟用公有存取。

您必須在您建立 Web 應用程式堆疊前建立此堆疊。若您先建立 Web 應用程式堆疊,它將不會擁有安全群組或子網路。

堆棧模板可從以下位置獲得URL:https://s3.amazonaws.com/cloudformation-examples/用戶指南/跨堆棧/SampleNetworkCrossStack. 模板。若要查看堆疊建立的資源,請選擇連結,開啟範本。在此Outputs區段中,您可以看到範例範本匯出的網路資源。匯出資源的名稱會加上堆疊名稱的字首,以在您從其他堆疊匯出網路資源時進行區別。當使用者匯入網路資源時,他們便可以指定要匯入哪些堆疊的資源。

建立網路堆疊
  1. 開啟CloudFormation 主控台,然後選擇 [建立堆疊]。

  2. 選擇範本已就緒,然後在「指定範本」區段中選擇 Amazon S3 URL

  3. URL將以下內容複製並貼到文字方塊中:https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template

  4. 選擇 Next (下一步)

  5. 針對 Stack name (堆疊名稱),輸入 SampleNetworkCrossStack,然後選擇 Next (下一步)

    注意

    記錄此堆疊的名稱。當您在啟動 Web 應用程式堆疊時,您將會需要堆疊名稱。

  6. 選擇 Next (下一步)。針對此演練,您不需要新增標籤或指定進階設定。

  7. 請確定堆疊名稱和範本URL正確無誤,然後選擇 [建立堆疊]。

    建立您的堆疊可能需 CloudFormation 要幾分鐘的時間。等待所有資源成功建立,再繼續建立 Web 應用程式堆疊。

  8. 若要監控進度,請檢視堆疊事件。如需詳細資訊,請參閱監控堆疊進度

步驟 2:使用範例範本建立 Web 應用程式堆疊

Web 應用程式堆疊會建立使用網路堆疊中安全性群組和子網路的EC2執行個體。

您必須在同一個堆棧中創建此堆棧 AWS 區域 作為網絡堆棧。

堆棧模板可從以下位置獲得URL:https://s3.amazonaws.com/cloudformation-examples/用戶指南/跨堆棧/SampleWebAppCrossStack. 模板。若要查看堆疊建立的資源,請選擇連結,開啟範本。在Resources區段中,檢視EC2例證的屬性。您可以使用 Fn::ImportValue 函數查看從另一個堆疊匯入網路資源的方式。

建立 Web 應用程式堆疊
  1. 開啟主CloudFormation 控台,然後選擇 [建立堆疊]。

  2. 選擇範本已就緒,然後在「指定範本」區段中選擇 Amazon S3 URL

  3. URL將以下內容複製並貼到文字方塊中:https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template

  4. 選擇 Next (下一步)

  5. Stack Name (堆疊名稱) 中輸入 SampleWebAppCrossStack。在「參數」段落中,使用NetworkStackName參數的預設值,然後選擇「下一步」。

    範例範本會使用參數值指定要從哪個堆疊匯入值。

  6. 選擇 Next (下一步)。針對此演練,您不需要新增標籤或指定進階設定。

  7. 請確定堆疊名稱和範本URL正確無誤,然後選擇 [建立堆疊]。

    建立您的堆疊可能需 CloudFormation 要幾分鐘的時間。

第 3 步:驗證堆棧按設計工作

在堆疊建立之後,檢視其資源並注意執行個體 ID。如需檢視堆疊資源的詳細資訊,請參閱從 CloudFormation 主控台檢視堆疊資訊

若要驗證執行個體的安全群組和子網路,請在 Amazon EC2 主控台中檢視執行個體的屬性。若執行個體使用來自 SampleNetworkCrossStack 堆疊的安全群組和子網路,表示您已成功建立跨堆疊參考。

使用主控台檢視堆疊輸出,並使用範例網站URL來確認 Web 應用程式是否正在執行。如需詳細資訊,請參閱從 CloudFormation 主控台檢視堆疊資訊

步驟 4:清除您的資源

為了確保您不需要為不必要的服務支付費用,請刪除堆疊。

刪除堆疊
  1. 在主 CloudFormation 控台中,選擇SampleWebAppCrossStack堆疊。

  2. 選擇 Actions (動作),然後選擇 Delete stack (刪除堆疊)

  3. 在確認訊息中,選擇 Delete (刪除)

  4. 刪除堆疊之後,對SampleNetworkCrossStack堆疊重複相同的步驟。

    注意

    等到 CloudFormation 完全刪除SampleWebAppCrossStack堆棧。如果EC2執行個體仍在中執行VPC,則 CloudFormation 不會刪除SampleNetworkCrossStack堆疊VPC中的。