AWSでVPC内にパブリックサブネットとプライベートサブネットを作成し、EC2とRDSを使用したシングル構成のWEBアプリケーションのインフラを構築する
こんにちは!さっしです!
遅ればせながら最近AWSにはまってきたので、自分の忘備録の意味を込めて、タイトル通りの設定をまとめてみました。
AWSを触ったことがない人も、とりあえずこの内容通りにやっていただければ、LAMP環境(※PHPは含みません)をさくっと実装できると思います。
■構成図
■やること
1.1つのリージョンに「VPC」を作成する
2.VPC内に「1つのパブリックサブネット」を作成する
3.VPC内に「2つのプライベートサブネット」を作成する
4.「インターネットゲートウェイ」を作成し、VPCにアタッチする
5.パブリックサブネットの「ルートテーブル」を編集し、ローカル通信以外をインターネットゲートウェイに向ける(デフォルトゲートウェイ)
6.・パブリックサブネットに「EC2」を作成する
7.EC2の「セキュリティグループ」を作成し、デフォルトのセキュリティグループと差し替える
8.RDSの「サブネットグループ」を作成する
9.プライベートサブネットに「RDS」を作成する
10.RDSの「セキュリティグループ」を編集する
11.確認
■1.1つのリージョンにVPCを作成する
・ナビゲーションバーの検索バーに「VPC」と入力し、表示されたサービスの「VPC」をクリックする
・ナビゲーションペインの「VPC」をクリック後、右上の「VPCを作成」ボタンをクリックする
・以下の内容を入力し「VPCを作成」ボタンをクリックする
※「テナンシー」はAWSのリソースを占有する際に選択する
・VPCが作成されたことを確認する
■2.VPC内に1つのパブリックサブネットを作成する
・ナビゲーションペインの「サブネット」をクリック後、右上の「サブネットを作成」ボタンをクリックする
・以下の内容を入力し「サブネットを作成」ボタンをクリックする
■3.VPC内に2つのプライベートサブネットを作成する
・パブリックサブネット作成時の操作を用いてプライベートサブネットを作成する
※以下、パブリックサブネット作成時との相違点のみ抜粋
○1つ目
サブネット名:practice-private-subnet1
IPv4 CIDR ブロック:10.0.1.0/24
○2つ目
サブネット名:practice-private-subnet2
アベイラビリティーゾーン:ap-northeast-1c
IPv4 CIDR ブロック:10.0.2.0/24
■4.インターネットゲートウェイを作成し、VPCにアタッチする
・ナビゲーションペインの「インターネットゲートウェイ」をクリック後、右上の「インターネットゲートウェイを作成」ボタンをクリックする
・以下の内容を入力し「インターネットゲートウェイの作成」ボタンをクリックする
・作成したインターネットゲートウェイを選択し、アクション→VPCにアタッチをクリックする
・アタッチしたいVPCを選択し「インターネットゲートウェイのアタッチ」ボタンをクリックする
■5.パブリックサブネットのルートテーブルを編集し、ローカル通信以外をインターネットゲートウェイに向ける
・ナビゲーションペインの「サブネット」をクリック後、パブリックサブネットを選択し「ルートテーブル」タブのリンクをクリックする
・「ルート」タブをクリック後「ルートの編集」ボタンをクリックする
・「ルートの追加」ボタンをクリック後、以下の内容を入力し「ルートの保存」ボタンをクリックする
■6.パブリックサブネットにEC2を作成する
・ナビゲーションバーの検索バーに「EC2」と入力し、表示されたサービスの「EC2」をクリックする
・ナビゲーションペインの「インスタンス」をクリック後、右上の「インスタンスを起動」ボタンをクリックする
・Amazon Linux 2 AMIの「選択」ボタンをクリックする
・t2.microを選択し「次のステップ」ボタンをクリックする
・以下の内容を入力し「次のステップ」ボタンをクリックする
・デフォルトのままとし「次のステップ」ボタンをクリックする
・以下の内容を入力し「次のステップ」ボタンをクリックする
・デフォルトのままとし「確認と作成」ボタンをクリックする
・確認画面が表示されるので「起動」ボタンをクリックする
・以下の内容を入力し「ダウンロード」ボタンをクリック後「インスタンスの作成」ボタンをクリックする
・キーペアを使用して、EC2にssh接続し、apacheとmysqlクライアントをインストールする
ssh -i /path/to/some/dir/practice-keypair.pem ec2-user@3.112.37.117
sudo su -
yum -y update
yum -y install mysql httpd
systemctl start httpd.service
■7.EC2用のセキュリティグループを作成し、デフォルトのセキュリティグループと差し替える
・ナビゲーションペインの「セキュリティーグループ」をクリック後、右上の「セキュリティグループを作成」ボタンをクリックする
・以下の内容を入力し「ダウンロード」ボタンをクリック後「セキュリティグループを作成」ボタンをクリックする
・ナビゲーションペインの「インスタンス」をクリック後、右上の「アクション」→「セキュリティ」→「セキュリティグループを変更」をクリックする
・先ほど作成したセキュリティグループを設定し「保存」ボタンをクリックする
■8.RDSのサブネットグループを作成する
・ナビゲーションバーの検索バーに「RDS」と入力し、表示されたサービスの「RDS」をクリックする
・ナビゲーションペインの「サブネットグループ」をクリック後、右上の「DBサブネットグループを作成」をクリックする
・以下の内容を入力し「作成」ボタンをクリックする
■9.プライベートサブネットにRDSを作成する
・ナビゲーションペインの「データベース」をクリック後、右上の「データベースの作成」をクリックする
・以下の内容を入力し「データベースの作成」ボタンをクリックする
■10.RDSのセキュリティグループを編集する
・ナビゲーションバーの検索バーに「VPC」と入力し、表示されたサービスの「VPC」をクリックする
・ナビゲーションペインの「セキュリティグループ」をクリック後、先ほど作成したセキュリティグループを選択し「インバウンドルール」タブ→「インバウンドルールの編集」ボタンをクリックする
・以下の内容を入力し「ルールを保存」ボタンをクリックする
※ソースに設定する値は、EC2用に作成したセキュリティグループを設定する(EC2からのみアクセスを許可するため)
■11.確認
・パブリックIPv4アドレスをブラウザに入力し、apacheのデフォルト画面が表示される
・EC2からRDSに接続ができる
mysql -h practice-rds.xxxxxxx.ap-northeast-1.rds.amazonaws.com -u admin -p
設定は以上になります。
■注意点
・RDSはシングル構成であっても、サブネットグループが必要となる
※サブネットグループは複数のアベイラビリティーゾーンに跨っている必要がある
・ssh接続ができない場合は、キーペアの権限を400に設定する
chmod 0400 /path/to/some/dir/practice-keypair.pem
■現在使用可能なリージョンとアベイラビリティゾーンについて
・以下の公式サイトを参照すると良い
https://aws.amazon.com/jp/about-aws/global-infrastructure/regions_az/