AWS CloudFormation 組態屬性參考 - AWS CloudFormation

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

AWS CloudFormation 組態屬性參考

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

組態屬性 (主控台)

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 更新堆疊。使用此動作來更新現有的 stacks。 CodePipeline 不會取代堆疊。

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

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

  • Replace a failed stack (取代故障堆疊) 會在指定堆疊不存在時建立堆疊。如果堆疊存在且處於失敗狀態 ROLLBACK_FAILED(報告為 ROLLBACK_COMPLETEDELETE_FAILED、、 或 UPDATE_ROLLBACK_FAILED)CREATE_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 可能建立或更新這些資源。例如,若您的堆疊範本包含 AWS Identity and Access Management (IAM) 資源,您必須指定 CAPABILITY_IAM。如需詳細資訊,請參閱 CreateStack API 操作請求參數。

若您在您的堆疊範本中具有 IAM 資源,您必須指定此屬性。

您可以指定多個功能。

Role name (角色名稱)

在指定堆疊中的資源上操作時 AWS CloudFormation ,擔任IAM的服務角色名稱。

Output file name (輸出檔案名稱)

進階區段中,您可以指定輸出檔案名稱,例如 CreateStackOutput.json,在輸出成品執行指定動作後,將其 CodePipeline 新增至輸出成品。輸出成品包含一個JSON檔案,其中包含 AWS CloudFormation 範本 Outputs區段的內容。

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

Parameter overrides (參數覆寫)

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

注意

物件的大小上限為 1 KBJSON,可存放在 ParameterOverrides 屬性中。

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

下列範例會使用參數覆寫函數定義 ParameterName 參數的值。函數會從 CodePipeline 輸入成品擷取值。如需參數覆寫函數的詳細資訊,請參閱搭配 CodePipeline 管道使用參數覆寫函數

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

組態屬性 (JSON 物件)

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

ActionMode

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

  • CHANGE_SET_EXECUTE 執行變更集。

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

  • CREATE_UPDATE 在指定堆疊不存在時建立堆疊。若堆疊存在,則 AWS CloudFormation 會更新堆疊。使用此動作來更新現有的 stacks。 CodePipeline 不會取代堆疊。

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

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

此屬性為必要。

Capabilities

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

此屬性為條件式。若您在您的堆疊範本中具有 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 新增至輸出成品。輸出成品包含一個JSON檔案,其中包含 AWS CloudFormation 範本 Outputs區段的內容。

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

ParameterOverrides

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

下列範例會將 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 Resource Name (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。針對其他所有動作模式,可忽略此屬性。

另請參閱

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