本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
“AWS CDK 部署” 操作 YAML
以下是AWS CDK 部署操作的YAML定义。要了解如何使用此操作,请参阅使用工作流程部署 AWS CDK 应用程序。
此操作定义作为一个部分存在于更广泛的工作流程定义文件中。有关此文件的更多信息,请参阅 工作流程YAML定义。
注意
接下来的大多数YAML属性在可视化编辑器中都有相应的用户界面元素。要查找用户界面元素,请使用 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-deploy @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编辑器)优化了动作启动速度。
有关计算类型的更多信息,请参阅计算类型。
相应的 UI:“配置” 选项卡/高级-可选/计算类型
Fleet
(CDKDeploy
/Compute/Fleet)
(可选)
指定将运行您的工作流程或工作流程操作的计算机或机群。对于按需队列,当操作开始时,工作流程会配置所需的资源,操作完成后计算机就会被销毁。按需车队示例:Linux.x86-64.Large
,Linux.x86-64.XLarge
。有关按需队列的更多信息,请参阅按需车队房产。
使用已配置的队列,您可以配置一组专用计算机来运行您的工作流程操作。这些计算机处于闲置状态,可以立即处理操作。有关已配置队列的更多信息,请参阅。已配置的舰队属性
如果省略,Fleet
则默认为Linux.x86-64.Large
。
相应的 UI:“配置” 选项卡/高级-可选/计算舰队
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 应用程序不包含在源存储库中,则它必须位于由其他操作生成的构件中。
更多有关来源的信息,请参阅 将源存储库连接到工作流程。
相应的 UI:“输入” 选项卡/ “来源”- 可选
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
。
相应的用户界面:输出选项卡/构件/添加工件/构建生成的文件
Environment
(CDKDeploy
/Environment)
(必需)
指定要用于操作的 CodeCatalyst 环境。该操作关联到在所选环境中VPC指定的 AWS 账户 和可选的 Amazon。该操作使用在环境中指定的默认IAM角色连接到 AWS 账户,并使用在亚马逊VPC连接中指定的IAM角色来连接亚马逊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 账户。有关向环境添加账户连接的信息,请参阅创建环境。
相应的 UI:根据操作版本的不同,以下用户界面之一:
-
(新版本)“配置” 选项卡/环境/内容
my-environment
? /三点菜单/ 切换角色 -
(旧版本)“配置” 选项卡/'环境/账户/角色'/账户连接AWS
Name
(CDKDeploy
/Environment/Connections/Name)
(如果包含Connections,则为必填项)
指定账户连接的名称。
相应的 UI:根据操作版本的不同,以下用户界面之一:
-
(新版本)“配置” 选项卡/环境/内容
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
相应的 UI:根据操作版本的不同,以下用户界面之一:
-
(新版本)“配置” 选项卡/环境/内容
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
');
您只能指定一个堆栈。
提示
如果您有多个堆栈,则可以创建带有嵌套堆栈的父堆栈。然后,您可以在此操作中指定父堆栈来部署所有堆栈。
对应的用户界面:配置选项卡/ 堆栈名称
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) 开发人员指南》中的运行时上下文。
对应的用户界面:配置选项卡/高级-可选/上下文
CdkCliVersion
(CDKDeploy
/Configuration/CdkCliVersion)
(可选)
此属性适用于AWS CDK 部署操作的 1.0.13 或更高版本,以及引导操作的 1.0.8 或更高版本。AWS CDK
指定下列项之一:
-
您希望此操作使用的 AWS Cloud Development Kit (AWS CDK) 命令行界面 (CLI)(也称为 AWS CDK Toolkit)的完整版本。示例:
2.102.1
。在构建和部署应用程序时,请考虑指定完整版本以确保一致性和稳定性。Or
-
latest
。 请考虑指定latest
以利用的最新功能和修复程序CDKCLI。
该操作会将的指定版本(或最新版本)下载 AWS CDK CLI到 CodeCatalyst 构建映像,然后使用此版本运行部署CDK应用程序或引导 AWS 环境所需的命令。
有关您可以使用的支持CDKCLI版本的列表,请参阅AWS CDK 版本。
如果省略此属性,则该操作将使用以下主题之一中描述的默认 AWS CDK CLI版本:
对应的用户界面:配置选项卡/版本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 输出变量的更多信息,请参阅该CfnOutput
构造的文档,该文档可在AWS Cloud Development Kit (AWS CDK) API参考文献中的类 CfnOutput (构造)中找到。
相应的 UI:配置选项卡/ AWS CloudFormation 输出变量
CloudAssemblyRootPath
(CDKDeploy
/Configuration/CloudAssemblyRootPath)
(可选)
如果您已经将 AWS CDK 应用程序的堆栈合成到云程序集中(使用cdk synth
操作),请指定云程序集目录的根路径(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:“配置” 选项卡/ 云端装配目录路径