使用 CodeDeploy 代理在本地计算机上验证部署包 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 CodeDeploy 代理在本地计算机上验证部署包

使用该 CodeDeploy 代理,您可以在已登录的实例上部署内容。这使您可以测试要在部署中使用的应用程序规范AppSpec 文件(文件)和要部署的内容的完整性。

您不需要创建应用程序和部署组。如果您要部署的内容存储在本地实例中,您甚至不需要 Amazon 账户。对于最简单的测试,您可以在包含要部署 AppSpec 的文件和内容的目录中运行该codedeploy-local命令,而无需指定任何选项。工具中还有适用于其他测试用例的选项。

通过验证本地机器上的部署程序包,您可以:

  • 测试应用程序修订的完整性。

  • 测试 AppSpec 文件的内容。

  • CodeDeploy 首次尝试使用您现有的应用程序代码。

  • 登录实例后快速部署内容。

您可以使用存储在本地实例或支持的远程存储库类型(Amazon S3 存储桶或公共存储 GitHub 库)中的部署内容。

先决条件

在开始本地部署之前,请先完成以下步骤:

  • 创建或使用 CodeDeploy 代理支持的实例类型。有关信息,请参阅 CodeDeploy 代理支持的操作系统

  • 安装代理版本 1.0.1.1352 或更高版本。 CodeDeploy 有关信息,请参阅 安装 CodeDeploy 代理

  • 如果您要从 Amazon S3 存储桶或存储 GitHub 库部署内容,请配置用户以与一起使用 CodeDeploy。有关信息,请参阅 步骤 1:设置

  • 如果您要从 Amazon S3 存储桶部署应用程序修订,请在您所在的区域创建一个 Amazon S3 存储桶,然后对该存储桶应用 Amazon S3 存储桶策略。此策略为您的实例授予下载应用程序修订所需的权限。

    例如,以下 Amazon S3 存储桶策略允许任何附带包含 ARN 的 IAM 实例配置文件的 Amazon EC2 实例从名arn:aws:iam::444455556666:role/CodeDeployDemo为的 Amazon S3 存储桶中的任意位置下载:codedeploydemobucket

    { "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/CodeDeployDemo" ] } } ] }

    以下 Amazon S3 存储桶策略允许任何与包含 ARN arn:aws:iam::444455556666:user/CodeDeployUser 的 IAM 用户关联的本地实例从名为 Amazon S3 存储桶中的任意位置进行下载:codedeploydemobucket

    { "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:user/CodeDeployUser" ] } } ] }

    有关如何生成和附加 Amazon S3 存储桶策略的信息,请参阅存储桶策略示例

  • 如果您要从 Amazon S3 存储桶或存储 GitHub库部署应用程序修订,请设置 IAM 实例配置文件并将其附加到实例。有关信息,请参阅步骤 4:为您的 Amazon EC2 实例创建 IAM 实例配置文件为CodeDeploy(Amazon CLI或一个 Amazon EC2 控制台)创建 Amazon EC2 实例为 CodeDeploy (Amazon CloudFormation模板)创建 Amazon EC2 实例

  • 如果您要从中部署内容 GitHub,请创建一个 GitHub 账户和一个公共存储库。要创建 GitHub 账户,请参阅加入 GitHub。要创建 GitHub存储库,请参阅创建存储库

    注意

    目前不支持私有存储库。如果您的内容存储在私有存储 GitHub 库中,则可以将其下载到实例,然后使用--bundle-location选项指定其本地路径。

  • 准备好要部署到实例的内容(包括 AppSpec 文件),并将其放在本地实例、Amazon S3 存储桶或存储 GitHub 库中。有关信息,请参阅 使用 CodeDeploy 的应用程序修订

  • 如果您想使用其他配置选项的默认值以外的值,请创建配置文件并将其放在实例上(/etc/codedeploy-agent/conf/codedeployagent.yml适用于 Amazon Linux、RHEL 或 Ubuntu 服务器实例或 C:\ProgramData\Amazon\CodeDeploy\conf.yml Windows 服务器实例)。有关信息,请参阅 CodeDeploy 代理配置参考

    注意

    如果您在亚马逊 Linux、RHEL 或 Ubuntu 服务器实例上使用配置文件,则必须:

    • 对于部署根目录文件夹和日志目录文件夹,使用 :root_dir::log_dir: 变量指定默认位置以外的其他位置。

    • sudo用于运行 CodeDeploy 代理命令。

创建本地部署

在要创建本地部署的实例上,打开终端会话(亚马逊 Linux、RHEL 或 Ubuntu 服务器实例)或命令提示符(Windows 服务器)以运行工具命令。

注意

codedeploy-local 命令安装在以下位置:

  • 在亚马逊 Linux、RHEL 或 Ubuntu 服务器上:。/opt/codedeploy-agent/bin

  • 在 Windows 服务器上:C:\ProgramData\Amazon\CodeDeploy\bin

基本命令语法

codedeploy-local [options]

摘要

codedeploy-local [--bundle-location <value>] [--type <value>] [--file-exists-behavior <value>] [--deployment-group <value>] [--events <comma-separated values>] [--agent-configuration-file <value>] [--appspec-filename <value>]

选项

-l , -bundle-location

应用程序修订数据包的位置。如果您没有指定位置,该工具将默认使用您当前的工作目录。如果为 --bundle-location 指定值,则必须为 --type 指定值。

数据包位置格式示例:

  • 本地亚马逊 Linux、RHEL 或 Ubuntu 服务器实例:/path/to/local/bundle.tgz

  • 本地 Windows 服务器实例:C:/path/to/local/bundle

  • 亚马逊 S3 存储桶:s3://mybucket/bundle.tar

  • GitHub 存储库:https://github.com/account-name/repository-name/

-t, --type

应用程序修订数据包的格式。支持的类型包括 tgztarzipdirectory。如果您没有指定类型,该工具将默认使用 directory。如果为 --type 指定值,则必须为 --bundle-location 指定值。

-b--file-exists-behavior

指明如何处理已存在于部署目标位置的文件 (但并不是之前的成功部署放置的文件)。选项包括 DISALLOW、OVERWRITE、RETAIN。有关更多信息,请参阅 Amazon CodeDeployAPI 参考fileExistsBehavior中的。

-g, --deployment-group

要部署内容的目标位置的文件夹路径。如果您未指定文件夹,则该工具会在您的部署根目录中创建一个名为default-local-deployment-group的文件夹。对于您创建的每个本地部署,该工具都会在此文件夹中创建一个子目录,名称示例为 d-98761234-local

-e, --events

要按顺序运行的一组覆盖生命周期事件挂钩,而不是 AppSpec 文件中列出的事件。可指定多个挂钩,以逗号分隔。在以下情况下您可以使用此选项:

  • 你想在不更新 AppSpec 文件的情况下运行一组不同的事件。

  • 你想运行一个事件挂钩作为 AppSpec 文件中内容的异常,例如ApplicationStop

如果您未在覆盖列表中指定DownloadBundle安装事件,则它们将在您指定的所有事件挂钩之前运行。如果在--events选项列表中包含DownloadBundle安装,则在它们之前必须仅有 CodeDeploy 部署中通常在它们之前运行的事件。有关信息,请参阅 AppSpec “挂钩” 部分

-c--agent-configuration-file

要用于部署的配置文件的位置 (存储位置与默认位置不同时)。配置文件指定部署中默认值和默认行为的替代值和行为。

默认情况下,配置文件存储在/etc/codedeploy-agent/conf/codedeployagent.yml(亚马逊 Linux、RHEL 或 Ubuntu 服务器实例)或C:/ProgramData/Amazon/CodeDeploy/conf.yml(Windows 服务器)中。有关更多信息,请参阅CodeDeploy 代理配置参考

-A-- appsec-filename

AppSpec 文件名。对于本地部署,可接受的值为appspec.ymlappspec.yaml。默认情况下,该 AppSpec 文件被调用appspec.yml

-h--help

显示帮助内容的摘要。

-v, --version

显示工具的版本号。

示例

以下是有效命令格式的示例。

codedeploy-local
codedeploy-local --bundle-location /path/to/local/bundle/directory
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group my-deployment-group
codedeploy-local --bundle-location /path/to/local/directory --type directory --deployment-group my-deployment-group

从 Amazon S3 部署捆绑包:

codedeploy-local --bundle-location s3://mybucket/bundle.tgz --type tgz
codedeploy-local --bundle-location s3://mybucket/bundle.zip?versionId=1234&etag=47e8 --type zip --deployment-group my-deployment-group

从公共 GitHub 存储库部署捆绑包:

codedeploy-local --bundle-location https://github.com/awslabs/aws-codedeploy-sample-tomcat --type zip
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/master --type zip
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/HEAD --type zip
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/1a2b3c4d --type zip

部署指定多个生命周期事件的数据包:

codedeploy-local --bundle-location /path/to/local/bundle.tar --type tar --application-folder my-deployment --events DownloadBundle,Install,ApplicationStart,HealthCheck

使用 ApplicationStop 生命周期事件停止先前部署的应用程序:

codedeploy-local --bundle-location /path/to/local/bundle.tgz --type tgz --deployment-group --events ApplicationStop

使用特定的部署组 ID 进行部署:

codedeploy-local --bundle-location C:/path/to/local/bundle/directory --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca