はじめに
EC2を初めて触ってみたので、簡単に手順をまとめてみました。
システム構成
非常にシンプルです。冗長化もしてません。
ゴール
- EC2インスタンスを起動する
- Apatchをインストールする
- ブラウザでTest Pageが見れる
ユーザ環境
- Windows 10
AWS環境の構築
VPC(Virtual Private Cloud)
AWS(クラウド)にプライベートな空間を作成します。このVPC内にサブネットワークを任意で作成することができ、EC2はこのサブネットワーク内で使用することができます。
VPCの作成
VPCのサービス画面を開き、「VPCの作成」を選択します。
「1個のpublicサブネットを持つVPC」を選択します。これを選択することで、必要なルートテーブルやインターネットゲートウェイの作成を自動で行ってくれるようです。便利!!
ほぼデフォルトのママですが、いろいろと設定を行い、「VPCの作成」を選択します。
項目名 | 設定値 |
---|---|
IPv4 CIDRブロック | 10.0.0.0/16 |
IPv6 CIDRブロック | なし |
VPC名 | aws-vpc-test(任意) |
パブリックサブネットのIPv4 CIDR | 10.0.0.0/24 |
アベイラビリティゾーン | ap-northeast-1a |
サブネット名 | subnet-1a(任意) |
DNSホスト名を有効化 | はい |
ハードウェアのテナンシー | デフォルト |
できました!
EC2
EC2を作成する前に、必要な下準備を行います。(EC2作成時に一緒に作ることもできます)
キーペアの作成
EC2のサービス画面を開き、左側のメニューにある「キーペア」を選択します。
「キーペアの作成」を選択します。
任意のキーペア名を入力し、「作成」を選択します。直後にpemファイルのダウンロードが行われます。後ほどssh接続する際に使用するため、忘れずに保存しましょう。
これでキーペアの作成は完了です。
セキュリティグループの作成
左側のメニューにある「セキュリティグループ」を選択します。
「セキュリティグループの作成」を選択します。
設定を行い、「作成」を選択します。
項目名 | 設定値 |
---|---|
セキュリティグループ名 | aws-test-security-group(任意) |
説明 | aws-test-security-group(任意) |
VPC | aws-vpc-test(先ほど作成したVPC) |
セキュリティグループ(インバウンド)は下記です。マイIPは、AWS接続時に自身が使用しているIPアドレスを意味します。
項目名 | 設定値 |
---|---|
タイプ | SSH |
プロトコル | TCP |
ポート範囲 | 22 |
ソース | マイIP |
これにより、インバウンド(EC2インスタンスへのアクセス)は、SSH(マイIP)のみ許可されることになります。
インスタンスの作成
左側のメニューにある「インスタンス」を選択し、「インスタンスの作成」を選択します。
AMIとして「Amazon Linux AMI」を選択します。
インスタンスタイプは「t2.micro」を選択し、「次の手順」を選択します。AWS登録後12ヶ月は無料利用の対象です。
インスタンスの詳細設定を行います。基本的にデフォルトのままです。変更する部分は下記です。設定後に「次の手順」を選択します。
項目名 | 設定値 |
---|---|
ネットワーク | aws-vpc-test(先ほど作成したVPC) |
サブネット | subnet-1a(VPC作成時に作成したサブネット) |
自動割当パブリックIP | 有効化 |
ストレージの追加ですが、デフォルトのまま進みます。「次の手順」を選択します。
タグの追加ですが、必要に応じてプロジェクト名や作成者などを追加してください。ここではそのまま進みます。「次の手順」を選択します。
セキュリティグループの設定では、「既存のセキュリティグループを選択する」を選択します。
先ほど作成したセキュリティグループを選択し、「確認と作成」を選択します。
最終確認を行い、「作成」を選択します。
先ほど作成したキーペアを選択し、「インスタンスの作成」を選択します。
「インスタンスの表示」を押して、しばらく待ちます。
ステータスチェックが合格になり、状態がrunningならOKです。
動作確認
EC2インスタンスにログイン
起動しているインスタンスにログインしてみます。
先ほどの画面にある「パブリックDNS」の内容をコピーします。
お好みのSSHクライアントでログインします。ここではRloginを使用します。
項目名 | 設定値 |
---|---|
ホスト名 | 先ほどコピーしたパブリックDNS |
TCPポート | ssh |
ログインユーザ名 | ec2-user |
SSH認証鍵 | キーペア作成でダウンロードしたpemファイル |
無事にログインできました!
Apacheのインストール
下記コマンドでApacheのインストールと起動を行います。
$ sudo yum install httpd -y
$ sudo service httpd start
$ sudo chkconfig httpd on
ただし、セキュリティグループ(インバウンド)はSSHのみ許可しているため、ブラウザでパブリックDNSにアクセスできません。
次はセキュリティグループの設定を変更し、HTTPアクセスを許可します。
セキュリティグループの設定変更
左側のメニューにある「セキュリティグループ」を選択し、作成したセキュリティグループを選択します。
画面下部の「インバウンド」の「編集」を選択します。
「ルールの追加」を選択し、下記のルールを追加し、「保存」を選択します。
項目名 | 設定値 |
---|---|
タイプ | HTTP |
プロトコル | TCP |
ポート範囲 | 80 |
ソース | 任意の場所 |
アクセス確認
適当なブラウザでパブリックDNSにアクセスすると、今度はデフォルトのTest Pageが表示されます!
補足
IPアドレスについて
EC2のインスタンスに割り当てられるグローバルIPアドレスは、下記の2種類があります。
名称 | 内容 |
---|---|
パブリックIPアドレス | IPアドレスはインスタンスが起動・停止する度に変わる |
Elastic IPアドレス | IPアドレスは固定されている |
- https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses
- https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html
IPアドレスが変わると不都合な場合は、Elastic IPアドレスを使用する必要があります。なお、使っていないと料金発生するので、料金形態は一度確認することをお勧めします。
冗長化について
様々な冗長化パターンがありますが、今回の内容では取り扱っていません。複数のインスタンスを作成したり、複数のサブネットを作成したり、それらを紐付けるALB(Application Load Balancer)を使用したりします。
まとめ
- EC2インスタンス以外にもVPCやセキュリティグループなど設定すべきことがたくさんある
- セキュリティ(ファイアフォール的な)は下記2種類が存在するので違いを理解して使う必要がある
- ネットワークACL
- VPC画面で設定する
- サブネットレベルで動作する
- セキュリティグループ
- VPC画面またはEC2画面で設定する
- インスタンスレベルで動作する
- ネットワークACL
- 2種類のIPアドレス(パブリックIP/Elastic IP)に注意する
- ここからが本番(インスタンス内の環境構築、冗長化、バックアップ取得、セキュリティ対応など……)