本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
「AWS CDK 部署」動作 YAML
以下是部AWS CDK 署動作的YAML定義。若要瞭解如何使用此動作,請參閱使用工作流程部署 AWS CDK 應用程式。
此動作定義存在於更廣泛的工作流程定義檔案中的區段。如需有關此檔案的詳細資訊,請參閱工作流程YAML定義。
注意
接下來的大多數YAML屬性在可視化編輯器中都具有相應的 UI 元素。若要查詢 UI 元素,請使用 Ctrl+F。 元素將與其關聯的YAML屬性一起列示。
# The workflow definition starts here.
# See 頂層屬性 for details.
Name: MyWorkflow
SchemaVersion: 1.0
Actions:
# The action definition starts here.
CDKDeploy_nn
:
Identifier: aws/cdk-deploy@v2
DependsOn:
- CDKBootstrap
Compute:
Type: EC2 | Lambda
Fleet: fleet-name
Timeout: timeout-minutes
Inputs:
# Specify a source or an artifact, but not both.
Sources:
- source-name-1
Artifacts:
- artifact-name
Outputs:
Artifacts:
- Name: cdk_artifact
Files:
- "cdk.out/**/*"
Environment:
Name: environment-name
Connections:
- Name: account-connection-name
Role: iam-role-name
Configuration:
StackName: my-cdk-stack
Region: us-west-2
Tags: '{"key1": "value1", "key2": "value2"}'
Context: '{"key1": "value1", "key2": "value2"}'
CdkCliVersion: version
CdkRootPath: directory-containing-cdk.json-file
CfnOutputVariables: '["CnfOutputKey1","CfnOutputKey2","CfnOutputKey3"]'
CloudAssemblyRootPath: path-to-cdk.out
CDKDeploy
(必要)
指定動作的名稱。所有動作名稱在工作流程中都必須是唯一的。動作名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (_)。不允許空格。您無法使用引號來啟用動作名稱中的特殊字元和空格。
預設:CDKDeploy_nn
。
對應的 UI:組態索引標籤/動作名稱
Identifier
(CDKDeploy
/Identifier)
(必要)
識別動作。除非您要變更版本,否則請勿變更此屬性。如需詳細資訊,請參閱指定要使用的動作版本。
注意
指定aws/cdk-deploy@v2
會導致動作在 2024 年 3 月映像上執行,其中包括更新的工具,例如 Node.js 18。指定aws/cdk-deploy@v1
會導致動作在 2022 年 11 月映像上執行,其中包含較舊的工具,例如 Node.js 16。
預設:aws/cdk-deploy@v2
。
對應的使用者介面:工作流程圖/CDKDeploy_nn/ aws/cdk 部署 @v2 標籤
DependsOn
(CDKDeploy
/DependsOn)
(選用)
指定必須順利執行才能執行AWS CDK 部署動作的動作或動作群組。我們建議在DependsOn
屬性中指定AWS CDK 引導操作,如下所示:
CDKDeploy: Identifier: aws/cdk-deploy@v2 DependsOn: - CDKBootstrap
注意
啟動載入是部署應用程式的必要先決條件。 AWS CDK 如果您未在工作流程中包含 AWS CDK Bootstrap 動作,則必須在執行部署動作之前找到另一種部署啟動程 AWS CDK 序堆疊的AWS CDK 方法。如需詳細資訊,請參閱 使用工作流程部署 AWS CDK 應用程式 中的 新增「AWS CDK 部署」動作。
如需有關「依賴」功能的詳細資訊,請參閱。定序動作
對應的用戶界面:輸入選項卡/取決於- 可選
Compute
(CDKDeploy
/Compute)
(選用)
用來執行工作流程動作的計算引擎。您可以在工作流程層級或動作層級指定計算,但不能同時指定兩者。在工作流程層級指定時,計算組態會套用至工作流程中定義的所有動作。在工作流程層級,您也可以在相同的執行個體上執行多個動作。如需詳細資訊,請參閱跨動作共用運算。
對應的用戶界面:無
Type
(CDKDeploy
/Compute/Type)
(如果包含Compute,則為必填)
運算引擎的類型。您可以使用下列其中一個值:
-
EC2(可視化編輯器)或
EC2
(YAML編輯器)優化了動作運行期間的靈活性。
-
Lambda(可視化編輯器)或
Lambda
(YAML編輯器)優化動作啟動速度。
如需運算類型的更多相關資訊,請參閱運算類型。
對應的使用者介面:組態索引標籤/進階-選用/運算類型
Fleet
(CDKDeploy
/Compute/Fleet)
(選用)
指定將執行工作流程或工作流程動作的機器或叢集。對於隨需叢集,當動作開始時,工作流程會佈建所需的資源,並在動作完成時銷毀機器。隨選艦隊的範例:Linux.x86-64.Large
、Linux.x86-64.XLarge
。如需隨選叢集的詳細資訊,請參閱隨需機群屬性。
透過佈建的叢集,您可以設定一組專用機器來執行工作流程動作。這些機器保持閒置狀態,可立即處理動作。如需已佈建叢集的詳細資訊,請參閱佈建的機群屬性。
如Fleet
果省略,預設值為Linux.x86-64.Large
。
對應的使用者介面:組態索引標籤/進階-選用/運算叢集
Timeout
(CDKDeploy
/Timeout)
(必要)
指定動作在 CodeCatalyst 結束動作之前可執行的時間長度 (以分鐘為單位) 或小時和分鐘 (視覺化編輯器)。YAML最小值為 5 分鐘,最大值在中說明中的工作流程配額 CodeCatalyst。預設逾時與逾時上限相同。
對應的 UI:配置選項卡/超時- 可選
Inputs
(CDKDeploy
/Inputs)
(選用)
本Inputs
節定義了工作流程執行期間所CDKDeploy
需的資料。
注意
每個AWS CDK 部署動作只允許一個輸入 (來源或成品)。
對應的 UI:輸入索引標籤
Sources
(CDKDeploy
/Inputs/Sources)
(如果您要部署的 AWS CDK 應用程序存儲在源存儲庫中,則為必填)
如果您的 AWS CDK 應用程序存儲在源存儲庫中,請指定該源存儲庫的標籤。部AWS CDK 署動作會在開始部署程序之前,在此儲存庫中合成應用程式。目前,唯一支援的標籤是WorkflowSource
。
如果您的 AWS CDK 應用程序不包含在源存儲庫中,則它必須位於由另一個操作生成的成品中。
如需來源的詳細資訊,請參閱 將來源儲存庫連線至工作流程。
對應的用戶界面:輸入選項卡/源- 可選
Artifacts - input
(CDKDeploy
/Inputs/Artifacts)
(如果您要部署的 AWS CDK 應用程序存儲在上一個操作的輸出成品中,則為必填)
如果您的 AWS CDK 應用程序包含在上一個操作生成的成品中,請在此處指定該成品。部AWS CDK 署動作會在開始部署程序之前,將指定成品中的應用程式合成為 CloudFormation範本。如果您的 AWS CDK 應用程序不包含在成品中,則它必須位於源存儲庫中。
如需人工因素的詳細資訊 (包括範例),請參閱在動作之間共用成品和檔案。
對應的 UI:輸入選項卡/加工品- 可選
Outputs
(CDKDeploy
/Outputs)
(選用)
定義在工作流程執行期間由動作輸出的資料。
對應的 UI:輸出索引標籤
Artifacts - output
(CDKDeploy
/Outputs/Artifacts
(選用)
指定動作產生的人工因素。您可以參考這些成品做為其他動作中的輸入。
如需人工因素的詳細資訊 (包括範例),請參閱在動作之間共用成品和檔案。
對應的 UI:輸出選項卡/成品
Name
(CDKDeploy
/Outputs/Artifacts/Name)
(如果包含Artifacts - output,則為必填)
指定成品的名稱,該成品將包含在執行時期由AWS CDK 部署動作所合成的 AWS CloudFormation 範本。預設值為 cdk_artifact
。如果您未指定成品,則動作會合成該範本,但不會將其儲存在成品中。請考慮將合成的範本儲存在成品中,以便保留其記錄,以供測試或疑難排解之用。
對應的使用者介面:輸出索引標籤/人工因素/新增人工因素名稱
Files
(CDKDeploy
/Outputs/Artifacts/Files)
(如果包含Artifacts - output,則為必填)
指定要包含在人工因素中的檔案。您必須指"cdk.out/**/*"
定包含 AWS CDK 應用程序的綜合 AWS CloudFormation 模板。
注意
cdk.out
是儲存合成檔案的預設目錄。如果您在cdk.json
檔案中指定了輸出目錄以外cdk.out
的目錄,請在此處指定該目錄,而不是cdk.out
。
對應的 UI:輸出選項卡/人造物/添加人造物/構建生成的文件
Environment
(CDKDeploy
/Environment)
(必要)
指定要與動作搭配使用的 CodeCatalyst 環境。該動作連接到所選環境中VPC指定的 AWS 帳戶 和可選的 Amazon。該動作使用環境中指定的預設IAM角色連接到 AWS 帳戶,並使用 Amazon VPC 連接中指定的IAM角色連接到 Amazon VPC。
注意
如果預設IAM角色沒有動作所需的權限,您可以將動作配置為使用其他角色。如需詳細資訊,請參閱變更動作IAM的角色。
若要取得有關環境的更多資訊,請參閱部署至 AWS 帳戶 和 VPCs和建立環境。
對應的 UI:配置選項卡/環境
Name
(CDKDeploy
/Environment/Name)
(如果包含Environment,則為必填)
指定您要與動作相關聯的現有環境名稱。
對應的 UI:配置選項卡/環境
Connections
(CDKDeploy
/Environment/Connections)
(在較新版本的動作中為選用項目;舊版本為必要)
指定要與動作相關聯的帳號連線。您最多可以在下指定一個帳戶連線Environment
。
如果您未指定帳戶連線:
-
此動作會使用在 CodeCatalyst 主控台環境中指定的 AWS 帳戶 連線和預設IAM角色。如需將帳戶連線和預設IAM角色新增至環境的資訊,請參閱建立環境。
-
預設IAM角色必須包含動作所需的原則和權限。若要判斷這些原則和權限是什麼,請參閱動作的YAML定義文件中角色屬性的說明。
如需有關帳戶連線的詳細資訊,請參閱允許存取已連線 AWS 的資源 AWS 帳戶。如需將帳戶連線新增至環境的資訊,請參閱建立環境。
對應的使用者介面:下列其中一項視動作版本而定:
-
(較新版本)配置選項卡/環境/中有什麼
my-environment
? /三點菜單/切換角色 -
(舊版本)配置選項卡/「環境/帳戶/角色」/帳AWS 戶連接
Name
(CDKDeploy
/Environment/Connections/Name)
(如果包含Connections,則為必填)
指定帳戶連線的名稱。
對應的使用者介面:下列其中一項視動作版本而定:
-
(較新版本)配置選項卡/環境/中有什麼
my-environment
? /三點菜單/切換角色 -
(舊版本)配置選項卡/「環境/帳戶/角色」/帳AWS 戶連接
Role
(CDKDeploy
/Environment/Connections/Role)
(如果包含Connections,則為必填)
指定帳戶連線的名稱。
指定部AWS CDK 署動作用來存取 AWS 和部署應用 AWS CDK 程式堆疊的IAM角色名稱。請確定您已將角色新增至您的 CodeCatalyst 空間,且該角色包含下列原則。
如果您未指定IAM角色,則動作會使用主 CodeCatalyst 控台環境中列出的預設IAM角色。如果您在環境中使用預設角色,請確定其具有下列原則。
-
下列權限原則:
警告
將權限限制為以下策略中顯示的權限。使用具有更廣泛權限的角色可能會造成安全風險。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "cloudformation:DescribeStackEvents", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStacks", "cloudformation:ListStackResources" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
aws-account
:role/cdk-*" } ] } 下列自訂信任原則:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
注意
如果您願意,您可以將CodeCatalystWorkflowDevelopmentRole-
角色與此動作搭配使用。如需有關此角色的詳細資訊,請參閱 為您的帳戶和空間建立CodeCatalystWorkflowDevelopmentRole-spaceName角色。瞭解spaceName
CodeCatalystWorkflowDevelopmentRole-
角色具有可能造成安全風險的完整存取權限。我們建議您只在不太擔心安全性的教學課程和案例中使用此角色。spaceName
對應的使用者介面:下列其中一項視動作版本而定:
-
(較新版本)配置選項卡/環境/中有什麼
my-environment
? /三點菜單/切換角色 -
(舊版) 組態索引標籤/「環境/帳戶/角色」/「角色」
Configuration
(CDKDeploy
/Configuration)
(必要)
您可以在其中定義動作的組態屬性的區段。
對應的 UI:組態索引標籤
StackName
(CDKDeploy
/Configuration/StackName)
(必要)
AWS CDK 應用程序堆棧的名稱,因為它顯示在應用 AWS CDK 程序目錄中的入口點文件中。bin
下列範例會顯示 TypeScript入口點檔案的內容,堆疊名稱會在 red italics
。 如果您的入口點文件使用不同的語言,它看起來會很相似。
import * as cdk from 'aws-cdk-lib';
import { CdkWorksopTypescriptStack } from '../lib/cdk_workshop_typescript-stack';
const app = new cdk.App();
new CdkWorkshopTypescriptStack(app, 'CdkWorkshopTypescriptStack
');
您只能指定一個堆疊。
提示
如果您有多個堆疊,您可以使用巢狀堆疊建立父系堆疊。然後,您可以在此動作中指定父系堆疊,以部署所有堆疊。
對應的 UI:配置選項卡/堆棧名稱
Region
(CDKDeploy
/Configuration/Region)
(選用)
指定 AWS 區域 要部署 AWS CDK 應用程式堆疊的目標。如需區域代碼的清單,請參閱區域端點。
如果您未指定「區域」,AWS CDK 部署動作會部署到 AWS CDK 程式碼中指定的「區域」。如需詳細資訊,請參閱AWS Cloud Development Kit (AWS CDK) 開發人員指南中的環境。
對應的 UI:組態索引標籤/區域
Tags
(CDKDeploy
/Configuration/Tags)
(選用)
指定要套用至應用 AWS CDK 程式堆疊中 AWS 資源的標籤。標籤會套用至堆疊本身,以及堆疊中的個別資源。如需有關標記的詳細資訊,請參閱AWS Cloud Development Kit (AWS CDK) 開發人員指南中的標記。
對應的用戶界面:配置選項卡/高級-可選/標籤
Context
(CDKDeploy
/Configuration/Context)
(選用)
以索引鍵值配對的形式指定要與 AWS CDK 應用程式堆疊產生關聯的前後關聯。如需前後關聯的詳細資訊,請參閱AWS Cloud Development Kit (AWS CDK) 開發人員指南中的執行階段內容
對應的 UI:配置選項卡/高級-可選/上下文
CdkCliVersion
(CDKDeploy
/Configuration/CdkCliVersion)
(選用)
此屬性適用於AWS CDK 部署動作的 1.0.13 版或更新版本,以及啟動程序動作的 1.0.8 版或更新版本AWS CDK 。
請指定下列其中一項:
-
您希望此動作使用的 AWS Cloud Development Kit (AWS CDK) 指令行介面 (CLI) (也稱為 AWS CDK 工具組) 的完整版本。範例:
2.102.1
。請考慮指定完整版本,以確保建置和部署應用程式時的一致性和穩定性。或
-
latest
。 請考慮指latest
定以利用的最新功能和修正程式CDKCLI。
此動作會將指定版本 (或最新版本) 下載 AWS CDK CLI至 CodeCatalyst 組建映像檔,然後使用此版本執行部署CDK應用程式或啟動 AWS 環境所需的命令。
如需可使用的受支援CDKCLI版本清單,請參閱AWS CDK 版本。
如果您省略此屬性,動作會使用下列其中一個主題中所述的預設 AWS CDK CLI版本:
對應的 UI:配置選項卡/AWS CDK CLI版本
CdkRootPath
(CDKDeploy
/Configuration/CdkRootPath)
(選用)
包含 AWS CDK 專案檔案之目錄的路cdk.json
徑。部AWS CDK 署動作會從此資料夾執行,且動作建立的任何輸出都會新增至此目錄。如果未指定,則AWS CDK 部署動作會假設cdk.json
檔案位於專案的根 AWS CDK 目錄中。
對應的用戶界面:cdk.json 所在的配置選項卡/目錄
CfnOutputVariables
(CDKDeploy
/Configuration/CfnOutputVariables)
(選用)
指定應用程 AWS CDK 式程式碼中要公開為工作流程輸出變數的CfnOutput
建構。然後,您可以在工作流程中的後續動作中參考工作流程輸出變數。如需中變數的更多資訊 CodeCatalyst,請參閱在工作流程中使用變數。
例如,如果您的 AWS CDK 應用程式程式碼如下所示:
import { Duration, Stack, StackProps, CfnOutput, RemovalPolicy} from 'aws-cdk-lib';
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
import * as s3 from 'aws-cdk-lib/aws-s3';
import { Construct } from 'constructs';
import * as cdk from 'aws-cdk-lib';
export class HelloCdkStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket', {
removalPolicy: RemovalPolicy.DESTROY,
});
new CfnOutput(this, 'bucketName', {
value: bucket.bucketName,
description: 'The name of the s3 bucket',
exportName: 'amzn-s3-demo-bucket',
});
const table = new dynamodb.Table(this, 'todos-table', {
partitionKey: {name: 'todoId', type: dynamodb.AttributeType.NUMBER},
billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
removalPolicy: RemovalPolicy.DESTROY,
})
new CfnOutput(this, 'tableName', {
value: table.tableName,
description: 'The name of the dynamodb table',
exportName: 'myDynamoDbTable',
});
...
}
}
... 你的CfnOutputVariables
財產看起來像這樣:
Configuration:
...
CfnOutputVariables: '["bucketName","tableName"]'
... 然後動作會產生下列工作流程輸出變數:
金鑰 | 值 |
---|---|
bucketName |
|
tableName |
|
然後您可以在後續動作中參照bucketName
和tableName
變數。若要瞭解如何在後續動作中參考工作流程輸出變數,請參閱引用預定義的變量。
如果您未在CfnOutputVariables
屬性中指定任何CfnOutput
建構,則動作會將它找到的前四個 (或更少) CloudFormation 輸出變數公開為工作流程輸出變數。如需詳細資訊,請參閱'AWS CDK 部署' 變數。
提示
若要取得動作產生的所有 CloudFormation 輸出變數清單,請執行一次包含AWS CDK 部署動作的工作流程,然後查看動作的 [記錄檔] 索引標籤。日誌包含與您的應 AWS CDK 用程序關聯的所有 CloudFormation 輸出變量的列表。一旦您知道所有 CloudFormation 變數是什麼,就可以使用CfnOutputVariables
屬性指定要轉換為工作流程輸出變數的變數。
有關 AWS CloudFormation 輸出變量的更多信息,請參閱AWS Cloud Development Kit (AWS CDK) API引用中的類 CfnOutput (構造)中的構造文檔。CfnOutput
對應的 UI:配置選項卡/AWS CloudFormation 輸出變量
CloudAssemblyRootPath
(CDKDeploy
/Configuration/CloudAssemblyRootPath)
(選用)
如果您已經將應用 AWS CDK 程序的堆棧合成到雲程序集中(使用該cdk synth
操作),請指定 Cloud 程序集目錄(cdk.out
)的根路徑。位於指定雲端組件目錄中的 AWS CloudFormation 範本將透過部AWS CDK 署動作部署到您 AWS 帳戶 使用指cdk deploy --app
令。如果存在該--app
選項,則不會cdk synth
執行該操作。
如果您未指定雲端組合目錄,則AWS CDK 部署動作將在沒有--app
選項的情況下執行指cdk deploy
令。如果沒有--app
選項,cdk deploy
操作將合成(cdk synth
)並將您的 AWS CDK 應用程序部署到您的 AWS 帳戶.
當「AWS CDK 部署」動作可以在執行階段執行合成時,為什麼要指定現有的、合成的雲端組件?
您可能想要將既有、合成的雲端組合指定為:
-
確保每次執行「AWS CDK 部署」動作時,部署完全相同的資源集
如果您未指定雲端組件,則AWS CDK 部署動作可能會根據執行的時間來合成和部署不同的檔案。例如,AWS CDK 部署動作可能會在測試階段合成具有一組相依性的雲端組件,以及在生產階段期間 (如果這些相依性在階段之間變更),合成另一組相依性。為了保證測試內容與部署的內容之間的確切奇偶校驗,我們建議您合成一次,然後使用 [路徑到雲端組件目錄] 欄位 (視覺化編輯器) 或
CloudAssemblyRootPath
屬性 (編YAML輯器) 來指定已經合成的雲端組件。 -
使用非標準軟件包管理器和工具與 AWS CDK 應用程序
在
synth
作業期間,部AWS CDK 署動作會嘗試使用 npm 或 pip 等標準工具來執行您的應用程式。如果該操作無法使用這些工具成功運行您的應用程序,則不會發生合成,並且操作將失敗。若要解決此問題,您可以指定在應用程式cdk.json
檔案中成功執行應用程 AWS CDK 式所需的確切命令,然後使用不涉及AWS CDK 部署動作的方法來合成應用程式。產生雲端組件之後,您可以在AWS CDK 部署動作的「雲端組件目錄路徑」欄位 (視覺化編輯器) 或CloudAssemblyRootPath
屬性 (YAML編輯器) 中指定它。
如需設定cdk.json
檔案以包含 AWS CDK 用於安裝和執行應用程式之命令的詳細資訊,請參閱指定應用程式命令。
有關cdk deploy
和cdk synth
命令以及--app
選項的詳細資訊,請參閱AWS Cloud Development Kit (AWS CDK) 開發人員指南中的部署堆疊、合成堆疊和略過合成。
若要取得有關雲端組合的資訊,請參閱AWS Cloud Development Kit (AWS CDK) API參考中的雲端組合。
對應的 UI:組態索引標籤/雲端組件目錄的路徑