

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Fargate を使用して Amazon ECS に Java マイクロサービスをデプロイする
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate"></a>

*Vijay Thompson と Sandeep Bondugula、Amazon Web Services*

## 概要
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-summary"></a>

このパターンは、AWS Fargate を使用して Amazon Elastic Container Service (Amazon ECS) 上にコンテナ化された Java マイクロサービスをデプロイするためのガイダンスを提供します。このパターンでは、コンテナ管理に Amazon Elastic Container Registry (Amazon ECR) は使用せず、代わりに、Docker イメージは Docker ハブからプルされます。

## 前提条件と制限事項
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-prereqs"></a>

**前提条件**
+ Docker ハブにある既存の Java マイクロサービスアプリケーション
+ パブリック Docker リポジトリ
+ アクティブな AWS アカウント
+ Amazon ECS や Fargate などの AWS サービスに精通していること
+ Docker、Java、Spring Boot フレームワーク
+ Amazon Relational Database Service (Amazon RDS) が実行中 (オプション)
+ アプリケーションで Amazon RDS が必要な場合の仮想プライベートクラウド (VPC) (オプション)

## アーキテクチャ
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-architecture"></a>

**ソーステクノロジースタック**
+ Java マイクロサービス (たとえば、Spring Boot で実装されたもの) と Docker にデプロイされたもの

**ソースアーキテクチャ**

![Docker にデプロイされた Java マイクロサービスのソースアーキテクチャ](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/65185957-2b8b-43a6-964c-95ce0a45ba17/images/0a946ca8-fe37-4ede-85cb-a80a1c36105d.png)


**ターゲットテクノロジースタック**
+ Fargate を使用して各マイクロサービスをホストする Amazon ECS クラスター
+ Amazon ECS クラスターと関連するセキュリティグループをホストする VPC ネットワーク 
+ Fargate を使用してコンテナを起動する各マイクロサービスのクラスター/タスク定義

**ターゲットアーキテクチャ**

![Amazon ECS の Java マイクロサービスのターゲットアーキテクチャ](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/65185957-2b8b-43a6-964c-95ce0a45ba17/images/b21349ea-21fc-4688-b76a-1bde479858aa.png)


## ツール
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-tools"></a>

**ツール**
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) では、独自のコンテナオーケストレーションソフトウェアのインストールと運用、仮想マシンのクラスターの管理とスケーリング、またはそれらの仮想マシン上でコンテナをスケジュールする必要がなくなります。 
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html) を使用すると、サーバーまたは Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを管理しないでコンテナを実行する上で役立ちます。Amazon Elastic Container Service (Amazon ECS) と合わせて使用されます。
+ [Docker](https://www.docker.com/) は、アプリケーションをすばやくビルド、テスト、およびデプロイできるソフトウェアプラットフォームです。Docker は、ライブラリ、システムツール、コード、ランタイムなど、ソフトウェアの実行に必要なものがすべて揃った*コンテナ*と呼ばれる標準化されたユニットにソフトウェアをパッケージ化します。 

**Docker コード**

次の Dockerfile では、使用する Java 開発キット (JDK) のバージョン、Java アーカイブ (JAR) ファイルが存在する場所、公開されるポート番号、およびアプリケーションのエントリポイントを指定します。

```
FROM openjdk:11
ADD target/Spring-docker.jar Spring-docker.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","Spring-docker.jar"]
```

## エピック
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-epics"></a>

### 新しいタスク定義を作成する
<a name="create-new-task-definitions"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| タスク定義を作成します。 | Amazon ECS で Docker コンテナを実行するには、タスク定義が必要です。Amazon ECS コンソール（[https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/)）を開き、[**Task definitions（タスク定義）**] を選択してから、新しいタスク定義を作成します。詳細については、[Amazon ECS ドキュメント](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html)を参照してください。 | AWS システム管理者、アプリ開発者 | 
| [起動タイプ] を選択します。 | 起動タイプとして、**[Fargate]** を選択します。 | AWS システム管理者、アプリ開発者 | 
| タスクを設定します。 | タスク名を定義し、適切な量のタスクメモリと CPU でアプリケーションを設定します。 | AWS システム管理者、アプリ開発者 | 
| コンテナを定義します。 | コンテナ名を指定します。イメージには、Docker サイト名、リポジトリ名、および Docker イメージのタグ名 (`docker.io/sample-repo/sample-application:sample-tag-name`) を入力します。アプリケーションのメモリ制限を設定し、許可するポートのポートマッピング (`8080, 80`) を設定します。 | AWS システム管理者、アプリ開発者 | 
| タスクを作成します。 | タスクとコンテナの設定が完了したら、タスクを作成します。詳細な手順については、*[関連リソース]* セクションのリンクを参照してください。 | AWS システム管理者、アプリ開発者 | 

### クラスターを設定する
<a name="configure-the-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| クラスターを作成および設定します。 | クラスタータイプとして **[Networking only（ネットワーキングのみ)]** を選択し、名前を設定してからクラスターを作成、または可能な場合は既存のクラスターを使用します。詳細については、[Amazon ECS ドキュメント](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html)を参照してください。 | AWS システム管理者、アプリ開発者 | 

### タスクの設定
<a name="configure-task"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  タスクを作成します。 | クラスター内で、**[新しいタスクを実行]** を選択します。 | AWS システム管理者、アプリ開発者 | 
| [起動タイプ] を選択します。 | 起動タイプとして、**[Fargate]** を選択します。 | AWS システム管理者、アプリ開発者 | 
| タスク定義、リビジョン、プラットフォームバージョンを選択します。 | 実行するタスク、タスク定義のリビジョン、プラットフォームバージョンを選択します。 | AWS システム管理者、アプリ開発者 | 
| クラスターを選択します。 | タスクを実行するクラスターを選択します。 | AWS システム管理者、アプリ開発者 | 
| タスクの数を指定します。 | 実行するタスクの数を設定します。2 つ以上のタスクで起動する場合、タスク間でトラフィックを分散するロードバランサーが必要です。 | AWS システム管理者、アプリ開発者 | 
| タスクグループを指定します。 | (オプション) 一連の関連するタスクをタスクグループとして特定するタスクグループ名を指定します。 | AWS システム管理者、アプリ開発者 | 
| クラスター VPC、サブネット、セキュリティグループを設定します。 | アプリケーションをデプロイする、クラスター VPC とサブネットを設定します。セキュリティグループ (HTTP、HTTPS、ポート 8080) を作成または更新して、インバウンド接続とアウトバウンド接続にアクセスします。 | AWS システム管理者、アプリ開発者 | 
| パブリック IP 設定を設定します。 | Fargate タスクにパブリック IP アドレスを使用するかどうかに応じて、パブリック IP を有効または無効にします。デフォルトの推奨オプションは、**有効**です。 | AWS システム管理者、アプリ開発者 | 
| 設定を確認してタスクを作成する | 設定を確認してから、**[タスク実行]** を選択します。 | AWS システム管理者、アプリ開発者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション URL をコピーします。 | タスクステータスが*実行中*に更新されたら、タスクを選択します。ネットワーキングセクションで、パブリック IP をコピーします。 | AWS システム管理者、アプリ開発者 | 
| アプリケーションをテストします。 | ブラウザにパブリック IP を入力してアプリケーションをテストします。 | AWS システム管理者、アプリ開発者 | 

## 関連リソース
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-resources"></a>
+ [Amazon ECS 用 Docker の基本](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)(Amazon ECS ドキュメント)
+ [AWS Fargate 上の Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)(Amazon ECS ドキュメント)
+ [タスク定義の作成](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html)(Amazon ECS ドキュメント)
+ [クラスターの作成](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html)(Amazon ECS ドキュメント)
+ [基本的なサービスパラメータの設定](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/basic-service-params.html)(Amazon ECS ドキュメント)
+ [ネットワークの設定](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-configure-network.html)(Amazon ECS ドキュメント)
+ [Amazon ECS への Java マイクロサービスのデプロイ](https://aws.amazon.com/blogs/compute/deploying-java-microservices-on-amazon-ec2-container-service/)(ブログ投稿)