AWS CodeDeploy
用户指南 (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

本指南中的过程支持新的控制台设计。如果您选择使用较旧版本的控制台,可以在本指南中找到许多仍然适用的概念和基本过程。要访问新控制台中的帮助,请选择信息图标。

AppSpec 的“resources”部分(仅限 Amazon ECS 和 AWS Lambda 部署)

AppSpec file的 'resources' 部分内容会随着部署的计算平台而改变。Amazon ECS 部署的 'resources' 部分包含 Amazon ECS 任务定义、用于将流量路由到更新的 Amazon ECS 任务集的容器和端口以及其他可选信息。AWS Lambda 部署的 'resources' 部分包含 Lambda 函数的名称、别名、当前版本和目标版本。

用于 AWS Lambda 部署的 AppSpec 的“resources”部分

'resources' 部分指定要部署的 Lambda 函数,并具有以下结构:

YAML:

resources: - name-of-function-to-deploy: type: "AWS::Lambda::Function" properties: name: name-of-lambda-function-to-deploy alias: alias-of-lambda-function-to-deploy currentversion: version-of-the-lambda-function-traffic-currently-points-to targetversion: version-of-the-lambda-function-to-shift-traffic-to

JSON:

"resources": [{ "name-of-function-to-deploy" { "type": "AWS::Lambda::Function", "properties": { "name": "name-of-lambda-function-to-deploy", "alias": "alias-of-lambda-function-to-deploy", "currentversion": "version-of-the-lambda-function-traffic-currently-points-to", "targetversion": "version-of-the-lambda-function-to-shift-traffic-to" } } }]

每个属性都是使用字符串指定的。

  • name – 必需。这是要部署的 Lambda 函数的名称。

  • alias – 必需。这是 Lambda 函数的别名。

  • currentversion – 必需。这是流量当前定向到的 Lambda 函数版本。

  • targetversion – 必需。这是流量要转移到的 Lambda 函数版本。

用于 Amazon ECS 部署的 AppSpec 的“resources”部分

'resources' 部分指定要部署的 Amazon ECS 服务,并具有以下结构:

YAML:

Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "task-definition-ARN" LoadBalancerInfo: ContainerName: "ECS-container-name-for-your-ECS-application" ContainerPort: port-used-by-your-ECS-application # Optional properties PlatformVersion: "ecs-service-platform-version" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["ecs-subnet-1","ecs-subnet-n"] SecurityGroups: ["ecs-security-group-1","ecs-security-group-n"] AssignPublicIp: "ENABLED-or-DISABLED"

JSON:

"Resources": [ { "TargetService": { "Type": "AWS::ECS::Service", "Properties": { "TaskDefinition": "", "LoadBalancerInfo": { "ContainerName": "", "ContainerPort": }, "PlatformVersion": "", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "", "" ], "SecurityGroups": [ "", "" ], "AssignPublicIp": "" } } } } } ]

每个属性都是使用字符串指定的。

  • TaskDefinition – 必需。这是要部署的 Amazon ECS 服务的任务定义。它是使用任务定义的 ARN 指定的。ARN 格式为 arn:aws:ecs:region:account-id:task-definition/task-definition-family-name:task-definition-revision-number。有关更多信息,请参阅 Amazon 资源名称 (ARN) 和 AWS 服务命名空间

  • ContainerName – 必需。这是包含您的 Amazon ECS 应用程序的 Amazon ECS 容器名称。它必须是在 Amazon ECS 任务定义中指定的容器。

  • Port – 必需。这是负载均衡器在部署期间重新路由流量的端口。

  • PlatformVersion:可选。已部署的 Amazon ECS 服务中 Fargate 任务的平台版本。有关更多信息,请参阅 AWS Fargate 平台版本

  • NetworkConfiguration:可选。在 AwsvpcConfiguration 下面,您可以指定以下内容。有关更多信息,请参阅 Amazon ECS 容器服务 API 参考 中的 AwsVpcConfiguration

    • Subnets:可选。Amazon ECS 服务中一个或多个子网的逗号分隔列表。

    • SecurityGroups:可选。Amazon Elastic Container Service 中一个或多个安全组的逗号分隔列表。

    • AssignPublicIp:可选。一个字符串,它指定 Amazon ECS 服务的弹性网络接口是否接收公有 IP 地址。有效值为 ENABLEDDISABLED

    注意

    必须指定 NetworkConfiguration 下的所有设置,或者一个设置也不指定。例如,如果您要指定 Subnets,还必须指定 SecurityGroupsAssignPublicIp。如果一个设置也不指定,则 CodeDeploy 使用当前网络的 Amazon ECS 设置。