AWS Fargate ECSを使用して Amazon に Java マイクロサービスをデプロイする - AWS 規範ガイダンス

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

AWS Fargate ECSを使用して Amazon に Java マイクロサービスをデプロイする

作成者: Vijay Thompson (AWS) と Sandeep Bondugula (AWS)

環境:PoC またはパイロット

ソース: コンテナ

ターゲット: Amazon ECS

R タイプ:該当なし

テクノロジー: コンテナとマイクロサービス、ウェブとモバイルアプリ

AWS サービス: Amazon ECS

[概要]

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

前提条件と制限

前提条件

  • Docker ハブにある既存の Java マイクロサービスアプリケーション

  • パブリック Docker リポジトリ

  • アクティブなAWSアカウント

  • Amazon ECSや Fargate などのAWSサービスに精通している

  • Docker、Java、Spring Boot フレームワーク

  • Amazon Relational Database Service (Amazon RDS) を起動して実行 (オプション)

  • アプリケーションに Amazon が必要な場合は、仮想プライベートクラウド (VPC) RDS (オプション)

アーキテクチャ

ソーステクノロジースタック

  • Java マイクロサービス (たとえば、Spring Boot で実装されたもの) と Docker にデプロイされたもの

ソースアーキテクチャ

Docker にデプロイされた Java マイクロサービスのソースアーキテクチャ

ターゲットテクノロジースタック

  • Fargate を使用して各マイクロサービスをホストする Amazon ECSクラスター

  • Amazon ECSクラスターと関連するセキュリティグループをホストするVPCネットワーク 

  • Fargate を使用してコンテナを起動する各マイクロサービスのクラスター/タスク定義

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

Amazon の Java マイクロサービスのターゲットアーキテクチャ ECS

ツール

ツール

  • Amazon ECS では、独自のコンテナオーケストレーションソフトウェアをインストールして運用したり、仮想マシンのクラスターを管理してスケールしたり、それらの仮想マシンでコンテナをスケジュールしたりする必要がなくなります。 

  • AWS Fargate は、サーバーや Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを管理することなくコンテナを実行するのに役立ちます。Amazon Elastic Container Service (Amazon ) と組み合わせて使用されますECS。

  • Docker は、アプリケーションを素早くビルド、テスト、およびデプロイできるソフトウェアプラットフォームです。Docker は、ライブラリ、システムツール、コード、ランタイムなど、ソフトウェアの実行に必要なものがすべて揃ったコンテナと呼ばれる標準化されたユニットにソフトウェアをパッケージ化します。 

Docker コード

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

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

エピック

タスク説明必要なスキル

タスク定義を作成します。

Amazon で Docker コンテナを実行するには、タスク定義ECSが必要です。で Amazon ECSコンソールを開きhttps://console.aws.amazon.com/ecs/タスク定義 を選択し、新しいタスク定義を作成します。詳細については、「Amazon ECSドキュメント」を参照してください。

AWS システム管理者、アプリケーション開発者

[Launch type(起動タイプ)] を選択します。

起動タイプとして、[Fargate] を選択します。

AWS システム管理者、アプリケーション開発者

タスクを設定します。

タスク名を定義し、適切な量のタスクメモリと を使用してアプリケーションを設定しますCPU。

AWS システム管理者、アプリケーション開発者

コンテナを定義します。

コンテナ名を指定します。イメージには、Docker サイト名、リポジトリ名、および Docker イメージのタグ名 (docker.io/sample-repo/sample-application:sample-tag-name) を入力します。アプリケーションのメモリ制限を設定し、許可するポートのポートマッピング (8080, 80) を設定します。

AWS システム管理者、アプリケーション開発者

タスクを作成します。

タスクとコンテナの設定が完了したら、タスクを作成します。詳細な手順については、[関連リソース] セクションのリンクを参照してください。

AWS システム管理者、アプリケーション開発者
タスク説明必要なスキル

クラスターを作成および設定します。

クラスタータイプとして [Networking only(ネットワーキングのみ)] を選択し、名前を設定してからクラスターを作成、または可能な場合は既存のクラスターを使用します。詳細については、「Amazon ECSドキュメント」を参照してください。

AWS システム管理者、アプリケーション開発者
タスク説明必要なスキル

タスクを作成します。

クラスター内で、[Run new task(新しいタスクを実行)] を選択します。

AWS システム管理者、アプリケーション開発者

[Launch type(起動タイプ)] を選択します。

起動タイプとして、[Fargate] を選択します。

AWS システム管理者、アプリケーション開発者

タスク定義、リビジョン、プラットフォームバージョンを選択します。

実行するタスク、タスク定義のリビジョン、プラットフォームバージョンを選択します。

AWS システム管理者、アプリケーション開発者

クラスターを選択します。

タスクを実行するクラスターを選択します。

AWS システム管理者、アプリケーション開発者

タスクの数を指定します。

実行するタスクの数を設定します。2 つ以上のタスクで起動する場合、タスク間でトラフィックを分散するロードバランサーが必要です。

AWS システム管理者、アプリケーション開発者

タスクグループを指定します。

(オプション) 一連の関連するタスクをタスクグループとして特定するタスクグループ名を指定します。

AWS システム管理者、アプリケーション開発者

クラスター VPC、サブネット、およびセキュリティグループを設定します。

アプリケーションをデプロイするクラスターVPCとサブネットを設定します。セキュリティグループ (HTTP、HTTPS、およびポート 8080) を作成または更新して、インバウンド接続とアウトバウンド接続へのアクセスを提供します。

AWS システム管理者、アプリケーション開発者

パブリック IP 設定を設定する

Fargate タスクにパブリック IP アドレスを使用するかどうかに応じて、パブリック IP を有効または無効にします。デフォルトの推奨オプションは、有効です。

AWS システム管理者、アプリケーション開発者

設定を確認してタスクを作成する

設定を確認してから、[Run Task(タスク実行)] を選択します。

AWS システム管理者、アプリケーション開発者
タスク説明必要なスキル

アプリケーション をコピーしますURL。

タスクステータスが実行中に更新されたら、タスクを選択します。ネットワーキングセクションで、パブリック IP をコピーします。

AWS システム管理者、アプリケーション開発者

アプリケーションをテストする

ブラウザにパブリック IP を入力してアプリケーションをテストします。

AWS システム管理者、アプリケーション開発者

関連リソース