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

AppSpec File示例

此主题提供用于 AWS Lambda 和 EC2/本地 部署的 AppSpec 文件示例。

用于 AWS Lambda 部署的 AppSpec File 示例

下面是使用 YAML 编写的、用于部署 Lambda 函数版本的 AppSpec file示例。

version: 0.0 Resources: - myLambdaFunction: Type: AWS::Lambda::Function Properties: Name: "myLambdaFunction" Alias: "myLambdaFunctionAlias" CurrentVersion: "1" TargetVersion: "2" Hooks: - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeTrafficShift" - AfterAllowTraffic: "LambdaFunctionToValidateAfterTrafficShift"

下面是用 JSON 编写的上述示例的版本。

{ "version": 0.0, "Resources": [{ "myLambdaFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Name": "myLambdaFunction", "Alias": "myLambdaFunctionAlias", "CurrentVersion": "1", "TargetVersion": "2" } } }], "Hooks": [{ "BeforeAllowTraffic": "LambdaFunctionToValidateBeforeTrafficShift" }, { "AfterAllowTraffic": "LambdaFunctionToValidateAfterTrafficShift" } ] }

下面是部署期间的事件序列:

  1. 在将流量从名为 myLambdaFunction 的 Lambda 函数的版本 1 转移到版本 2 前,运行名为 LambdaFunctionToValidateBeforeTrafficShift 的 Lambda 函数,该函数将验证部署是否已准备好开始流量转移。

  2. 如果 LambdaFunctionToValidateBeforeTrafficShift 返回了退出代码 0 (成功),则开始将流量转移到 myLambdaFunction 的版本 2。此部署的部署配置确定流量转移的速率。

  3. 在完成将流量从名为 myLambdaFunction 的 Lambda 函数的版本 1 转移到版本 2 后,运行名为 LambdaFunctionToValidateAfterTrafficShift 的 Lambda 函数,该函数将验证部署是否已成功完成。

用于 EC2/本地 部署的 AppSpec File 示例

下面是对 Amazon Linux、Ubuntu Server 或 RHEL 实例进行就地部署的 AppSpec file 的示例。

version: 0.0 os: linux files: - source: Config/config.txt destination: /webapps/Config - source: source destination: /webapps/myApp hooks: BeforeInstall: - location: Scripts/UnzipResourceBundle.sh - location: Scripts/UnzipDataBundle.sh AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 ApplicationStart: - location: Scripts/RunFunctionalTests.sh timeout: 3600 ValidateService: - location: Scripts/MonitorService.sh timeout: 3600 runas: codedeployuser

对于 Windows Server 实例,将 os: linux 更改为 os: windows。另外,您还必须完全限定 destination 路径(例如 c:\temp\webapps\Configc:\temp\webapps\myApp)。不包括 runas 元素。

下面是部署期间的事件序列:

  1. 运行位于 Scripts/UnzipResourceBundle.sh 的脚本。

  2. 如果前面的脚本返回了退出代码 0(成功),则运行位于 Scripts/UnzipDataBundle.sh 中的脚本。

  3. 将文件从 Config/config.txt 路径复制到 /webapps/Config/config.txt 路径中。

  4. 以递归方式将 source 目录中的所有文件复制到 /webapps/myApp 目录中。

  5. 运行位于 Scripts/RunResourceTests.sh 中的脚本,超时时间为 180 秒(3 分钟)。

  6. 运行位于 Scripts/RunFunctionalTests.sh 中的脚本,超时时间为 3600 秒(1 小时)。

  7. Scripts/MonitorService.sh 用户身份运行位于 codedeploy 中的脚本,超时时间为 3600 秒(1 小时)。