AWS CloudFormation 組態屬性參考 - AWS CloudFormation

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

AWS CloudFormation 組態屬性參考

建立 CodePipeline 管線時,您可以使用提供者 AWS CloudFormation 身分將Deploy動作新增至管線。然後,您必須指定管線呼叫的 AWS CloudFormation 動作以及動作的設定。本主題說明 AWS CloudFormation 組態屬性。若要指定屬性,您可以使用 CodePipeline 主控台,或建立要用於 AWS CLI CodePipeline API、或 AWS CloudFormation 範本的JSON物件

組態屬性 (主控台)

主 CodePipeline 控台會顯示組態特性,並根據您選擇的動作模式指出所需的特性。

注意

當您建立管道時,您只能指定 Create or update a stack (建立或更新堆疊)Create or replace a change set (建立或取代變更組) 動作模式。Advanced (進階) 區段中的屬性只有在您編輯管道時才可使用。

Action mode (動作模式)

處理相關階段時 CodePipeline 呼叫的 AWS CloudFormation 動作。選擇下列其中一個動作模式:

  • Create or replace a change set (建立或取代變更組) 會根據您提交的堆疊名稱和範本建立變更組 (若不存在的話)。如果變更集存在,請將其 AWS CloudFormation 刪除,然後建立新的變更集。

  • Create or update a stack (建立或更新堆疊) 會在指定堆疊不存在時建立堆疊。如果堆疊存在,則 AWS CloudFormation 會更新堆疊。使用此動作可更新現有堆疊。 CodePipeline 不會替換堆棧。

  • Delete a stack (刪除堆疊) 刪除堆疊。若您指定不存在的堆疊,動作會成功完成,而不會刪除任何堆疊。

  • Execute a change set (執行變更組) 執行變更組。

  • Replace a failed stack (取代故障堆疊) 會在指定堆疊不存在時建立堆疊。如果堆疊存在且處於失敗狀態 (回報為ROLLBACK_COMPLETEROLLBACK_FAILEDCREATE_FAILEDDELETE_FAILED、或UPDATE_ROLLBACK_FAILED),則會 AWS CloudFormation 刪除堆疊,然後建立新堆疊。如果堆疊不是處於失敗狀態,請 AWS CloudFormation 更新它。使用此動作來取代故障的堆疊,無須復原或故障診斷。您通常會選擇此模式以進行測試。

Stack name (堆疊名稱)

與現有堆疊或您希望建立的堆疊建立關聯的名稱。名稱在您要建立堆疊的 AWS 區域中必須是唯一的。

注意

堆疊名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以字母字元開頭,且長度不可超過 128 個字元。

Change set name (變更組合名稱)

現有變更組或您希望為指定堆疊建立之新變更組的名稱。

Template (範本)

AWS CloudFormation 樣板檔案的位置,其格式如下ArtifactName::TemplateFileName

Template configuration (範本組態)

範本組態檔案的位置,其格式為 ArtifactName::TemplateConfigurationFileName。範本組態檔案可包含範本參數值、堆疊政策和標籤。若您在其中包含敏感資訊 (例如密碼),請限制此檔案的存取。如需詳細資訊,請參閱 AWS CloudFormation 工藝品

功能

對於包含特定資源的堆疊, AWS CloudFormation 可能會建立或更新這些資源的明確確認。例如,您必須指定堆疊範本是CAPABILITY_IAM否包含 AWS Identity and Access Management (IAM) 資源。如需詳細資訊,請參閱CreateStackAPI作業要求參數。

如果您的堆棧模板中有IAM資源,則必須指定此屬性。

您可以指定多個功能。

Role name (角色名稱)

在指定堆疊中的資源上作業時, AWS CloudFormation 假設IAM服務角色的名稱。

Output file name (輸出檔案名稱)

在「進階」段落中,您可以指定輸出檔案名稱,例如CreateStackOutput.json,在輸出人工因素執行指定的動作後 CodePipeline 新增至輸出人工因素。輸出成品包含具有 AWS CloudFormation 範本Outputs區段內容的JSON檔案。

如果您未指定名稱,則不 CodePipeline 會產生輸出成品。

Parameter overrides (參數覆寫)

參數是在您的範本中定義,而且可讓您在建立或更新堆疊時輸入自訂值。您可以在範本組態檔案中指定覆寫範本參數值的JSON物件。所有參數名稱都必須在堆疊範本中存在。如需詳細資訊,請參閱定義範本中的參數

注意

可儲存在屬性中的JSON物件大小上限為 1 KB。ParameterOverrides

我們建議您使用範本組態檔案來指定您大多數的參數值。僅使用參數覆寫來指定動態參數值。除非您執行管道,否則動態參數是未知的。

下列範例會使用參數覆寫函數定義 ParameterName 參數的值。該函數從 CodePipeline 輸入加工品中檢索值。如需參數覆寫函數的詳細資訊,請參閱搭 CodePipeline 配管線使用參數覆寫函數

{ "ParameterName" : { "Fn::GetParam" : ["ArtifactName", "config-file-name.json", "ParamName"]} }

配置屬性(JSON對象)

當您指定 CloudFormation 作為階段動作的提供者時,請在 Configuration 屬性中定義以下屬性。使用 AWS CLI、 CodePipelineAPI或 AWS CloudFormation 範本的JSON物件。如需範例,請參閱 逐步解說:建置管線以用於測試和生產堆疊AWS CloudFormation 組態屬性參考

ActionMode

處理相關階段時所 CodePipeline 呼叫的 AWS CloudFormation 動作。僅指定下列其中一個動作模式:

  • CHANGE_SET_EXECUTE 執行變更集。

  • CHANGE_SET_REPLACE 根據您提交的堆疊名稱和範本建立變更組 (若不存在的話)。如果變更集存在,請將其 AWS CloudFormation 刪除,然後建立新的變更集。

  • CREATE_UPDATE 在指定堆疊不存在時建立堆疊。若堆疊存在,則 AWS CloudFormation 會更新堆疊。使用此動作可更新現有堆疊。 CodePipeline 不會替換堆棧。

  • DELETE_ONLY 刪除堆疊。若您指定不存在的堆疊,動作會成功完成,而不會刪除任何堆疊。

  • REPLACE_ON_FAILURE 在指定堆疊不存在時建立堆疊。如果堆疊存在且處於失敗狀態 (回報為ROLLBACK_COMPLETEROLLBACK_FAILEDCREATE_FAILEDDELETE_FAILED、或UPDATE_ROLLBACK_FAILED),則會 AWS CloudFormation 刪除堆疊,然後建立新堆疊。如果堆疊不是處於失敗狀態,請 AWS CloudFormation 更新它。使用此動作來自動取代故障的堆疊,無須復原或故障診斷。您通常會選擇此模式以進行測試。

此屬性為必要。

Capabilities

對於包含特定資源的堆疊, AWS CloudFormation 可能會建立或更新這些資源的明確確認。例如,您必須指定堆疊範本是CAPABILITY_IAM否包含 AWS Identity and Access Management (IAM) 資源。如需詳細資訊,請參閱CreateStackAPI作業要求參數。

此屬性為條件式。如果您的堆棧模板中有IAM資源,則必須指定此屬性。

您可以指定多個功能。下列範例會將CAPABILITY_IAMCAPABILITY_AUTO_EXPAND屬性新增至範本:

YAML
configuration: ActionMode: CHANGE_SET_REPLACE Capabilities: CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND ChangeSetName: pipeline-changeset RoleArn: CloudFormation_Role_ARN StackName: my-pipeline-stack TemplateConfiguration: 'my-pipeline-stack::template-configuration.json' TemplatePath: 'my-pipeline-stack::template-export.yml'
JSON
"configuration": { "ActionMode": "CHANGE_SET_REPLACE", "Capabilities": "CAPABILITY_IAM,CAPABILITY_AUTO_EXPAND", "ChangeSetName": "pipeline-changeset", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-pipeline-stack", "TemplateConfiguration": "my-pipeline-stack::template-configuration.json", "TemplatePath": "my-pipeline-stack::template-export.yml" }
ChangeSetName

現有變更組或您希望為指定堆疊建立之新變更組的名稱。

針對下列動作模式,此屬性為必要:CHANGE_SET_REPLACECHANGE_SET_EXECUTE。針對其他所有動作模式,可忽略此屬性。

OutputFileName

輸出檔案的名稱,例如CreateStackOutput.json。 CodePipeline 在執行指定的動作後,將檔案新增至輸出人工因素。輸出成品包含具有 AWS CloudFormation 範本Outputs區段內容的JSON檔案。

此屬性為選擇性。如果您未指定名稱,則不 CodePipeline 會產生輸出成品。

ParameterOverrides

參數是在您的範本中定義,而且可讓您在建立或更新堆疊時輸入自訂值。您可以在範本組態檔案中指定覆寫範本參數值的JSON物件。所有參數名稱都必須在堆疊範本中存在。如需詳細資訊,請參閱定義範本中的參數

下列範例會將 InstanceTypeKeyName 參數覆寫新增至範本:

YAML
configuration: ActionMode: CHANGE_SET_REPLACE Capabilities: CAPABILITY_NAMED_IAM ChangeSetName: pipeline-changeset ParameterOverrides: '{"InstanceType": "t2.small","KeyName": "my-keypair"}' RoleArn: CloudFormation_Role_ARN StackName: my-pipeline-stack TemplateConfiguration: 'my-pipeline-stack::template-configuration.json' TemplatePath: 'my-pipeline-stack::template-export.yml'
JSON
"configuration": { "ActionMode": "CHANGE_SET_REPLACE", "Capabilities": "CAPABILITY_NAMED_IAM", "ChangeSetName": "pipeline-changeset", "ParameterOverrides": "{\"InstanceType\": \"t2.small\",\"KeyName\": \"my-keypair\"}", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-pipeline-stack", "TemplateConfiguration": "my-pipeline-stack::template-configuration.json", "TemplatePath": "my-pipeline-stack::template-export.yml" }
注意

可儲存在ParameterOverrides屬性中的JSON物件大小上限為 1 KB。

我們建議您使用範本組態檔案來指定您大多數的參數值。僅使用參數覆寫來指定動態參數值。除非您執行管道 , 否則動態參數值都是未知的。

下列範例會使用參數覆寫函數定義 ParameterName 參數的值。該函數從 CodePipeline 輸入加工品中檢索值。如需參數覆寫函數的詳細資訊,請參閱搭 CodePipeline 配管線使用參數覆寫函數

{ "ParameterName" : { "Fn::GetParam" : ["ArtifactName", "config-file-name.json", "ParamName"]} }

此屬性為選擇性。

RoleArn

IAM服務角色的 Amazon 資源名稱 (ARN),該角色在堆疊中的資源上運作時 AWS CloudFormation 採用。

針對下列動作模式,此屬性為必要:CREATE_UPDATEREPLACE_ON_FAILUREDELETE_ONLYCHANGE_SET_REPLACE。執行變更集時,不會套用 RoleArn。如果您不使用 CodePipeline 來建立變更集,請確定變更集或堆疊具有關聯的角色。

StackName

現有堆疊或您希望建立之堆疊的名稱。

針對所有動作模式,此屬性為必要。

TemplateConfiguration

TemplateConfiguration 是範本組態檔案。您將檔案包含在此動作的輸入成品中。範本組態檔案名稱遵循此格式:

Artifactname::TemplateConfigurationFileName

Artifactname是顯示在中的輸入人工因素名稱 CodePipeline。例如,來源階段的成品名稱為 SourceArtifacttest-configuration.json 檔案名稱建立 TemplateConfiguration 名稱,如此範例所顯示:

"TemplateConfiguration": "SourceArtifact::test-configuration.json"

範本組態檔案可包含範本參數值和堆疊政策。若您在其中包含敏感資訊 (例如密碼),請限制此檔案的存取。如需範例範本組態檔,請參閱 AWS CloudFormation 工藝品

此屬性為選擇性。

TemplatePath

TemplatePath表示 AWS CloudFormation 範本檔案。您將檔案包含在此動作的輸入成品中。該檔案名稱遵循此格式:

Artifactname::TemplateFileName

Artifactname是顯示在中的輸入人工因素名稱 CodePipeline。例如,來源階段的成品名稱為 SourceArtifacttemplate.yaml 檔案名稱建立 TemplatePath 名稱,如此範例所顯示:

"TemplatePath": "SourceArtifact::template.yaml"

針對下列動作模式,此屬性為必要:CREATE_UPDATEREPLACE_ON_FAILURECHANGE_SET_REPLACE。針對其他所有動作模式,可忽略此屬性。

另請參閱

以下相關資源可協助您使用這些參數。

  • 如需有關中 AWS CloudFormation 動作參數的詳細資訊 CodePipeline,請參閱《AWS CodePipeline 使用指南》中的AWS CloudFormation動作組態參考。

  • 如需動作提供者的範例範本值 (例如 Owner 欄位或 configuration 欄位),請參閱 AWS CodePipeline User Guide (《 使用者指南》) 中的 Action structure reference (動作結構參考)。

  • 若要以YAML或JSON格式下載範例管線堆疊範本,請參閱AWS CodePipeline 使用指南 AWS CloudFormation的建立管線下的教學課程。

  • 如需範例範本組態檔,請參閱 AWS CloudFormation 成品