通过 Amazon CodeCommit 使用 EB CLI - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

通过 Amazon CodeCommit 使用 EB CLI

您可以使用 EB CLI 直接从 Amazon CodeCommit 存储库部署应用程序。利用 CodeCommit,部署时您只能上载对存储库的更改,而不是上载整个项目。如果您的项目比较大或 Internet 连接带宽有限,这能为您节省时间和带宽。使用 eb appversioneb createeb deploy 时,EB CLI 将推送本地提交内容并使用它们创建应用程序版本。

若要部署更改,CodeCommit 集成要求您先提交更改。不过,在开发或调试时,建议您不要推送正在处理的未确认更改。您可以通过暂存您的更改并使用 eb deploy --staged (该命令将执行标准部署) 来避免提交这些更改。或者,您可以先将更改提交到开发或测试分支,仅当代码就绪时再合并到主线分支。利用 eb use,您可以将 EB CLI 配置为从开发分支部署到一个环境并从主线分支部署到其他环境。

注意

有些区域不提供 CodeCommit。Elastic Beanstalk 和 CodeCommit 之间的集成在这些区域无法正常工作。

有关每个区域中提供的Amazon服务的信息,请参阅区域表

先决条件

要将 CodeCommit 与 Amazon Elastic Beanstalk 配合使用,您需要一个至少包含一次提交的本地 Git 存储库(已有的或新建的)、使用 CodeCommit 的权限以及 CodeCommit 支持的区域中的 Elastic Beanstalk 环境。您的环境和存储库必须位于同一个区域中。

初始化 Git 存储库
  1. 运行项目文件夹中的 git init

    ~/my-app$ git init
  2. 使用 git add 暂存您的项目文件。

    ~/my-app$ git add .
  3. 使用 git commit 提交更改。

    ~/my-app$ git commit -m "Elastic Beanstalk application"

使用 EB CLI 创建 CodeCommit 存储库

要开始使用 CodeCommit,请运行 eb init。在存储库配置期间,EB CLI 会提示您使用 CodeCommit 存储代码并加快部署。即使您之前已使用 eb init 配置项目,也可以重新运行它来配置 CodeCommit。

使用 EB CLI 创建 CodeCommit 存储库
  1. 运行项目文件夹中的 eb init。在配置期间,EB CLI 会询问您是否要使用 CodeCommit 存储代码并加快部署。如果您之前已使用 eb init 配置项目,则仍可以重新运行它来配置 CodeCommit。在提示符处键入 y 以设置 CodeCommit。

    ~/my-app$ eb init Note: Elastic Beanstalk now supports AWS CodeCommit; a fully-managed source control service. To learn more, see Docs: https://aws.amazon.com/codecommit/ Do you wish to continue with CodeCommit? (y/n)(default is n): y
  2. 选择 Create new Repository (创建新存储库)

    Select a repository 1) my-repo 2) [ Create new Repository ] (default is 2): 2
  3. 键入存储库名称或按 Enter 接受默认名称。

    Enter Repository Name (default is "codecommit-origin"): my-app Successfully created repository: my-app
  4. 为您提交的内容选择现有分支,或使用 EB CLI 创建新的分支。

    Enter Branch Name ***** Must have at least one commit to create a new branch with CodeCommit ***** (default is "mainline"): ENTER Successfully created branch: mainline

从 CodeCommit 存储库进行部署

在使用 EB CLI 存储库配置 CodeCommit 时,EB CLI 会使用存储库的内容创建源包。在运行 eb deployeb create 时,EB CLI 会推送新的提交内容,并使用分支的 HEAD 修订来创建将部署到环境中的 EC2 实例的存档。

将 CodeCommit 集成与 EB CLI 配合使用
  1. 使用 eb create 创建新环境。

    ~/my-app$ eb create my-app-env Starting environment deployment via CodeCommit --- Waiting for application versions to be pre-processed --- Finished processing application version app-ac1ea-161010_201918 Setting up default branch Environment details for: my-app-env Application name: my-app Region: us-east-2 Deployed Version: app-ac1ea-161010_201918 Environment ID: e-pm5mvvkfnd Platform: 64bit Amazon Linux 2016.03 v2.1.6 running Java 8 Tier: WebServer-Standard CNAME: UNKNOWN Updated: 2016-10-10 20:20:29.725000+00:00 Printing Status: INFO: createEnvironment is starting. ...

    EB CLI 使用所跟踪分支中的最新提交内容来创建部署到环境中的应用程序版本。

  2. 有新的本地提交内容时,请使用 eb deploy 推送这些提交内容并部署到环境中。

    ~/my-app$ eb deploy Starting environment deployment via CodeCommit INFO: Environment update is starting. INFO: Deploying new version to instance(s). INFO: New application version was deployed to running EC2 instances. INFO: Environment update completed successfully.
  3. 若要在提交更改之前测试更改,请使用 --staged 选项部署已使用 git add 添加到暂存区域的更改。

    ~/my-app$ git add new-file ~/my-app$ eb deploy --staged

    使用 --staged 选项进行部署时,将绕过 CodeCommit 执行标准部署。

配置其他分支和环境

CodeCommit 配置适用于单个分支。您可以使用 eb useeb codesource 配置其他分支或修改当前分支的配置。

配置 CodeCommit 与 EB CLI 的集成
  1. 若要更改远程分支,请使用 eb use 命令的 --source 选项。

    ~/my-app$ eb use test-env --source my-app/test
  2. 若要创建新的分支和环境,请检查新的分支,将它推送到 CodeCommit 并创建环境,然后使用 eb use 连接本地分支、远程分支和环境。

    ~/my-app$ git checkout -b production ~/my-app$ git push --set-upstream production ~/my-app$ eb create production-env ~/my-app$ eb use --source my-app/production production-env
  3. 要以交互方式配置 CodeCommit,请使用 eb codesource codecommit

    ~/my-app$ eb codesource codecommit Current CodeCommit setup: Repository: my-app Branch: test Do you wish to continue (y/n): y Select a repository 1) my-repo 2) my-app 3) [ Create new Repository ] (default is 2): 2 Select a branch 1) mainline 2) test 3) [ Create new Branch with local HEAD ] (default is 1): 1
  4. 要禁用 CodeCommit 集成,请使用 eb codesource local

    ~/my-app$ eb codesource local Current CodeCommit setup: Repository: my-app Branch: mainline Default set to use local sources

使用现有的 CodeCommit 存储库

如果您已经有 CodeCommit 存储库,并且想将其与 Elastic Beanstalk 配合使用,请在本地 Git 存储库的根目录下运行 eb init

将现有 CodeCommit 存储库与 EB CLI 配合使用
  1. 克隆 CodeCommit 存储库。

    ~$ git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/my-app
  2. 查看并推送要用于 Elastic Beanstalk 环境的分支。

    ~/my-app$ git checkout -b dev-env ~/my-app$ git push --set-upstream origin dev-env
  3. 运行 eb init。选择您当前使用的区域、存储库和分支名称。

    ~/my-app$ eb init Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : Europe (Ireland) 5) eu-central-1 : Europe (Frankfurt) 6) ap-south-1 : Asia Pacific (Mumbai) 7) ap-southeast-1 : Asia Pacific (Singapore) ... (default is 3): 1 ... Note: Elastic Beanstalk now supports AWS CodeCommit; a fully-managed source control service. To learn more, see Docs: https://aws.amazon.com/codecommit/ Do you wish to continue with CodeCommit? (y/n)(default is n): y Select a repository 1) my-app 2) [ Create new Repository ] (default is 1): 1 Select a branch 1) mainline 2) dev-env 3) [ Create new Branch with local HEAD ] (default is 2): 2

有关使用 eb init 的更多信息,请参阅配置 EB CLI