

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

# QuickStart：將 Java 應用程式部署到 Elastic Beanstalk
<a name="java-quickstart"></a>

本 QuickStart 教學課程會逐步引導您建立 Java 應用程式並將其部署到 AWS Elastic Beanstalk 環境的程序。

**不適用於生產用途**  
範例僅用於示範。請勿在生產環境中使用範例應用程式。

**Topics**
+ [AWS 您的帳戶](#java-quickstart-aws-account)
+ [先決條件](#java-quickstart-prereq)
+ [步驟 1：建立 Java 應用程式](#java-quickstart-create-app)
+ [步驟 2：在本機執行您的應用程式](#java-quickstart-run-local)
+ [步驟 3：使用 EB CLI 部署您的 Java 應用程式](#java-quickstart-deploy)
+ [步驟 4：在 Elastic Beanstalk 上執行應用程式](#java-quickstart-run-eb-ap)
+ [步驟 5：清除](#java-tutorial-cleanup)
+ [AWS 應用程式的 資源](#java-quickstart-eb-resources)
+ [後續步驟](#java-quickstart-next-steps)
+ [使用 Elastic Beanstalk 主控台部署](#java-quickstart-console)

## AWS 您的帳戶
<a name="java-quickstart-aws-account"></a>

如果您還不是 AWS 客戶，則需要建立 AWS 帳戶。註冊可讓您存取 Elastic Beanstalk 和其他您需要 AWS 的服務。

如果您已有 AWS 帳戶，您可以繼續前往 [先決條件](#java-quickstart-prereq)。

### 建立 AWS 帳戶
<a name="java-quickstart-aws-account-procedure"></a>

#### 註冊 AWS 帳戶
<a name="sign-up-for-aws"></a>

若要開始使用 AWS，您需要 AWS 帳戶。如需建立 的相關資訊 AWS 帳戶，請參閱《 *AWS 帳戶管理 參考指南*》中的 [入門 AWS 帳戶](https://docs.aws.amazon.com//accounts/latest/reference/getting-started.html)。

## 先決條件
<a name="java-quickstart-prereq"></a>

為了遵循本指南的程序，您需要命令列終端機或 shell 來執行命令。命令清單前會出現提示字元 ($) 及目前的目錄名稱 (如有)。

```
~/eb-project$ this is a command
this is output
```

在 Linux 和 macOS 上，您可以使用偏好的 Shell 和套件軟體管理工具。在 Windows [上，您可以安裝適用於 Linux 的 Windows 子系統](https://docs.microsoft.com/en-us/windows/wsl/install-win10)，以取得與 Windows 整合的 Ubuntu 和 Bash 版本。

### EB CLI
<a name="java-quickstart-prereq.ebcli"></a>

本教學使用 Elastic Beanstalk 命令列界面 (EB CLI)。關於安裝和設定 EB CLI 的詳細資訊，請參閱[使用設定指令碼安裝 EB CLI （建議）](eb-cli3.md#eb-cli3-install) 和[設定 EB CLI](eb-cli3-configuration.md)。

### Java 和 Maven
<a name="java-quickstart-prereq.runtime"></a>

如果您的本機電腦上未安裝 Amazon Corretto，您可以依照 *Amazon Corretto 使用者指南*中的[安裝說明](https://docs.aws.amazon.com/corretto/latest/corretto-21-ug/amazon-linux-install.html)進行安裝。

執行下列命令來驗證您的 Java 安裝。

```
~$ java -version 
```

本教學課程使用 Maven。請遵循 Apache Maven 專案網站上的[下載](https://maven.apache.org/download.cgi)和[安裝](https://maven.apache.org/install.html)說明。如需 Maven 的詳細資訊，請參閱 Apache [Maven 專案網站上的 Maven 使用者中心](https://maven.apache.org/users/index.html)。

執行下列命令來驗證您的 Maven 安裝。

```
~$ mvn -v
```

## 步驟 1：建立 Java 應用程式
<a name="java-quickstart-create-app"></a>

建立專案目錄。

```
~$ mkdir eb-java
~$ cd eb-java
```

接著，請建立您將使用 Elastic Beanstalk 進行部署的應用程式。我們將建立一個「Hello World」RESTful Web 服務。

此範例使用 [Spring Boot](https://spring.io/projects/spring-boot) 架構。此應用程式會在連接埠 5000 上開啟接聽程式。根據預設，Elastic Beanstalk 會將請求轉送至連接埠 5000 上的應用程式。

建立下列檔案：

此檔案會建立簡單的 Spring Boot 應用程式。

**Example `~/eb-java/src/main/java/com/example/Application.java`**  

```
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
```

此檔案會建立映射，傳回我們在此處定義的字串。

**Example `~/eb-java/src/main/java/com/example/Controller.java`**  

```
package com.example;
    
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
    
@RestController
public class Controller {
    
    @GetMapping("/")
    public String index() {
       return "Hello Elastic Beanstalk!";
    }
}
```

此檔案定義 Maven 專案組態。

**Example `~/eb-java/pom.xml`**  

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.3</version>
  </parent>

  <groupId>com.example</groupId>
  <artifactId>BeanstalkJavaExample</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <java.version>21</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>
```

此屬性檔案會覆寫預設連接埠為 5000。這是 Elastic Beanstalk 為 Java 應用程式傳送流量的預設連接埠。

**Example `~/eb-java/application.properties`**  

```
server.port=5000
```

## 步驟 2：在本機執行您的應用程式
<a name="java-quickstart-run-local"></a>

使用下列命令封裝您的應用程式：

```
~/eb-java$ mvn clean package
```

使用下列命令在本機執行應用程式：

```
~/eb-java$ java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
```

應用程式執行時，請在瀏覽器`http://127.0.0.1:5000/`中導覽至 。您應該會看到「Hello Elastic Beanstalk！」文字。

## 步驟 3：使用 EB CLI 部署您的 Java 應用程式
<a name="java-quickstart-deploy"></a>

在將 Java 應用程式部署至 Elastic Beanstalk 之前，讓我們先從目錄中清除建置應用程式，並建立 [Buildfile](java-se-buildfile.md) 和 [Procfile](java-se-procfile.md)，以控制應用程式在 Elastic Beanstalk 環境中的建置和執行方式。

**準備和設定應用程式部署**

1. 清理建置的應用程式。

   ```
   ~/eb-java$ mvn clean
   ```

1. 建立 `Buildfile`。  
**Example `~/eb-java/Buildfile`**  

   ```
   build: mvn clean package
   ```

   這會`Buildfile`指定用來建置應用程式的命令。如果您未包含 `Buildfile` Java 應用程式的 ，Elastic Beanstalk 不會嘗試建置您的應用程式。

1. 建立 `Procfile`。  
**Example `~/eb-java/Procfile`**  

   ```
   web: java -jar target/BeanstalkJavaExample-1.0-SNAPSHOT.jar
   ```

   這會`Procfile`指定用來執行應用程式的命令。如果您未`Procfile`為 Java 應用程式包含 ，Elastic Beanstalk 會假設原始碼套件的根目錄中有一個 JAR 檔案，並嘗試使用 `java -jar`命令執行該檔案。

 現在您已設定組態檔案來建置和啟動應用程式，您已準備好進行部署。

**建立環境並部署您的 Java 應用程式**

1. 透過 **eb init** 命令初始化您的 EB CLI 儲存庫。

   ```
   ~/eb-java eb init -p corretto java-tutorial --region {{us-east-2}}
           
   Application java-tutorial has been created.
   ```

   此命令會建立名為 的應用程式，`java-tutorial`並設定您的本機儲存庫，以使用最新的 Java 平台版本建立環境。

1. (選用) 再次執行 **eb init** 來設定預設金鑰對，藉此使用 SSH 連接至執行您應用程式的 EC2 執行個體：

   ```
   ~/eb-java$ eb init
   Do you want to set up SSH for your instances?
   (y/n): y
   Select a keypair.
   1) my-keypair
   2) [ Create new KeyPair ]
   ```

   若您已有金鑰對，請選擇一對，或依照提示建立金鑰對。若未出現提示，或稍後需要變更設定，請執行 **eb init -i**。

1. 使用 **eb create** 建立環境並於其中部署您的應用程式。Elastic Beanstalk 會自動為您的應用程式建置 zip 檔案，並在連接埠 5000 上啟動該檔案。

   ```
   ~/eb-java$ eb create java-env
   ```

   Elastic Beanstalk 大約需要五分鐘的時間來建立您的環境。

## 步驟 4：在 Elastic Beanstalk 上執行應用程式
<a name="java-quickstart-run-eb-ap"></a>

當建立環境的程序完成時，請使用 開啟您的網站**eb open**。

```
~/eb-java eb open
```

恭喜您！您已使用 Elastic Beanstalk 部署 Java 應用程式！這會開啟瀏覽器視窗，並使用為應用程式建立的網域名稱。

## 步驟 5：清除
<a name="java-tutorial-cleanup"></a>

您可以在完成使用應用程式時終止您的環境。Elastic Beanstalk 會終止與您的環境相關聯的所有 AWS 資源。

若要使用 EB CLI 終止 Elastic Beanstalk 環境，請執行下列命令。

```
~/eb-java$ eb terminate
```

## AWS 應用程式的 資源
<a name="java-quickstart-eb-resources"></a>

您剛建立單一執行個體應用程式。它可作為具有單一 EC2 執行個體的簡單範例應用程式，因此不需要負載平衡或自動擴展。對於單一執行個體應用程式，Elastic Beanstalk 會建立下列 AWS 資源：
+ **EC2 執行個體** – 設定在您所選平台上執行 Web 應用程式的 Amazon EC2 虛擬機器。

  每個平台會執行不同一套軟體、設定檔和指令碼，來支援特定的語言版本、架構、Web 容器或其組合。大多數的平台會使用 Apache 或 nginx 做為反向代理，處理您 Web 應用程式前端的網路流量、向它轉送請求、提供靜態資產，並產生存取和錯誤日誌。
+ **執行個體安全群組** – 設定允許從連接埠 80 傳入流量的 Amazon EC2 安全群組。此資源可讓負載平衡器傳來的 HTTP 傳輸資料，到達執行您 Web 應用程式的 EC2 執行個體。在預設情況下，不允許傳輸資料從其他通訊埠傳送。
+ **Amazon S3 儲存貯體** - 儲存位置，用來儲存當您使用 Elastic Beanstalk 時所建立的原始程式碼、日誌和其他成品。
+ **Amazon CloudWatch 警示** – 兩種 CloudWatch 警示，用來監控您環境中執行個體上的負載，會在負載過高或過低時觸發。當警示觸發時，您的 Auto Scaling 群組會擴展或縮減以進行回應。
+ **CloudFormation 堆疊** – Elastic Beanstalk 使用 CloudFormation 啟動環境中的資源並傳播組態變更。資源定義於範本中，您可在 [CloudFormation 主控台](https://console.aws.amazon.com/cloudformation)中檢視此範本。
+  **網域名稱** – 會路由到您 Web 應用程式的網域名稱，其格式為 *{{subdomain}}.{{region}}.elasticbeanstalk.com*。

Elastic Beanstalk 會管理所有這些資源。當您終止環境時，Elastic Beanstalk 會終止其中的所有資源。

## 後續步驟
<a name="java-quickstart-next-steps"></a>

在您擁有執行應用程式的環境後，可以隨時部署應用程式的新版本或不同的應用程式。部署新的應用程式版本非常快速，因無須佈建或重新啟動 EC2 執行個體。您也可以使用 Elastic Beanstalk 主控台探索您的新環境。如需詳細步驟，請參閱本指南*入門*章節中的[探索您的環境](GettingStarted.md#GettingStarted.Explore)。

**嘗試更多教學課程**  
如果您想要使用不同的範例應用程式來嘗試其他教學課程，請參閱 [應用程式和教學課程範例](java-getstarted.md)。

部署範例應用程式一兩個，並準備好開始在本機開發和執行 Java 應用程式後，請參閱 [設定您的 Java 開發環境](java-development-environment.md)。

## 使用 Elastic Beanstalk 主控台部署
<a name="java-quickstart-console"></a>

您也可以使用 Elastic Beanstalk 主控台來啟動範例應用程式。如需詳細步驟，請參閱本指南*入門*章節中的[建立範例應用程式](GettingStarted.md#GettingStarted.CreateApp)。