教學課程:使用 AWS CloudFormation StackSets 部署動作建立管道 - AWS CodePipeline

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

教學課程:使用 AWS CloudFormation StackSets 部署動作建立管道

在本教學課程中,您會使用 AWS CodePipeline 主控台建立管道,其中包含建立堆疊集和建立堆疊執行個體的部署動作。管道執行時,範本會建立堆疊集,並建立和更新部署堆疊集的執行個體。

管理堆疊集許可的方式有兩種:自我管理和受 AWS管 IAM 角色。本教學課程提供具有自我管理權限的範例。

為了最有效地使用 Stacksets CodePipeline,您應該對背後的概念以 AWS CloudFormation StackSets 及它們的工作方式有清晰的了解。請參閱《AWS CloudFormation 使用者指南》中的StackSets 概念

必要條件

對於堆疊集作業,您可以使用兩個不同的帳戶:管理帳戶和目標帳戶。您可以在管理員帳戶中建立堆疊集。您可以建立屬於目標帳戶中堆疊集的個別堆疊。

使用您的管理員帳戶建立系統管理員角色
若要在目標帳戶中建立服務角色

步驟 1:上傳範例 AWS CloudFormation 範本和參數檔案

為堆疊集範本和參數檔案建立來源值區。下載範例 AWS CloudFormation 範本檔案、設定參數檔案,然後壓縮檔案,然後再上傳到 S3 來源儲存貯體。

注意

在上傳到 S3 來源儲存貯體之前,請務必先壓縮來源檔案,即使唯一的來源檔案是範本也一樣。

若要建立 S3 來源儲存貯體
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/

  2. 選擇建立儲存貯體

  3. 儲存貯體名稱中,輸入儲存貯體的名稱。

    在「區域」中,選擇您要在其中建立管線的「區域」。選擇建立儲存貯體

  4. 建立儲存貯體後,會顯示成功橫幅。選擇 Go to bucket details (前往儲存貯體詳細資訊)

  5. Properties (屬性) 標籤上,選擇 Versioning (版本控制)。選擇 Enable versioning (啟用版本控制),然後選擇 Save (儲存)

建立 AWS CloudFormation 樣板檔的步驟
  1. 下載下列範例範本檔案,以產生堆疊集的 CloudTrail 組態:https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml

  2. 儲存檔案為 template.yml

若要建立 parameters.txt 檔案
  1. 使用部署的參數建立檔案。參數是您要在運行時在堆棧中更新的值。下列範例檔案會更新堆疊集的範本參數,以啟用記錄驗證和全域事件。

    [ { "ParameterKey": "EnableLogFileValidation", "ParameterValue": "true" }, { "ParameterKey": "IncludeGlobalEvents", "ParameterValue": "true" } ]
  2. 儲存檔案為 parameters.txt

若要建立 accounts.txt 檔案
  1. 使用您要建立執行個體的帳戶建立檔案,如下列範例檔案所示。

    [ "111111222222","333333444444" ]
  2. 儲存檔案為 accounts.txt

若要建立和上傳來源檔案
  1. 將檔案合併為單一 ZIP 檔案。您的文件在 ZIP 文件中看起來應該是這樣的。

    template.yml parameters.txt accounts.txt
  2. 將 ZIP 檔案上傳到您的 S3 儲存貯體。此檔案是由「建立管線」精靈針對中的部署動作所建立的來源人工因素 CodePipeline。

步驟 2:建立管道

在本節中,您可以採取下列動作建立管道:

  • 具有 S3 來源動作的來源階段,其中來源成品是您的範本檔案和任何支援的來源檔案。

  • 具有建立 AWS CloudFormation 堆疊集合的部署動作的部署階段。

  • 具有 AWS CloudFormation 堆疊執行個體部署動作的部署階段,可在目標帳戶內建立堆疊和執行個體。

欲使用 CloudFormationStackSet 動作建立配管
  1. 請登入 AWS Management Console 並開啟 CodePipeline 主控台,網址為 http://console.aws.amazon.com/codesuite/codepipeline/home

  2. Welcome (歡迎) 頁面、Getting started (入門) 頁面、或者 Pipelines (管道) 頁面上,選擇 Create pipeline (建立管道)

  3. Step 1: Choose pipeline settings (步驟 1:選擇管道設定)Pipeline name (管道名稱) 中,輸入 MyStackSetsPipeline

  4. 管線類型中,針對本教學課程的目的選擇 V1。您也可以選擇 V2;但是請注意,管道類型在特性和價格上有所不同。如需詳細資訊,請參閱 管線類型

  5. 在 [服務角色] 中,選擇 [新增服務角色] CodePipeline 以允許在 IAM 中建立服務角色。

  6. 在「Artifact」存放區中,保留預設值。

    注意

    這不是原始碼的來源儲存貯體。這是管道的成品存放區。每個管道都需要有個別成品存放區,例如 S3 儲存貯體。建立或編輯管道時,管線區域中必須有一個人工因素儲存貯體,而每個執行動作的「 AWS 區域」都必須有一個成品儲存貯體。

    如需詳細資訊,請參閱 輸入和輸出成品CodePipeline 配管結構參照

    選擇下一步

  7. Step 2: Add source stage (步驟 2:新增來源階段) 頁面的 Source provider (來源提供者) 中,選擇 Amazon S3 (Amazon S3)

  8. 在儲存體中,輸入您為此教學課程建立的 S3 來源儲存貯體,例如BucketName。在 S3 物件金鑰中,輸入 ZIP 檔案的檔案路徑和檔案名稱,例如MyFiles.zip

  9. 選擇下一步

  10. Step 3: Add build stage (步驟 3:新增建置階段) 中,選擇 Skip build stage (跳過建置階段),然後再次選擇 Skip (跳過) 來接受警告訊息​。

    選擇下一步

  11. Step 4: Add deploy stage (步驟 4:新增部署階段) 中:

    1. 部署提供者中,選擇AWS CloudFormation 堆疊集

    2. 堆疊集名稱中,輸入堆疊集的名稱。這是該模板創建的堆棧集的名稱。

      注意

      記下您的堆疊集名稱。當您將第二個 StackSets 部署動作新增至管道時,您將使用它。

    3. 範本路徑中,輸入您上載範本檔案的人工因素名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容SourceArtifact

      SourceArtifact::template.yml
    4. 部署目標中,輸入您上傳帳戶檔案的成品名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容SourceArtifact

      SourceArtifact::accounts.txt
    5. 部署目標中 AWS 區域,輸入一個區域以部署初始堆疊執行個體,例如us-east-1

    6. 展開部署選項。在參數中,輸入您上載參數檔案的人工因素名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容SourceArtifact

      SourceArtifact::parameters.txt

      若要將參數輸入為常值輸入而非檔案路徑,請輸入下列內容:

      ParameterKey=EnableLogFileValidation,ParameterValue=true ParameterKey=IncludeGlobalEvents,ParameterValue=true
    7. 在 [功能] 中,選擇 [能力 _IAM] 和 [功能名稱]。

    8. 在 [權限] 模型中,選擇 [自我管理]。

    9. 失敗公差百分比中,輸入20

    10. 最大並行百分比中,輸入25

    11. 選擇下一步

    12. 選擇 Create pipeline (建立管道)。您的管道隨即顯示。

    13. 允許您的管道執行。

步驟 3:檢視初始部署

檢視初始部署的資源和狀態。確認部署成功建立堆疊集之後,您可以將第二個動作新增至部署階段。

若要檢視資源
  1. 請在以下位置開啟 CodePipeline 主控台。 https://console.aws.amazon.com/codepipeline/

  2. Pipelines (管道) 下,選擇您的管道,然後選擇 View (檢視)。本圖顯示您的管道來源和部署階段。

  3. 選擇管道中 AWS CloudFormation CloudFormationStackSet動作的動作。 AWS CloudFormation 主控台中會顯示堆疊集的範本、資源和事件。

  4. 在左側導覽面板中,選擇StackSets。在清單中,選擇新的堆疊組。

  5. 選擇堆疊執行個體索引標籤。確認您提供的每個帳戶都是在 us-east-1 區域中建立一個堆疊執行個體。確認每個堆疊執行個體的狀態為CURRENT

步驟 4:新增 CloudFormationStackInstances動作

在管道中建立下一個動作, AWS CloudFormation StackSets 以便建立剩餘的堆疊執行個體。

在管道中建立下一個動作
  1. 請在以下位置開啟 CodePipeline 主控台。 https://console.aws.amazon.com/codepipeline/

    Pipelines (管道) 下,選擇您的管道,然後選擇 View (檢視)。本圖顯示您的管道來源和部署階段。

  2. 選擇編輯管道。配管會以 「編輯」 模式顯示。

  3. 在「部」階段中,選擇 「編輯」

  4. 在「AWS CloudFormation 堆疊集合部署」動作下,選擇「新增動作群組」。

  5. 「編輯動作」 頁面上,新增動作詳細資訊:

    1. 動作名稱中,輸入動作的名稱。

    2. 動作提供者中,選擇AWS CloudFormation 堆疊執行個體

    3. 在「輸入人工因素」下選擇SourceArtifact

    4. 堆疊集名稱中,輸入堆疊集的名稱。這是您在第一個動作中提供的堆疊集的名稱。

    5. 部署目標中,輸入您上傳帳戶檔案的成品名稱和檔案路徑。例如,使用預設來源人工因素名稱輸入下列內容SourceArtifact

      SourceArtifact::accounts.txt
    6. 部署目標中 AWS 區域,輸入用於部署剩餘堆疊執行個體的區域us-east-2eu-central-1如下所示:

      us-east2, eu-central-1
    7. 失敗公差百分比中,輸入20

    8. 最大並行百分比中,輸入25

    9. 選擇儲存

    10. 。手動發行「變更」。您更新的管道會在「部署」階段中顯示兩個動作。

步驟 5:檢視部署的堆疊集資源

您可以檢視堆疊集部署的資源和狀態。

若要檢視資源
  1. 請在以下位置開啟 CodePipeline 主控台。 https://console.aws.amazon.com/codepipeline/

  2. 在「配」下,選擇您的管線,然後選擇「檢視」。本圖顯示您的管道來源和部署階段。

  3. 選擇管道中 AWS CloudFormation AWS CloudFormation Stack Instances動作的動作。 AWS CloudFormation 主控台中會顯示堆疊集的範本、資源和事件。

  4. 在左側導覽面板中,選擇StackSets。在清單中,選擇您的堆疊組合。

  5. 選擇堆疊執行個體索引標籤。確認您提供的每個帳戶的所有剩餘堆疊執行個體都已在預期的區域中建立或更新。確認每個堆疊執行個體的狀態為CURRENT

步驟 6:對堆疊集進行更新

對您的堆疊集進行更新,並將更新部署到執行個體。在此範例中,您也會變更要指定進行更新的部署目標。不屬於更新的執行個體會移至過期狀態。

  1. 請在以下位置開啟 CodePipeline 主控台。 https://console.aws.amazon.com/codepipeline/

  2. 在「配」下,選擇您的配管,然後選擇「編輯」。在「部」階段中,選擇 「編輯」

  3. 選擇此選項可在管線中編輯「AWS CloudFormation 堆疊集合」動作。在說明中,寫入現有的描述與堆疊集的新描述。

  4. 選擇此選項可在管線中編輯「AWS CloudFormation 堆疊執行個體」動作。在部署目標中 AWS 區域,刪除建立動作時輸入的us-east-2值。

  5. 儲存變更。選擇 [發行變更] 以執行管道。

  6. 在中開啟您的動作 AWS CloudFormation。選擇「StackSet 資訊」標籤。在StackSet 說明中,確認已顯示新描述。

  7. 選擇堆疊執行個體索引標籤。在狀態下,確認 us-east-2 中堆疊執行個體的狀態為。OUTDATED