演練:參考在另一個 AWS CloudFormation 堆疊中的資源輸出 - AWS CloudFormation

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

演練:參考在另一個 AWS CloudFormation 堆疊中的資源輸出

若要將資源從一個 AWS CloudFormation 堆疊匯出到另一個堆疊,請建立跨堆疊參考。跨堆疊參考可讓您使用分層或服務導向的架構。而不是將所有資源包含在單個堆棧中,而是在單獨的堆棧中創建相關 AWS 資源; 然後您可以從其他堆棧引用所需的資源輸出。透過將跨堆疊參考限制在輸出,您可以控制堆疊中由其他堆疊參考的部分。

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

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

必要條件

在開始本逐步解說之前,請檢查您是否具有 AWS Identity and Access Management (IAM) 許可以使用下列所有服務:Amazon VPC、Amazon EC2 和 AWS CloudFormation.

注意

AWS CloudFormation 是一項免費服務。不過,我們會按照每個 AWS 資源的目前費率向您收取包含在堆疊中的資源費用。如需 AWS 定價的詳細資訊,請參閱各項產品的詳細資訊頁面

下列限制適用於跨堆疊參考:

  • 每 AWS 帳戶個Export名稱在「區域」中都必須是唯一的。

  • 您無法跨區域建立跨堆疊參考。您可以使用內部函數 Fn::ImportValue,僅匯入已在同一區域內匯出的值。

  • 對於輸出,ExportName 屬性值無法使用依賴某個資源的 Ref 或者 GetAtt 函數。

    同樣,ImportValue 函數不能包含依賴某個資源的 RefGetAtt 函數。

  • 如果另一堆疊參考其中一個輸出,則無法刪除堆疊。

  • 您無法修改或移除其他堆疊所參考的輸出值。

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

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

注意

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

建立網路堆疊
  1. 開啟 AWS CloudFormation 主控台,然後選擇 Create stack (建立堆疊)

  2. 選擇 Template is ready (範本就緒),然後在 Specify template (指定範本) 區段中選擇 Amazon S3 URL。複製以下 URL 並貼入文字方塊:https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template

    連結會提供網路堆疊範本的位置。若要查看堆疊建立的資源,請選擇連結,開啟範本。在輸出區段中,您可以查看範例範本匯出的網路資源。匯出資源的名稱會加上堆疊名稱的字首,以在您從其他堆疊匯出網路資源時進行區別。當使用者匯入網路資源時,他們便可以指定要匯入哪些堆疊的資源。

  3. 在檢閱範本後,選擇 Next (下一步)

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

    注意

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

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

  6. 確認堆疊名稱和範本 URL 正確,然後選擇 Create stack (建立堆疊)

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

  7. 若要監控進度,請檢視堆疊事件。如需詳細資訊,請參閱 檢視 AWS CloudFormation 堆疊資料和資源 AWS Management Console

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

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

注意

您必須在和網路堆疊相同的區域中建立此堆疊。

建立 Web 應用程式堆疊
  1. 開啟 AWS CloudFormation 主控台,然後選擇 Create stack (建立堆疊)

  2. 選擇 Template is ready (範本就緒),然後在 Specify template (指定範本) 區段中選擇 Amazon S3 URL。將下列網址複製並貼到文字方塊中 SampleWebAppCrossStack:https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/

    連結會提供 Web 應用程式範本的位置。若要查看堆疊建立的資源,請選擇連結,開啟範本。在資源區段中,檢視 EC2 執行個體的屬性。您可以使用 Fn::ImportValue 函數查看從另一個堆疊匯入網路資源的方式。

  3. 在檢閱範本後,選擇 Next (下一步)

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

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

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

  6. 確認堆疊名稱和範本 URL 正確,然後選擇 Create stack (建立堆疊)

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

  7. 在堆疊建立之後,檢視其資源並注意執行個體 ID。如需檢視堆疊資源的詳細資訊,請參閱檢視 AWS CloudFormation 堆疊資料和資源 AWS Management Console

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

    使用主控台檢視堆疊輸出和範例網站 URL,驗證 Web 應用程式已在執行中。如需詳細資訊,請參閱 檢視 AWS CloudFormation 堆疊資料和資源 AWS Management Console

步驟 3:清除您的資源

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

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

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

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

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

    注意

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

    所有您先前建立的資源都已刪除。

使用此演練的範例範本建置您自己的跨參考堆疊。