LoginSignup
10
14

More than 5 years have passed since last update.

[WIP] 1. Javaで開発したWebアプリケーションの実行環境をAWSに構築する(VPC&EC2作成)

Last updated at Posted at 2016-05-04

概要

Java(Spring-Bootを使用)で開発するWebアプリケーションの実行環境をAWS上に構築した作業内容のまとめです。
AWSの勉強を目的とした自宅での作業になりますので色々詰めの甘いところがあると思いますがご容赦ください。(ご指摘頂ければ喜びます。)
内容が長くなったので下記のように分割し、この記事では「VPC&EC2作成」を書きました。

Webアプリケーションのイメージ

Untitled.png

AWSに構築する実行環境

実行環境の概要図です。

AWS Design.png

サブネット

Publicサブネット (概要図の左上)

  • nginx、MySQL clientをインストールしたEC2インスタンスを1つ配置します。
  • クライアントからのhttpリクエストはこのnginxが受け取り、PrivateサブネットにあるEC2インスタンス上で実行するWebアプリケーションへ送ります。
  • このEC2インスタンスへWindowsからsshログイン(踏み台サーバーの役目)が出来るようにします。
  • このEC2インスタンスはルートテーブルに設定したInternet Gatewayを通じてインターネットへ接続できるようにします。
  • Nat Gatewayを配置します。

Privateサブネット (概要図の右上)

  • Java、Maven、MySQL client、gitをインストールしたEC2インスタンスを1つ配置します。
  • このEC2インスタンスでJavaで開発したWebアプリケーションを実行します。
  • WebアプリケーションはGitHubからソースコードをcheckoutしmavenでビルドします。
  • このEC2インスタンスはルートテーブルに設定したNat Gatewayを経由してインターネットへ接続できるようにします。

DB サブネットグループ (概要図の下半分)

  • 2つのPrivateサブネット(1a/1c)からなるサブネットグループにRDSインスタンスを配置します。
  • Public/PrivateサブネットにあるEC2インスタンスからの接続できるようにします。

実行環境の構築手順

  • VPCの作成
  • Internet Gatewayの作成
  • EIPの作成
  • Publicサブネットの作成
    • ルートテーブルの作成
      • Publicサブネットのルートテーブルの付け替え
    • Nat Gatewayの作成
  • Privateサブネットの作成
    • ルートテーブルの作成
      • Privateサブネットのルートテーブルの付け替え
  • EC2インスタンスの作成 (Publicサブネットに配置)
    • セキュリティグループの作成
    • キーペアの作成
  • EC2インスタンスの作成 (Privateサブネットに配置)
    • セキュリティグループの作成

(RDSは別の記事に書いてあります。)

VPCの作成

まずVPCから作成します。
CIDRブロックは10.0.0.0/16としました。

02-vpc-02.png

03-vpc-03.png

VPCを作成した直後の状態です。
ルートテーブルやネットワークACLなども同時に作成されていますが、ルートテーブルは用途別に新しく作成することにします。

04-vpc-04.png

DNSホスト名が無効(いいえ)になっているので、有効化します。
アクションボタンをクリックして「DNSホスト名の編集」から変更できます。

04-vpc-04-b.png

04-vpc-04-c.png

Internet Gatewayの作成

次にInternet Gatewayを作成します。
後でPublicサブネットのルートテーブルに設定します。

05-igw-01.png

06-igw-02.png

上記で作成したVPCにアタッチします。

07-igw-03.png

08-igw-04.png

EIPの作成

EIPを1つ確保します。このEIPはこの後に作成するNAT Gatewayで使用します。

09-eip-01.png

10-eip-02.png

Publicサブネットの作成

AZ 1aにPublicサブネットを作成します。(Public = インターネットへ接続できるという意味)
CIDRブロックは10.0.1.0/24としました。
このサブネットにはnginxをインストールするEC2を配置することにします。

11-public-subnet-http-01.png

12-public-subnet-http-02.png

サブネットを作成した直後の状態です。
ルートテーブルにはVPCのデフォルトが設定されているので、この後で新しく付け替えます。

13-public-subnet-http-03.png

自動割り当てパブリックIPが無効になっているので有効化します。
サブネットのアクションボタンをクリックして「自動割り当てパブリックIPの変更」から変更できます。

14-public-subnet-http-04.png

15-public-subnet-http-05.png

ルートテーブルの作成

上記で作成したPublicサブネットのルートテーブルを作成します。

16-public-subnet-http-06-rtb.png

送信先が0.0.0.0/0はInternet Gatewayへ送るようにルートを追加します。

17-public-subnet-http-07-rtb.png

Publicサブネットのルートテーブルの付け替え

上記で作成したルートテーブルで、Publicサブネットのデフォルトのルートテーブルと付け替えます。
これでこのサブネット内の通信は送信先がVPC向け(10.0.0.0/16)以外はインターネットへ向くようになります。

18-public-subnet-http-08-rtb.png

Nat Gatewayの作成

Nat Gatewayを作成します。
後でPrivateサブネットのルートテーブルに設定します。

19-public-subnet-http-09-nat.png

作成するには、サブネットにPublicサブネットを指定するのとEIPが必要になります。

20-public-subnet-http-10-nat.png

21-public-subnet-http-11-nat.png

Privateサブネットの作成

AZ 1cにPrivateサブネットを作成します。(Private = インターネットへ接続できないという意味)
CIDRブロックは10.0.2.0/24としました。
このサブネット内にWebアプリケーションを実行するEC2を配置することにします。

22-private-subnet-web-01.png

サブネットを作成した直後の状態です。
ルートテーブルにはVPCのデフォルトが設定されているので、この後で新しく付け替えます。

23-private-subnet-web-02.png

ルートテーブルの作成

上記で作成したPrivateサブネットのルートテーブルを作成します。

24-private-subnet-web-03-rtb.png

送信先が0.0.0.0/0はNat Gatewayへ送るようにルートを追加します。

25-private-subnet-web-04-rtb.png

Privateサブネットのルートテーブルの付け替え

上記で作成したルートテーブルで、Privateサブネットのデフォルトのルートテーブルと付け替えます。
これでこのサブネット内の通信は送信先がVPC向け(10.0.0.0/16)以外はNat Gatewayを経由してインターネットへ向くようになります。

26-private-subnet-web-05-rtb.png

EC2インスタンスの作成 (Publicサブネットに配置)

nginxを実行するためのEC2インスタンスをPublicサブネットへ作成します。
AMIにはAmazon Linux、インスタンスタイプはt2.microを選びました。

サブネットにPublicサブネットを選びます。

30-shurink.png

セキュリティグループの作成

このEC2インスタンス用のセキュリティグループを作成します。
sshはマイIP(自宅のIPアドレス)からのみ接続できるようにします。
httpは任意の場所(0.0.0.0/0)から接続できるようにしました。

33-shurink.png

キーペアの作成

新しくキーペアを作成します。この後に作成するEC2インスタンスでもこのキーペアを使用します。
プライベートキーファイル(pem)をダウンロードするとEC2インスタンスの作成が進められるようになります。

35-ec2-http-08-keypair.png

EC2インスタンスを作成した直後の状態です。

39-ec2-http-10.png

EC2インスタンスの作成 (Privateサブネットに配置)

Webアプリケーションを実行するためのEC2インスタンスをPrivateサブネットへ作成します。
サブネットにPrivateサブネットを選びます。

40-shurink.png

セキュリティグループの作成

このEC2インスタンス用のセキュリティグループを作成します。
sshはPublicサブネットのEC2からのみ接続できるようにします。
カスタムTCPポート9000はJavaで開発したWebアプリケーションの接続ポートです。これもsshと同様にPublicサブネットのEC2からのみ接続できるようにします。
(厳密に言えば、送信元に設定したセキュリティグループ(ID:sg-961c99f2)に属するEC2インスタンスからの接続が可能になります。)

42-shurink.png

EC2インスタンスを作成した直後の状態です。
キーペアは、1つ目のEC2インスタンスで作成したときのmy-aws-keypair-20160503を使用しました。

45-ec2-web-06.png

10
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
14