はじめに
近々、開発中のサービスの本番環境をAWS上に構築します。
今回はその予行演習として、学習用のAWSアカウントを登録してEC2を使ってみました。
事前準備
アカウントの登録に関しては特に難しい箇所がないので省略します。
登録直後の状態だとルートアカウントがパスワード認証のみでセキュリティ上危険なので、アカウントの設定を行なっていきます。
設定を行う項目は下記の通りです。これらの設定は「サービス」の「IAM」で行います。
- ルートアカウントのMFAを有効化
- 個々のIAMユーザの作成(及びグループの作成)
- IAMユーザのMFAを有効化
- IAMパスワードポリシーの適用
ルートアカウントのMFAを有効化
ダッシュボードの「ルートアカウントのMFAを有効化」をクリックし、「MFA の管理」をクリックします。
「仮想 MFA デバイス」がデフォルトで選択されていると思いますので、次のステップを(2回)クリックします。
表示されたQRコードを対応アプリでスキャンします(今回はGoogle Authenticatorを使用します)
認証コード1に表示されているコードを入力します。その後、しばらく待ってコードの表示期限が過ぎたら認証コード2に新しいコードを入力します。
「仮想MFAの有効化」をクリックします。
個々のIAMユーザの作成(及びグループの作成)
IAM(Identity and Access Management)ベストプラクティスによると、ルートアカウントは極力使用せずに作業用のアカウントを作成することを推奨しています。
サイドメニューの「ユーザ」から新しいユーザを作成します。
ユーザ名を入力し、チェックボックスを両方ともチェックします。
コンソールのパスワードのカスタムパスワードを選択し、パスワードを入力します。
「パスワードのリセットが必要」のチェックボックスを外して「次のステップ」をクリックします。
「グループを作成」をクリックし、グループ名を入力後「AdministratorAccess」のチェックボックスをチェックして「グループを作成」をクリックします。
作成したグループのチェックボックスをチェックして「次のステップ」をクリックします。
ユーザを作成をクリックするとユーザが作成されます。今後はこのアカウントで作業を行います。
IAMユーザのMFAを有効化
「IAM ユーザ用のサインインリンク」を開き、作成したユーザでログインします。
サイドメニューの「ユーザ」から作成したユーザ名をクリックし、「認証情報」のタブの「MFA デバイスの割り当て」の右の鉛筆マークをクリックします。
ルートアカウントと同様にMFAを有効化します。
IAMパスワードポリシーの適用
ダッシュボードの「IAMパスワードポリシーの適用」をクリックし、「パスワードポリシーの管理」をクリックします。
任意の設定を行い「パスワードポリシーの適用」をクリックします。
EC2のインスタンスを使ってみる
アカウントの安全性が確保されたところで、早速EC2を使ってみます。
キーペアを作成する
キーペアはインスタンスに接続する際に使用する鍵です。
「サービス」から「EC2」を選び、サイドメニューの「キーペア」をクリックします。
「キーペアの作成」をクリックし、キーペア名を入力して「作成」をクリックします。
【キーペア名】.pem.txtファイルがダウンロードされると思いますので、ファイル名の.txtを削除します。
セキュリティグループを設定する
セキュリティグループはファイヤーウォールのようなものだと思うとイメージしやすいと思います。
基本的に外からの通信のポートは全て閉じられており、必要なポートのみ許可する仕組みになっています(外への通信のポートは全て空いています)
サイドメニューの「セキュリティグループ」をクリックします(この段階では一つだけ表示されると思います)
「セキュリティグループの作成」をクリックし、セキュリティグループ名を入力します。
「インバウンド」タブの「ルールの追加」をクリックし、タイプを「SSH」、ソースを「任意の場所」にします(本番環境では制限する)
「作成」をクリックします。
インスタンスを起動する
サイドメニューの「インスタンス」をクリックします。
「インスタンスの作成」をクリックし、「Amazon Linux AMI」の右の「選択」をクリックします。
「t2.micro」が選択されていると思いますので、そのまま「次の手順」をクリックします。
ステップ3とステップ4では設定を変更せずに「次の手順」をクリックします。
Nameタグを追加して「次の手順」をクリックします。
「既存のセキュリティグループを選択する」を選択して、作成したセキュリティグループを選択し、「確認と作成」をクリックします。
「作成」をクリックし、チェックボックスをクリックして「インスタンス作成」をクリックします。
EIP(Elastic IP)の設定
インスタンス作成時に付いているPublic IPアドレスはインスタンスを停止すると変わってしまうので、固定のPublic IPアドレスを取得して設定します。
サイドメニューの「Elastic IP」をクリックします。
「新しいアドレスの割り当て」をクリックし、「割り当て」をクリックします。
「アクション」の「アドレスの関連付け」をクリックし、「インスタンス」のプルダウンメニューから先ほど作成したインスタンスを選択します。
「再関連付け」のチェックボックスを選択し、「関連付け」をクリックします。
EC2のインスタンスにアクセスする
作成したインスタンスにアクセスしてみます。
作成したキーペアを使ってSSHでログインします(キーペアのパーミッションは600にしておきます)
1 | $ ssh -i my-keypair.pem ec2-user@xxx.xxx.xxx.xxx |
IPアドレスは先ほどのEIPを指定します。
また、Amazon Linuxではデフォルトでec2-userというユーザがされています。
インスタンスを停止する
インスタンスの停止はサイドメニューの「インスタンス」から行えます。
停止したいインスタンスを選択した状態で「アクション」→「インスタンスの状態」→「停止」をクリックするとインスタンスを停止できます。
(稼働していないインスタンスに紐づいているEIPがあると課金の対象になるので注意が必要です)
再起動と停止&起動の違い
インスタンスを停止すると物理サーバ上からインスタンスが無くなります。
その後、起動すると別の物理サーバ上でインスタンスが起動します(再起動の場合は物理サーバが変わりません)
さいごに
今回は、AWSのアカウントを作成してEC2を使ってみました。
本番環境の構築のためには他にもRDS、VPC、ELBなどを設定する必要があるので、今後はそれらを使ってみます。