搭配 AWS CodeCommit 使用 EB CLI - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 AWS CodeCommit 使用 EB CLI

您可使用 EB CLI,直接自 AWS CodeCommit 儲存庫部署您的應用程式。透過 CodeCommit,您部署時可僅將變更上傳至儲存庫,無須上傳整個專案。若您的專案較大或網際網路連線能力受限,如此可節省您的時間和頻寬。使用 eb appversioneb createeb deploy 時,EB CLI 會推播本機遞交內容,並用其建立應用程式版本。

若要部署變更,CodeCommit 整合會要求您先遞交變更。然而,當您開發或除錯時,建議您不要推播正處理待確認的變更。您可以暫存變更並使用會執行標準部署的 eb deploy --staged,藉此避免遞交變更。或者,先將您的變更遞交至開發或測試分支,並在您程式碼就緒後,再合併至主線分支。透過 eb use,您可將 EB CLI 設定為自您的開發分支部署至環境,並自主線分支部署至不同環境。

注意

某些區域未提供 CodeCommit。Elastic Beanstalk 和 CodeCommit 之間的整合在這些區域中不會發生作用。

如需各區域提供的 AWS 服務的資訊,請參閱區域表

必要條件

若要將 CodeCommit 與 AWS 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 執行個體。

搭配 EB CLI 使用 CodeCommit 整合
  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,以設定其他分支或修改目前分支的組態。

使用 EB CLI 設定 CodeCommit 整合
  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