本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用 AWS CloudFormation StackSets 部署動作建立管道
在本教學課程中,您會使用 AWS CodePipeline 主控台建立管道,其中包含建立堆疊集和建立堆疊執行個體的部署動作。管道執行時,範本會建立堆疊集,並建立和更新部署堆疊集的執行個體。
重要
在建立管道的過程中,客戶提供的 S3 成品儲存貯體將用 CodePipeline 於成品。(這與用於 S3 來源動作的儲存貯體不同。) 如果 S3 成品儲存貯體與管道帳戶位於不同的帳戶中,請確定 S3 成品儲存貯體所擁有的 S3 成品儲存貯體 AWS 帳戶 是安全且可靠的。
有兩種方法可以管理堆疊集的權限:自我管理和託管角 AWS色IAM。本教學課程提供具有自我管理權限的範例。
為了最有效地使用 Stacksets CodePipeline,您應該對背後的概念以 AWS CloudFormation StackSets 及它們的工作方式有清晰的了解。請參閱《AWS CloudFormation 使用者指南》中的StackSets 概念。
主題
必要條件
對於堆疊集作業,您可以使用兩個不同的帳戶:管理帳戶和目標帳戶。您可以在管理員帳戶中建立堆疊集。您可以建立屬於目標帳戶中堆疊集的個別堆疊。
使用您的管理員帳戶建立系統管理員角色
-
依照設定堆疊集作業的基本權限中的指示進行。您的角色必須命名
AWSCloudFormationStackSetAdministrationRole
。
若要在目標帳戶中建立服務角色
-
在信任管理員帳戶的目標帳戶中建立服務角色。依照設定堆疊集作業的基本權限中的指示進行。您的角色必須命名
AWSCloudFormationStackSetExecutionRole
。
步驟 1:上傳範例 AWS CloudFormation 範本和參數檔案
為堆疊集範本和參數檔案建立來源值區。下載範例 AWS CloudFormation 範本檔案、設定參數檔案,然後壓縮檔案,然後再上傳到 S3 來源儲存貯體。
注意
在上傳到 S3 ZIP 來源儲存貯體之前,請確定來源檔案,即使唯一的來源檔案是範本也一樣。
若要建立 S3 來源儲存貯體
登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/
。 -
選擇建立儲存貯體。
-
在儲存貯體名稱中,輸入儲存貯體的名稱。
在「區域」中,選擇您要在其中建立管線的「區域」。選擇建立儲存貯體。
-
建立儲存貯體後,會顯示成功橫幅。選擇 Go to bucket details (前往儲存貯體詳細資訊)。
-
在 Properties (屬性) 標籤上,選擇 Versioning (版本控制)。選擇 Enable versioning (啟用版本控制),然後選擇 Save (儲存)。
建立 AWS CloudFormation 樣板檔的步驟
-
下載下列範例範本檔案,以產生堆疊集的 CloudTrail 組態:https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml
-
儲存檔案為
template.yml
。
若要建立 parameters.txt 檔案
-
使用部署的參數建立檔案。參數是您要在運行時在堆棧中更新的值。下列範例檔案會更新堆疊集的範本參數,以啟用記錄驗證和全域事件。
[ { "ParameterKey": "EnableLogFileValidation", "ParameterValue": "true" }, { "ParameterKey": "IncludeGlobalEvents", "ParameterValue": "true" } ]
-
儲存檔案為
parameters.txt
。
若要建立 accounts.txt 檔案
-
使用您要建立執行個體的帳戶建立檔案,如下列範例檔案所示。
[ "111111222222","333333444444" ]
-
儲存檔案為
accounts.txt
。
若要建立和上傳來源檔案
-
將檔案合併為單一ZIP檔案。您的文件在文ZIP件中看起來應該是這樣的。
template.yml parameters.txt accounts.txt
-
將ZIP檔案上傳到 S3 儲存貯體。此檔案是由「建立管線」精靈針對中的部署動作所建立的來源人工因素 CodePipeline。
步驟 2:建立管道
在本節中,您可以採取下列動作建立管道:
-
具有 S3 來源動作的來源階段,其中來源成品是您的範本檔案和任何支援的來源檔案。
-
具有建立 AWS CloudFormation 堆疊集合的部署動作的部署階段。
-
具有 AWS CloudFormation 堆疊執行個體部署動作的部署階段,可在目標帳戶內建立堆疊和執行個體。
欲使用 CloudFormationStackSet 動作建立配管
請登入 AWS Management Console 並開啟 CodePipeline 主控台,網址為 http://console.aws.amazon.com/codesuite/codepipeline/home
。 -
在 Welcome (歡迎) 頁面、Getting started (入門) 頁面、或者 Pipelines (管道) 頁面上,選擇 Create pipeline (建立管道)。
-
在 Step 1: Choose pipeline settings (步驟 1:選擇管道設定) 的 Pipeline name (管道名稱) 中,輸入
MyStackSetsPipeline
。 -
在管線類型中,針對本教學課程的目的選擇 V1。您也可以選擇 V2;但是請注意,管道類型在特性和價格上有所不同。如需詳細資訊,請參閱管線類型。
-
在 [服務角色] 中,選擇 [新增服務角色] CodePipeline 以允許在中建立服務角色IAM。
-
在「Artifact」存放區中,保留預設值。
注意
這不是原始碼的來源儲存貯體。這是管道的成品存放區。每個管道都需要有個別成品存放區,例如 S3 儲存貯體。建立或編輯管道時,管線區域中必須有一個人工因素儲存貯體,而每個執行動作的「 AWS 區域」都必須有一個成品儲存貯體。
如需詳細資訊,請參閱 輸入和輸出成品 和 CodePipeline 配管結構參照。
選擇 Next (下一步)。
-
在 Step 2: Add source stage (步驟 2:新增來源階段) 頁面的 Source provider (來源提供者) 中,選擇 Amazon S3 (Amazon S3)。
-
在儲存貯體中,輸入您為此教學課程建立的 S3 來源儲存貯體,例如
BucketName
。在 S3 物件金鑰中,輸入檔案的檔案路徑和ZIP檔案名稱,例如MyFiles.zip
。 -
選擇 Next (下一步)。
-
在 Step 3: Add build stage (步驟 3:新增建置階段) 中,選擇 Skip build stage (跳過建置階段),然後再次選擇 Skip (跳過) 來接受警告訊息。
選擇 Next (下一步)。
-
在 Step 4: Add deploy stage (步驟 4:新增部署階段) 中:
-
在部署提供者中,選擇AWS CloudFormation 堆疊集。
-
在堆疊集名稱中,輸入堆疊集的名稱。這是該模板創建的堆棧集的名稱。
注意
記下您的堆疊集名稱。當您將第二個 StackSets 部署動作新增至管道時,您將使用它。
-
在範本路徑中,輸入您上載範本檔案的人工因素名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容
SourceArtifact
。SourceArtifact::template.yml
-
在部署目標中,輸入您上傳帳戶檔案的成品名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容
SourceArtifact
。SourceArtifact::accounts.txt
-
在部署目標中 AWS 區域,輸入一個區域以部署初始堆疊執行個體,例如
us-east-1
。 -
展開部署選項。在參數中,輸入您上載參數檔案的人工因素名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容
SourceArtifact
。SourceArtifact::parameters.txt
若要將參數輸入為常值輸入而非檔案路徑,請輸入下列內容:
ParameterKey=EnableLogFileValidation,ParameterValue=true ParameterKey=IncludeGlobalEvents,ParameterValue=true
-
在 [功能] 中,選擇 [CAPABILITY_] IAM 和 [CAPABILITYNAMED_] IAM。
-
在 [權限] 模型中,選擇 [SELF_] MANAGED。
-
在失敗公差百分比中,輸入
20
。 -
在最大並行百分比中,輸入
25
。 -
選擇 Next (下一步)。
-
選擇 Create pipeline (建立管道)。您的管道隨即顯示。
-
允許您的管道執行。
-
步驟 3:檢視初始部署
檢視初始部署的資源和狀態。確認部署成功建立堆疊集之後,您可以將第二個動作新增至部署階段。
若要檢視資源
在開啟 CodePipeline 主控台https://console.aws.amazon.com/codepipeline/
。 -
在 Pipelines (管道) 下,選擇您的管道,然後選擇 View (檢視)。本圖顯示您的管道來源和部署階段。
-
選擇管道中 AWS CloudFormation CloudFormationStackSet動作的動作。 AWS CloudFormation 主控台中會顯示堆疊集的範本、資源和事件。
-
在左側導覽面板中,選擇StackSets。在清單中,選擇新的堆疊組。
-
選擇堆疊執行個體索引標籤。確認您提供的每個帳戶都是在 us-east-1 區域中建立一個堆疊執行個體。確認每個堆疊執行個體的狀態為
CURRENT
。
步驟 4:新增 CloudFormationStackInstances動作
在管道中建立下一個動作, AWS CloudFormation StackSets 以便建立剩餘的堆疊執行個體。
在管道中建立下一個動作
-
在開啟 CodePipeline 主控台https://console.aws.amazon.com/codepipeline/
。 在 Pipelines (管道) 下,選擇您的管道,然後選擇 View (檢視)。本圖顯示您的管道來源和部署階段。
-
選擇編輯管道。配管會以 「編輯」 模式顯示。
-
在「部署」階段中,選擇 「編輯」。
-
在「AWS CloudFormation 堆疊集合部署」動作下,選擇「新增動作群組」。
-
在 「編輯動作」 頁面上,新增動作詳細資訊:
-
在動作名稱中,輸入動作的名稱。
-
在動作提供者中,選擇AWS CloudFormation 堆疊執行個體。
-
在「輸入人工因素」下選擇SourceArtifact。
-
在堆疊集名稱中,輸入堆疊集的名稱。這是您在第一個動作中提供的堆疊集的名稱。
-
在部署目標中,輸入您上傳帳戶檔案的成品名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容
SourceArtifact
。SourceArtifact::accounts.txt
-
在部署目標中 AWS 區域,輸入用於部署剩餘堆疊執行個體的區域
us-east-2
,eu-central-1
如下所示:us-east2, eu-central-1
-
在失敗公差百分比中,輸入
20
。 -
在最大並行百分比中,輸入
25
。 -
選擇 Save (儲存)。
-
。手動發行「變更」。您更新的管道會在「部署」階段中顯示兩個動作。
-
步驟 5:檢視部署的堆疊集資源
您可以檢視堆疊集部署的資源和狀態。
若要檢視資源
在開啟 CodePipeline 主控台https://console.aws.amazon.com/codepipeline/
。 -
在「配管」下,選擇您的管線,然後選擇「檢視」。本圖顯示您的管道來源和部署階段。
-
選擇管道中 AWS CloudFormation
AWS CloudFormation Stack Instances
動作的動作。 AWS CloudFormation 主控台中會顯示堆疊集的範本、資源和事件。 -
在左側導覽面板中,選擇StackSets。在清單中,選擇您的堆疊組合。
-
選擇堆疊執行個體索引標籤。確認您提供的每個帳戶的所有剩餘堆疊執行個體都已在預期的區域中建立或更新。確認每個堆疊執行個體的狀態為
CURRENT
。
步驟 6:對堆疊集進行更新
對您的堆疊集進行更新,並將更新部署到執行個體。在此範例中,您也會變更要指定進行更新的部署目標。不屬於更新的實例會移至過期狀態。
在開啟 CodePipeline 主控台https://console.aws.amazon.com/codepipeline/
。 -
在「配管」下,選擇您的配管,然後選擇「編輯」。在「部署」階段中,選擇 「編輯」。
-
選擇此選項可在管線中編輯「AWS CloudFormation 堆疊集合」動作。在說明中,寫入現有的描述與堆疊集的新描述。
-
選擇此選項可在管線中編輯「AWS CloudFormation 堆疊執行個體」動作。在部署目標中 AWS 區域,刪除建立動作時輸入的
us-east-2
值。 -
儲存變更。選擇 [發行變更] 以執行管道。
-
在中開啟您的動作 AWS CloudFormation。選擇「StackSet 資訊」標籤。在StackSet 說明中,確認已顯示新描述。
-
選擇堆疊執行個體索引標籤。在狀態下,確認 us-east-2 中堆疊執行個體的狀態為。
OUTDATED