1
0

More than 1 year has passed since last update.

AWSインフラ構築【デプロイ】/ 初めてのAWS忘備録②

Last updated at Posted at 2022-03-17

前回の続き→AWSアカウント作成/ 初めてのAWS忘備録①

クラウドにアプリをデプロイする環境を作成していく。
まずはクラウド上に自分の作業スペースを作り、外部とのネットワークの設定を作る。
これからの作業はrootアカウントではなく、IAMユーザアカウントで進める。

リージョンの選択

クラウドサーバーを構築する、地域(リージョン)を指定する。
AWSは全世界で利用されており、各地域でホスティングされている。
画面右上のアカウント名の隣のプルダウンから「東京」を選択。

ホスティング
サーバーを借りること、ここではサーバーを利用されている(借りられている)という意味

タグの命名

タグとは
AWS リソースを識別および整理するためのメタデータとして使用される単語やフレーズ。
タグはキーと 1 つのオプションの値で構成されてる。

例えば EC2 が10台起動しているとし、どのEC2が自分のプロジェクトのものなのか一覧できると便利。そうしたい際に以下のようなタグ付けを行う。

Key Value
Name sample-vpc
Project project-1

初期段階で各リージョンごとでデフォルトのVPCなどが設定されているので、今回はそちらを利用する。
コンソール画面の検索窓から「VPC」を検索し進む。

・VPC
・サブネット(3つ)
・インターネットゲートウェイ
・ルートテーブル

上記それぞれNameタグが空になっているので、把握できるよう命名する。(例:subnet-1a など)

今回は下記のように命名。

#VPC
sample-vpc

#サブネット
subnet-1a
subnet-1c
subnet-1d
※アベイラビリティゾーンごとで命名

#インターネットゲートウェイ
sample-igw

#ルートテーブル
sample-rt

ルートテーブルをサブネットに紐付け

デフォルトで設定されているルートテーブル(sample-rt)をプライベートサブネット(subnet-1a, subnet-1c)と紐づける。

紐付けたいルートテーブルを選択し、「サブネットの関連付けを編集」から下記の2つのサブネットで紐付ける。

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

VPC内の通信の許可/拒否の設定をするためにセキュリティグループを設定する。
今回はアプリケーションサーバーとデータベースの通信設定を作成していく。

コンソール画面の検索窓から「VPC」を検索し、左メニューの「セキュリティグループ」を選択。右上「セキュリティグループを作成」をクリック。
下記の設定でアプリサーバー接続用・データベース接続用の2つ作成する。

アプリサーバー接続用

#基本的な詳細
セキュリティグループ名:web-sg
説明:web-sg
VPC:sumple-vpc

#インバウンドルール(2つ)
1つ目
タイプ:HTTP
リソースタイプ(画面によってはタイプ):Anywhere-IPv4

2つ目
タイプ:ssh
リソースタイプ(画面によってはタイプ):Anywhere-IPv4

#アウトバウンドルール:そのまま

#タグ:なしでok
※今回はクラウドサービスでアプリを動かすこと目的なので、HTTPのみの設定になっている

データベース接続用

#基本的な詳細
セキュリティグループ名:db-sg
説明:db-sg
VPC:sample-vpc

#インバウンドルール
タイプ:MYSQL/Aurora
ソース:カスタム web-sg(先ほど作成したセキュリティグループ)

#アウトバウンドルール:そのまま

#タグ:なしでok

データベースはアプリサーバーからのアクセスのみ許可したいので、インバウンドルールはweb-sgのグループIDを指定。

アプリを動かすサーバーを作成

コンソール画面の検索から「EC2」を検索してEC2の画面へ進み、左メニュー内の「インスタンス」を選択。
右上の「インスタンスを起動」をクリックし、下記に従い設定する。

#Amazonマシンイメージ(AMI)
Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type(64ビット x86)

#インスタンスタイプの選択
t2.micro

#インスタンスの詳細の設定
インスタンス数:1
ネットワーク:sample-vpc
サブネット:subnet-1a

#ストレージの追加:デフォルト

#タグの追加
キー:Name
値:sample-web

#セキュリティグループの設定
セキュリティグループの割り当て:既存
セキュリティグループID:web-sg

最後に「起動」をクリックすると、キーペアの作成が出る。こちらはEC2にログインする際に必要なので忘れないようにしておく。

EC2にログイン

EC2へログインするために、ダウンロードしたキーペアを移動させる。
ダウンロードしたxxxxx.pem~/.sshに移動させる。

% mv ~/Downloads/xxxxx.pem ~/.ssh/xxxxx.pem

移動完了後は、キーへのアクセス権限を設定する。キーがある階層に移動し、下記のコマンドを打つ。

$ chmod 400 xxxx.pem

最後にsshログインのコマンドを取得する。
EC2のコンソール画面で作成したインスタンスを選択し、「接続」をクリック。
「SSHクライアント」タブをクリックすると、接続のコマンドが出るので、ターミナルからそのコマンドを入力。

ターミナルで下記のようになればOK

[ec2-user@... ~]$

ElasticIP紐づける

先ほど作成したEC2は停止して再度起動すると、パブリックIPが変わり、毎回sshログイン時は不便になるので、固定のIPを紐付ける。

EC2のダッシュボードの左メニューから「Elastic IP」に進み、右上の「Elastic IPアドレスの割り当て」から下記の設定で作成する。

ネットワークボーダーグループ:ap-northeast-1a
パブリックIPのアドレスプール:AmazonのIPv4アドレスプール

作成後、右上の「アクション」から「ElasticIPアドレスの関連付け」に進み、先ほど作成したEC2インスタンスに紐付け設定。
作成したEC2の概要内にElasticIPアドレスが表示されていればOK。

EC2の接続時間を伸ばす

私は上記の設定を行った後、EC2のSSHがすぐ切れたので、EC2側の設定変更で接続がすぐ切れないように変更した。

[ec2-user@... ~]$ sudo vi /etc/ssh/sshd_config

デフォルトではこうなっている。

#ClientAliveInterval 0
#ClientAliveCountMax 3

2時間は接続を保ちたいので、以下のように変更

ClientAliveInterval 60 #クライアントが生きているかチェックを60秒毎に行う
ClientAliveCountMax 120 #クライアントが生きているかチェックを最大120回カウントする

1分毎にチェックして、120回までは接続を解除しないことになる。
再起動すればこれで2時間接続出来るようになる。

DBサブネットグループの作成

コンソール画面の検索窓から「RDS」を検索し進む。
まずはDB用のサブネットグループを作成。左メニューの「サブネットグループ」を選択し、右上「DBサブネットグループを作成」をクリック。
下記の設定で作成。

#サブネットグループの詳細
名前:subnetgroup
説明:subnetgroup
VPC:sample-vpc

#サブネットの追加
アベイラビリティゾーン:ap-northeast-1a, ap-northeast-1c
サブネット:subnet-1a, subnet-1c

RDSインスタンスの作成

コンソール画面の検索窓から「RDS」を検索し進む。
左メニューの「データベース」を選択し、右上「データベースを作成」をクリック。
下記の設定で作成。

#データベースの作成方法:標準作成

#エンジンのオプション
エンジンのタイプ:MYSQL
エディション:MySQL Community
バージョン:5.7.xx(最新版)

#テンプレート:無料利用枠

#設定
DBインスタンス識別子:デフォルト(database-1)
マスターユーザー名:デフォルト(admin)
マスターパスワード:任意のもの ※ここでのユーザ名、パスワードは後ほどアプリ側に設定するので、控えておく。
DBインスタンスクラス:デフォルト
ストレージ:すべてデフォルト
可用性と耐久性:デフォルト

#接続
VPC:runteq-vpc
サブネットグループ:runteq-subnetgroup
パブリックアクセス:なし
VPCセキュリティグループ:既存の選択 db-sg
アベイラビリティゾーン:ap-northeast-1a
データベースポート:3306

#データベース認証:パスワード認証

#追加設定
最初のデータベース名:sample_db
その他はそのままでok

参考記事

AWS EC2のSSHがすぐ切れる時の対処方法

1
0
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
1
0