本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 存储桶策略允许任何附带EC2实例配置文件且包含的亚马逊IAM实例从名ARN
arn:aws:iam::444455556666:role/CodeDeployDemo
为的 Amazon S3 存储桶中的任意位置下载amzn-s3-demo-bucket
:{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/CodeDeployDemo" ] } } ] }
以下 Amazon S3 存储桶策略允许任何本地实例及其关联IAM用户包含的,从名ARN
arn:aws:iam::444455556666:user/CodeDeployUser
为的 Amazon S3 存储桶中的任意位置下载amzn-s3-demo-bucket
:{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:user/CodeDeployUser" ] } } ] }
有关如何生成和附加 Amazon S3 存储桶策略的信息,请参阅存储桶策略示例。
-
如果您要从 Amazon S3 存储桶或存储 GitHub库部署应用程序修订,请设置IAM实例配置文件并将其附加到实例。有关信息,请参阅步骤 4:为您的 Amazon IAM 实例创建EC2实例配置文件、为 CodeDeploy (Amazon CLI 或亚马逊 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 代理配置参考。注意
如果您在 Amazon Linux 或 Ubuntu 服务器实例上使用配置文件,则必须:RHEL
-
对于部署根目录文件夹和日志目录文件夹,使用
:root_dir:
和:log_dir:
变量指定默认位置以外的其他位置。 -
sudo
用于运行 CodeDeploy 代理命令。
-
创建本地部署
在要创建本地部署的实例上,打开终端会话(Amazon Linux 或 Ubuntu 服务器实例)或命令提示符(Windows 服务器)以运行工具命令。RHEL
注意
codedeploy-local 命令安装在以下位置:
-
在亚马逊 Linux 或 Ubuntu 服务器上:。RHEL
/opt/codedeploy-agent/bin
-
在 Windows Server 上:
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
指定值。
数据包位置格式示例:
-
本地 Amazon Linux 或 Ubuntu 服务器实例:RHEL
/path/to/local/bundle.tgz
-
本地 Windows Server 实例:
C:/path/to/local/bundle
-
Amazon S3 存储桶:
s3://amzn-s3-demo-bucket/bundle.tar
-
GitHub 存储库:
https://github.com/
account-name
/repository-name
/
-t, --type
应用程序修订数据包的格式。支持的类型包括 tgz
、tar
、zip
和 directory
。如果您没有指定类型,该工具将默认使用 directory
。如果为 --type
指定值,则必须为 --bundle-location
指定值。
-b,--file-exists-behavior
指明如何处理已存在于部署目标位置的文件(但并不是之前的成功部署放置的文件)。选项包括DISALLOW、OVERWRITE、RETAIN。有关更多信息,请参阅 “Amazon CodeDeploy API参考 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, --appspec-filename
AppSpec 文件名。对于本地部署,可接受的值为 appspec.yml
和 appspec.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://amzn-s3-demo-bucket/bundle.tgz --type tgz
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/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