AWS ECS上に構築するSpringアプリケーション(6)

【連載】

AWSで作るクラウドネイティブアプリケーションの基本

【第9回】AWS ECS上に構築するSpringアプリケーション(6)

[2019/05/08 08:00]川畑 光平 ブックマーク ブックマーク

開発ソフトウェア

本連載では、以下のイメージ構成に沿ってアプリケーション開発を進めています。

開発するアプリケーションの構成イメージ

前回、コンテナを実行するためのECSクラスタを作成しました。今回はECSタスクを定義してみましょう。

ECSタスクの定義

ECSタスクの定義では、前回プッシュしたDockerコンテナイメージのレジストリURLや割り当てるCPU、メモリ、マッピングするポートといったECSコンテナに関する設定を行います。

ECSタスクが実際にサービスとして実行されるには、コンテナイメージをプルしたり、CloudWachへログを送信したりするためのECSタスク実行用のIAMロールが必要です。また、必要に応じてコンテナ内のアプリケーションの動作のために必要なロールも事前に定義しておく必要があります。

まずは、ECSコンテナに割り当てるタスク実行用のIAMロールを作成しましょう。「IAM」サービスから「ロール」メニューを選択し、「ロールの作成」ボタンを押下します。「Elastic Container Service」を選び、「ユースケースの選択」で「Elastic Container Service Task」を選択してください。

「ロールの作成」画面

アタッチするアクセス権限のポリシーとして「AmazonECSTaskExecutionRolePolicy」を選択します。

「AmazonECSTaskExecutionRolePolicy」を選択

「ロール名」に任意の名前を入力して、「ロールの作成」ボタンを押下します。

「ロール名」に任意の名前を入力。ここでは「mynavi-sample-ecs-task-role」とした

同様に、アプリケーションの処理に応じて、必要なロールを作成してください。例えば、アプリケーションがS3へアクセスするならS3アクセスポリシーを割り当てたIAMロールを設定するといった具合です。

続いて、「ECSタスク定義」を実行します。「ECS」サービスで、「タスク定義」メニューを選択し、「新しいタスク定義の作成」ボタンを押下してください。「起動タイプの互換性の選択」には「EC2」を選択します。

「新しいタスク定義の作成」画面

以下の要領に従って、ECSタスク定義の設定を行います。

入力項目 説明
タスク定義名 タスク定義として任意の名称を入力します
タスクロール アプリケーションの処理内容に応じて必要なIAMロールを設定します。特にAWSのサービスを利用する処理がなければ、「なし」も選択できます。詳細は「タスク用のIAMロール」を参照してください
ネットワークモード コンテナとクラスタ間のネットワーク変換の方式を指定します。通常はデフォルトでかまいません
タスク実行ロール 上記で作成したタスク実行用のIAMロールを指定します。詳細は「Amazon ECS タスク実行IAMロール」を参照してください
タスクメモリ コンテナに割り当てるメモリを指定します。Springアプリケーションを実行する際は最低1024MB以上は割り当ててください
タスクCPU コンテナに割り当てるCPUユニット数を指定します

タスクとコンテナの定義を設定する

また、コンテナの定義は以下の要領に従って、実行してください。

入力項目 説明
コンテナ名 コンテナの任意の名称を入力します
イメージ DockerイメージのあるレジストリURLを[registry-url]/[namespace]/[image]:[tag]の形式で指定します。Docker Hubの公開レポジトリであれば、[namespace]/[image]の形式でも可能です
プライベートレジストリの認証 認証が必要なプライベートレジストリからコンテナイメージを取得する場合に指定します
メモリ制限 コンテナに割り当てるメモリを指定します。Springアプリケーションを実行する際は最低1024MB以上は割り当ててください
ポートマッピング コンテナアプリケーションにマッピングするポート番号を指定します。例えば、ECSクラスタが80番ポートで受け付けて、コンテナが8080番ポートに変換して実行する場合、ホストポートに80を、コンテナポートに8080を指定します。なお、動的ポートマッピングを使用する場合は0を設定してください

「詳細コンテナの設定」はスキップしても問題ないため、必要に応じてアプリケーションへの環境変数などを設定すればよい

パブリック/プライベート用アプリケーションのコンテナイメージをそれぞれタスク定義すれば完了です。次回は、いよいよECSサービスを実行してみます。

著者紹介


川畑 光平(KAWABATA Kohei)

某システムインテグレータにて、金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。

Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professionalなどの資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。

本連載の内容に対するご意見・ご質問は Facebook まで。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

[講演資料提供] NoOpsに挑め! 新世代の設計思想をアーキテクトが解説

[講演資料提供] NoOpsに挑め! 新世代の設計思想をアーキテクトが解説

「NoOpsは、『No Uncomfortable Ops』を意味します。すなわち、システム運用保守に関する『嬉しくないもの』を取り除く活動です」――NoOps Japan 発起人を務めるゼンアーキテクツの岡 大勝氏は、10月3日に開催したIT Search+スペシャルセミナー『NoOpsはじめの一歩 ~新世代の設計思想を知る~』においてNoOpsをこう説明…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
ソフトウェア開発自動化入門
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る