AWSの人気が非常に高いことは存じ上げておりました。
しかしながら、現職の業務上だと触る機会が皆無であるため、
プライベートで触ろうとしました。
しかし…
AWS、ぜんぜんわかりませーーーん。
何がわからん?
- ページに書いてある文字が分からん
- EC2? VPC? MFA?
- どれから手を付ければよいのかわからん
- なにを設定すればよいのかわからん
- 書籍を購入しました
目標
- RDSを使用して、DBの構築、自作WebアプリケーションからDBアクセスを可能にする。
実施したこと
AWSユーザー設定
- アカウントを作成する
- 仮想MFAデバイスをインストールする
- 自分のiPhoneに「Google Authenticator」をインストールする
- MFAを設定する
- 2つの認証コードは、以下
- 表示された6桁の番号を、「認証コード1」に入力する
- 約30秒後、続けて表示された6桁の番号を、「認証コード2」に入力する
- 2行表示されるものだ、と思ってはまった。
- 2つの認証コードは、以下
- MFAを用いてサインインする
- グループを作成する
- IAMアカウントを作成する
- キーなどが記載されたCSVをダウンロードできる。紛失しないようにする。
- 一番最初に作成したアカウントは、ルートアカウントと呼ばれる。それで作業することは、基本的にしない。
- パスワードポリシーを設定する
- 作成したユーザへMFA割り当てる
AWS 環境構築
アカウント登録は完璧! さあ構築だ! と思ったら…。
- 「サービスへのお申し込みはあと少しで完了です!」ページが表示されてしまうッッ!!
??? と思いましたが、以下が終わっていませんでした。
- クレジットカードの登録
- 電話により本人確認
アカウント登録、完璧ではありませんでした。
「サービスへのお申し込みはあと少しで完了です!」ページの「AWS への登録を完了してください。」をクリックし、
残りを登録・本人確認をしました。
環境構成
- VPC
- パブリックサブネット
- EC2(踏み台)
- プライベートサブネット
- RDS
- パブリックサブネット
VPC作成
- 項目を入力して作成する
- ネームタグ
- vpc-employee-mask-management
- IPv4 CIDR Block
- x.x.x.x/xx
- テナンシー
- デフォルト
- ネームタグ
- 右クリックして「DNSホスト名の編集」を「はい」にする
サブネット作成
- 項目を入力してパブリックサブネットを作成する
- ネームタグ
- EM-public-subnet
- VPC
- vpc-employee-mask-management
- アベイラビリティーゾーン
- ap-northeast-1a
- IPv4 CIDR Block
- x.x.x.y/xx
- ネームタグ
- 項目を入力してプライベートサブネットを作成する
- ネームタグ
- EM-private-subnet
- VPC
- vpc-employee-mask-management
- アベイラビリティーゾーン
- ap-northeast-1a
- IPv4 CIDR Block
- x.x.x.z/xx
- ネームタグ
- パブリックサブネットの「自動割り当てパブリックIP」を有効化する
インターネットゲートウェイ作成
- 項目を入力してインターネットゲートウェイを作成する
- ネームタグ
- EM-internet-gateway
- ネームタグ
- インターネットゲートウェイにVPCをアタッチする
ルートテーブル作成
- 項目を入力してルートテーブルを作成する
- ネームタグ
- EM-root-table
- VPC
- vpc-employee-mask-management
- ネームタグ
- ルートタブにて、新しいルートを作成する
- 送信先
- 0.0.0.0/0
- ターゲット
- EM-internet-gateway
- 送信先
サブネットへルートテーブルを割り当て
- サブネット「EM-public-subnet」のルートテーブルタブで、ルートテーブルを割り当てる
セキュリティグループ作成
- 項目を入力してパブリック用のセキュリティグループを作成する
- ネームタグ
- EM-public-DMZ
- グループ名
- EM-public-DMZ
- 説明
- Employee Management Public Security Group
- VPC
- vpc-employee-mask-management
- ネームタグ
- 項目を入力してプライベート用のセキュリティグループを作成する
- ネームタグ
- EM-private-DMZ
- グループ名
- EM-private-DMZ
- 説明
- Employee Management Private Security Group
- VPC
- vpc-employee-mask-management
- ネームタグ
- インバウンドを変更する
- EM-public-DMZ
- 1行目
- タイプ
- SSH
- プロトコル
- TCP
- ポート
- 22
- 送信元
- マイIP
- タイプ
- 2行目
- タイプ
- PostgreSQL
- プロトコル
- TCP
- ポート
- 5432
- 送信元
- 0.0.0.0/0
- タイプ
- 1行目
- EM-private-DMZ
- 1行目
- タイプ
- PostgreSQL
- プロトコル
- TCP
- ポート
- 5432
- 送信元
- EM-public-DMZ
- タイプ
- 1行目
- EM-public-DMZ
DBサブネットグループ作成
- RDSを開き、項目を入力し、DBサブネットグループを作成する
- 名前
- EM-dbsubnet-mask
- 説明
- Employee management DB subnet
- VPC
- vpc-employee-mask-management
- 追加するサブネット
- ap-northeast-1a
- アベイラビリティーゾーン
- ap-northeast-1a
- サブネットID
- EM-private-subnetのID
- アベイラビリティーゾーン
- ap-northeast-1c
- アベイラビリティーゾーン
- ap-northeast-1c
- サブネットID
- EM-private-subnet-CのID
- アベイラビリティーゾーン
- ap-northeast-1a
- 名前
RDSインスタンス作成
- エンジンを選択する
- PostgreSQL
- インスタンスの仕様を入力する
- ライセンスモデル
- postgresql-license
- バージョン
- PostgreSQL 9.5.4-R1
- インスタンスのクラス
- db.t2.micro
- DBインスタンス識別子
- employee-mask-management
- マスタユーザの名前
- adminuser
- マスターパスワード
-
- パスワードの確認
-
- ライセンスモデル
- 詳細設定の設定
- VPC
- vpc-employee-mask-management
- サブネットグループ
- EM-dbsubnet-mask
- パブリックアクセス
- いいえ
- アベイラビリティーゾーン
- 指定なし
- VPCセキュリティグループ
- EM-private-DMZ
- データベースの名前
- employeemanagement
- データベースのポート
- 5432
- DB パラメータグループ
- default.postgres9.5
- VPC
EC2インスタンス作成
- マシンイメージを選択する
- Amazon Linux AMI 2016.09.1 (HVM), SSD Volume Type
- インスタンスタイプを選択する
- t2.micro
- インスタンスの設定をする
- インスタンス数
- 1
- ネットワーク
- vpc-employee-mask-management
- サブネット
- EM-public-subnet
- 自動割り当てパブリックIP
- サブネット設定を使用
- インスタンス数
- ストレージの設定をする
- 全てデフォルトのまま
- Add Tags
- Name
- EM-Server
- Name
- セキュリティグループの設定をする
- 既存のセキュリティグループを選択する
- EM-public-DMZ
- 既存のセキュリティグループを選択する
- キーペアを作成、ダウンロードする
- キーペア名
- EM_Server_Key
- キーペア名
EC2インスタンスへの接続
- ssh -i {key file name} {your user name}@{your address.com}
ローカルの開発環境にあるWebアプリからRDSへ接続する方法
- Webアプリ側で、JSchを使用して、SSHポートフォワーディングする
結果
- ローカルのWebアプリから、プライベートサブネットのRDSへ接続することができた。
わからないこと
- EC2によるポートフォワーディングが、AWS上に存在しないアプリケーションがRDSへ接続する方法として、適切なのか?
- 別のAWSサービスを利用した、もっとよい方法があるのではないか?