AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

教程:使用 AWS CodeDeploy 将应用程序部署到本地实例(Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)

本教程引导您完成将示例应用程序修订部署到运行 Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux (RHEL) 的单个本地实例(即非 Amazon EC2 实例的物理设备)的过程,帮助您获得使用 AWS CodeDeploy 的经验。有关本地实例以及如何将它们与 AWS CodeDeploy 一起使用的信息,请参阅使用本地实例

本教程建立在在 AWS CodeDeploy 中尝试示例就地部署中介绍的概念的基础之上。如果您尚未完成就地部署的 示例部署向导,可能需要先完成它。

先决条件

在开始此教程之前,您必须完成入门中的先决条件,包括配置 IAM 用户、安装或升级 AWS CLI 以及创建服务角色。您无需按照先决条件中的所述创建 IAM 实例配置文件。本地实例不使用 IAM 实例配置文件。

您将配置作为本地实例的物理设备必须运行AWS CodeDeploy 代理支持的操作系统 中列出的操作系统之一。

步骤 1:配置本地实例

您必须先配置本地实例,然后才能在其中进行部署。按照使用本地实例中的说明操作,然后返回此页。

步骤 2:创建示例应用程序修订

在这一步中,您将创建要部署到本地实例的示例应用程序修订。

由于很难了解您的本地实例上已经安装了哪些软件和功能或者您的组织策略允许安装哪些软件和功能,因此,我们这里提供的示例应用程序修订仅仅使用批处理脚本(对于 Windows Server)或 shell 脚本(对于 Ubuntu Server 和 RHEL),将文本文件写入到您本地实例上的某个位置。对于多个 AWS CodeDeploy 部署生命周期事件,每个事件写入一个文件,包括 InstallAfterInstallApplicationStartValidateService。在 BeforeInstall 部署生命周期事件中,将运行一个脚本来删除此示例在先前部署中写入的旧文件,并在您的本地实例上创建一个位置用于写入新文件。

注意

如果出现以下任何情况,此示例应用程序修订可能无法部署:

  • 在本地实例上启动 AWS CodeDeploy 代理的用户账户无权执行脚本。

  • 用户账户无权在脚本中列出的位置创建或删除文件夹。

  • 用户账户无权在脚本中列出的位置创建文本文件。

注意

如果您配置了 Windows Server 实例并希望部署其他示例,则可能需要使用 教程:将 HelloWorld 应用程序部署到 Windows Server 实例教程的 步骤 2:配置源内容中的示例。

如果您配置了 RHEL 实例并希望部署其他示例,则可能需要使用 教程:将 WordPress 部署到非 Windows 实例教程的步骤 2:配置源内容中的示例。

目前,Ubuntu Server 没有替代示例。

  1. 在您的开发计算机上,创建名为 CodeDeployDemo-OnPrem 的子目录(子文件夹)来存储示例应用程序修订的文件,然后切换到该子文件夹。对于此示例,我们假定您使用 c:\temp 文件夹作为 Windows Server 的根文件夹,或者使用 /tmp 文件夹作为 Ubuntu Server 和 RHEL 的根文件夹。如果您使用其他文件夹,请务必在整个教程中使用该文件夹取代我们提供的文件夹:

    对于 Windows:

    Copy
    mkdir c:\temp\CodeDeployDemo-OnPrem cd c:\temp\CodeDeployDemo-OnPrem

    对于 Linux, OS X, or Unix:

    Copy
    mkdir /tmp/CodeDeployDemo-OnPrem cd /tmp/CodeDeployDemo-OnPrem
  2. CodeDeployDemo-OnPrem 子文件夹的根中,使用文本编辑器创建两个名为 appspec.ymlinstall.txt 的文件:

    appspec.yml 用于 Windows Server:

    Copy
    version: 0.0 os: windows files: - source: .\install.txt destination: c:\temp\CodeDeployExample hooks: BeforeInstall: - location: .\scripts\before-install.bat timeout: 900 AfterInstall: - location: .\scripts\after-install.bat timeout: 900 ApplicationStart: - location: .\scripts\application-start.bat timeout: 900 ValidateService: - location: .\scripts\validate-service.bat timeout: 900

    appspec.yml 用于 Ubuntu Server 和 RHEL:

    Copy
    version: 0.0 os: linux files: - source: ./install.txt destination: /tmp/CodeDeployExample hooks: BeforeInstall: - location: ./scripts/before-install.sh timeout: 900 AfterInstall: - location: ./scripts/after-install.sh timeout: 900 ApplicationStart: - location: ./scripts/application-start.sh timeout: 900 ValidateService: - location: ./scripts/validate-service.sh timeout: 900

    有关 AppSpec 文件的更多信息,请参阅添加 AppSpec 文件AppSpec 文件参考

    install.txt

    Copy
    The Install deployment lifecycle event successfully completed.
  3. CodeDeployDemo-OnPrem 子文件夹的根下,创建 scripts 子文件夹,然后切换到该子文件夹:

    对于 Windows:

    Copy
    mkdir c:\temp\CodeDeployDemo-OnPrem\scripts cd c:\temp\CodeDeployDemo-OnPrem\scripts

    对于 Linux, OS X, or Unix:

    Copy
    mkdir -p /tmp/CodeDeployDemo-OnPrem/scripts cd /tmp/CodeDeployDemo-OnPrem/scripts
  4. scripts 子文件夹的根中,对于 Windows Server,使用文本编辑器创建四个名为 before-install.batafter-install.batapplication-start.batvalidate-service.bat 的文件;对于 Ubuntu Server 和 RHEL,创建四个名为 before-install.shafter-install.shapplication-start.shvalidate-service.sh 的文件。

    对于 Windows Server:

    before-install.bat

    Copy
    set FOLDER=%HOMEDRIVE%\temp\CodeDeployExample if exist %FOLDER% ( rd /s /q "%FOLDER%" ) mkdir %FOLDER%

    after-install.bat

    Copy
    cd %HOMEDRIVE%\temp\CodeDeployExample echo The AfterInstall deployment lifecycle event successfully completed. > after-install.txt

    application-start.bat

    Copy
    cd %HOMEDRIVE%\temp\CodeDeployExample echo The ApplicationStart deployment lifecycle event successfully completed. > application-start.txt

    validate-service.bat

    Copy
    cd %HOMEDRIVE%\temp\CodeDeployExample echo The ValidateService deployment lifecycle event successfully completed. > validate-service.txt

    对于 Ubuntu Server 和 RHEL:

    before-install.sh

    Copy
    #!/bin/bash export FOLDER=/tmp/CodeDeployExample if [ -d $FOLDER ] then rm -rf $FOLDER fi mkdir -p $FOLDER

    after-install.sh

    Copy
    #!/bin/bash cd /tmp/CodeDeployExample echo "The AfterInstall deployment lifecycle event successfully completed." > after-install.txt

    application-start.sh

    Copy
    #!/bin/bash cd /tmp/CodeDeployExample echo "The ApplicationStart deployment lifecycle event successfully completed." > application-start.txt

    validate-service.sh

    Copy
    #!/bin/bash cd /tmp/CodeDeployExample echo "The ValidateService deployment lifecycle event successfully completed." > validate-service.txt unset FOLDER
  5. 仅对于 Ubuntu Server 和 RHEL,确保四个 shell 脚本具有执行权限:

    Copy
    chmod +x ./scripts/*

步骤 3:打包并将您的应用程序修订上传到 Amazon S3

在部署应用程序修订之前,您需要打包文件,然后将文件包上传到 Amazon S3 存储桶。按照创建应用程序推送修订中的说明操作。(虽然您可以为应用程序和部署组提供任意名称,不过我们建议您使用 CodeDeploy-OnPrem-App 作为应用程序名称,并使用 CodeDeploy-OnPrem-DG 作为部署组名称。)在您完成这些指示的操作之后,返回本页。

注意

或者,您可以将文件包上传到 GitHub 存储库并从该位置部署。有关更多信息,请参阅 GitHub

步骤 4:部署应用程序修订

在您将应用程序修订上传到 Amazon S3 存储桶之后,尝试将其部署到本地实例。按照创建部署中的说明操作,然后返回此页。

步骤 5:验证您的部署

要验证部署已经成功,请按照查看部署详细信息中的说明操作,然后返回本页。

如果部署成功,您会在 c:\temp\CodeDeployExample(对于 Windows Server)或 /tmp/CodeDeployExample(对于 Ubuntu Server 和 RHEL)文件夹中找到四个文件。

如果部署失败,请按照查看实例详细信息解决实例问题中的排除故障步骤操作。进行任何必要的修复,重新打包并上传应用程序修订,然后再次尝试部署。

步骤 6:清除资源

为避免对您为此教程创建的资源继续收费,请删除您不再使用的 Amazon S3 存储桶。您还可以清除关联的资源,例如 AWS CodeDeploy 中的应用程序和部署组记录,以及本地实例。

您可以使用 AWS CLI 或结合使用 AWS CodeDeploy 和 Amazon S3 控制台及 AWS CLI 来清除资源。

清除资源 (CLI)

删除 Amazon S3 存储桶

  • 对存储桶 (例如,codedeploydemobucket) 调用 rm 命令以及 --recursive 开关。该存储桶及存储桶中的所有对象将被删除。

    Copy
    aws s3 rm s3://your-bucket-name --recursive

删除 AWS CodeDeploy 中的应用程序和部署组记录

  • 对应用程序(例如,CodeDeploy-OnPrem-App)调用 delete-application 命令。将删除部署和部署组的记录。

    Copy
    aws deploy delete-application --application-name your-application-name

注销本地实例并删除 IAM 用户

  • 对本地实例和区域调用 deregister 命令:

    Copy
    aws deploy deregister --instance-name your-instance-name --delete-iam-user --region your-region

    注意

    如果您不希望删除与此本地实例关联的 IAM 用户,请改为使用 --no-delete-iam-user 选项。

卸载 AWS CodeDeploy 代理并从本地实例中删除配置文件

  • 从本地实例调用 uninstall 命令:

    Copy
    aws deploy uninstall

现在您已完成清除此教程所用资源的全部步骤。

清除资源(控制台)

删除 Amazon S3 存储桶

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 选择要删除的存储桶旁边的图标(例如,codedeploydemobucket),但不要选择存储桶本身。

  3. 选择 Actions,然后选择 Delete

  4. 在提示删除存储桶时,选择 OK

删除 AWS CodeDeploy 中的应用程序和部署组记录

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS CodeDeploy 控制台:https://console.www.amazonaws.cn/codedeploy

    注意

    使用您在入门中使用的相同账户或 IAM 用户信息进行登录。

  2. 如果未显示应用程序列表,请在 AWS CodeDeploy 菜单上选择 Applications

  3. 选择要删除的应用程序的名称(例如,CodeDeploy-OnPrem-App)。

  4. Application details 页的底部,选择 Delete application

  5. 在系统提示时,键入应用程序的名称以确认要删除此应用程序,然后选择 Delete

您不能使用 AWS CodeDeploy 控制台来注销本地实例或者卸载 AWS CodeDeploy 代理。按照注销本地实例并删除 IAM 用户 中的说明进行操作。