#背景
AWSの勉強のためにアカウント作成や初期設定、調べた用語などをまとめておくことにする
#AWSの用語
- リージョン:AWSの各サービスが提供されている地域のこと
- アベイラビリティゾーン:AWSは世界各国にデータセンターを持っていて、それを複数束ねたのもの。どんなリージョンにもアベイラビリティゾーンは二つ以上存在している
- VPC(Virtual Private Cloud):AWS上に仮想ネットワークを作成できるサービス
- サブネット:VPCを細かく区切ったネットワーク
- IPアドレス:ネットワーク上の機器を識別するためのインターネットの住所
- CIDR(サイダー)表記
IPアドレスのネットワーク部が先頭24ビットである場合
192.228.126.0/24
- サブネットマスク表記
IPアドレスの後ろに「/」を書き、ネットワークを部を表すビットと同じ部分を1、ホスト部を表すビットと同じ部分を0にする
IPアドレスのネットワーク部が先頭24ビットの場合
192.228.126.0
11111111 . 11111111 . 11111111 . 00000000
↓
192.228.126.0/255.255.255.0
- EC2(Elastic Compute Cloud):AWSクラウド上の仮想サーバのこと。EC2から立てたサーバをインスタンスという
- AMI(Amazon Machine Image):インスタンス起動に必要な情報が入ったOSのイメージ。サーバのテンプレートのようなもの
- インスタンスタイプ:サーバのスペックを定義したもの。インスタンスタイプによってCPU、メモリ、ストレージ、ネットワーク帯域が異なったり、料金が異なる
<インスタンスタイプの構成>
m5.xlarge
m:インスタンスファミリー
5:インスタンス世代
xlarge:インスタンスサイズ
-
ストレージ:サーバにくっつけるデータの保存場所。EC2のストレージは2種類(EBS:Elastic Block Store、インスタンスストア)ある
-
ポート番号:プログラムのアドレス。サーバ(IPアドレスの例:10.20.20.100)の中でさらに、SSHサーバのポート番号は「22」、HTTPサーバのポート番号は「80」、SMTPのポート番号は「25」というようにポート番号が分けられる。ポート番号には、あらかじめ標準で決められている「ウェルノウンポート番号」と動的に決まるポート番号がある。ウェルノウンポート番号は、SSHが22番、SMTPが80番、HTTPSが443番などがあり、0〜1023のいずれかの整数値となる。動的に割り当てられる番号は49412〜65535のいずれかの整数値となる
-
ファイアウォール:ネットワークを不正アクセスから守るために、通してよい通信だけを通す、それ以外は通さないという機能。AWSではセキュリティグループがファイアウォールの役割を担っている
Elastic IPアドレス:インターネット経由でアクセス可能な固定グローバルIPアドレスを取得でき、インスタンスに付与できるサービス。そのインスタンスを削除するまでは、ずっとそのIPアドレスを使用することができる
#初期設定
##CloudWatchで料金アラートを設定する
料金アラートを設定するとAWSの利用料金が一定の金額を超えたときに通知してくれる
手順
1.請求ダッシュボードで請求アラートを受け取るように設定する
2.CloudWatchで料金アラートを設定する
1.請求ダッシュボードで請求アラートを受け取るように設定する
- 「EメールでPDF版請求書を受け取る」にチェックする
- 「無料利用枠の使用アラートを受信する」にチェックする
このように設定することで無料で使用できる枠を超えてしまったとき通知を受信することができます。
2.CloudWatchで料金アラートを設定する
- 「請求アラートを管理する」をクリックする
- 「アラームの作成」をクリックする
- 「10USD」より大きいとき通知アラートを受け取るように設定する
- 通知の送信先に自分のメールアドレスを入力する
このあとアラートのタイトルなど入力するページでは、任意の名前などを入力する。
##IAMユーザで作業ユーザを作成する
この設定を行なうことでIAMユーザから請求情報へアクセスできるようになる。
ルートユーザ:そのアカウントの全てのAWSサービスとAWSリソースにアクセス権限を持つユーザ。アカウントの変更・解約、サポートプラン変更などで使用する。
IAMユーザ:作業ユーザ。認証情報とアクセス許可の権限はIAMユーザ毎に変更できる。また個別にユーザを作成することでいつ誰がどんな操作をしたのかログを残すことができる。
- マネジメントコンソールから「アカウント」をクリックする
- 「IAMユーザ/ロールによる請求情報へのアクセス」の「編集」をクリックする
- 「IAMアクセスのアクティブ化」にチェックを入れて「更新」をクリックする
- ページ上部の検索ボックスに「IAM」と入力するとIAMユーザ用ダッシュボードが表示されるので起動する
- 「ユーザを追加」をクリックする
- ユーザ名を入力する
- 「パスワード - AWS マネジメントコンソールへのアクセス」にチェックを入れる
※コマンドプロンプトなどのプログラムからアクセスする場合は「アクセスキー - プログラムによるアクセス」にチェックを入れる
- コンソールのパスワードを「カスタムパスワード」として入力する。
- 「パスワードのリセットが必要」のチェックを外す
※ 「パスワードのリセットが必要」は、IAMユーザ本人以外がこのユーザ追加作業をする場合にチェックを入れる。チェックを入れると次回ログイン時に再度パスワードを設定することになる。
- 「既存のポリシーを直接アタッチ」を選択する
- 検索ボックスに「Administrator」と入力して「AdministratorAccess」にチェックを入れる
- このページはこのままでOK
- 内容を確認して問題がなければ「ユーザの作成」をクリックする
- IAMユーザを追加することができた
##CloudTrailで操作ログを記録する
- ページ上部の検索ボックスに「CLoudTrail」と入力してCloudTrailのページを起動する
- 「証跡」をクリックする
- 「認証の作成」をクリックする
- 「証跡名」を入力する(ここでは仮にCloudTrail1と入力する)
- 「新しいS3バケットを作成します」をクリックする
バケット:S3のフォルダの名前のようなもの。アカウントの変更・解約、サポートプラン変更などで使用する。グローバルでユニークなものを設定する。
- 「AWS KMS エイリアス」に任意の文字列を入力する
- 他はデフォルトのままにする
- ここもデフォルトのままとする
- 「次へ」をクリックする
- このページについてもデフォルトのままとする
- このページでは入力内容を確認する
- 問題がなければ「証跡の作成」をクリックする
#VPCを作成する
- ページ上部の検索ボックスに「VPC」と入力するとVPCのダッシュボードが候補として表示されるので起動する
- リージョンを「東京」へ変更する
- 「VPC」をクリックする
- AWSではデフォルトでVPCが作成されている
- 「VPCを作成」をクリックする
- 「名前タグ」を入力する
- 「IPv4 CIDR」を入力する
- 「テナンシー」を選択する(基本は「デフォルト」を選択)
テナンシー:物理ハードウェアを専有するオプション
- 「VPCを作成」をクリック
- VPCの作成が完了した
#サブネットを作成する
- IAMユーザでログインする
- ページ上部の検索ボックスで「VPC」を検索してVPCのダッシュボードを起動する
- 「サブネット」をクリックする
- 「サブネットを作成」をクリックする
- 以下の項目を入力して「サブネットを作成」をクリックする
・VPC ID(先程作成したVPCのID)
・ サブネット名
・アベイラビリティゾーン
・ IPv4 CIDR ブロック
#ルーティングを設定する
##インターネットゲートウェイを作成する
ルーティング:インターネットでは、ルーターがIPアドレスの行き先を管理しているので、ネットワークとネットワークがIPアドレスを通じて接続することができる、という仕組み
- ページ上部の検索ボックスで「VPC」を検索してVPCのダッシュボードを起動する
- 「インターネットゲートウェイ」をクリックする
- 「インターネットゲートウェイの作成」をクリックする
- 「名前タグ」を入力して「インターネットゲートウェイの作成」をクリックする
- インターネットゲートウェイの作成が完了した
##インターネットゲートウェイをVPCにアタッチする
- アクション-「VPCにアタッチ」をクリックする
- VPCを選択して「インターネットゲートウェイのアタッチ」をクリックする
##ルートテーブルを作成してPublicサブネットに紐付ける(まとめ中...)
- 「ルートテーブル」をクリックする
- ルートテーブルの行にチェックを入れる
- 「ルート」タブをクリックすると以下のようなことがわかる
・リクエストされたIPアドレスが「10.0.0.0/16」だった場合自身のネットワーク(local)へ接続する
・それ以外のIPアドレスの場合破棄する
- ページ右上の「ルートテーブルを作成」をクリックする
- ルートテーブルの名前を入力する
- VPCを選択する
- 「ルートテーブルを作成」をクリックする
現在ルートテーブルはVPCに関連付けされているので、Publicサブネットにも関連付ける
- ルートテーブルの行にチェックを入れて「サブネットの関連付け」タブをクリックする
- 「サブネットの関連付けを編集」をクリックする
- Publicサブネットにチェックを入れて「関連付けを保存」をクリックする
- ルートテーブルの行にチェックを入れる
- 「ルート」タブをクリックする
- 「ルートを編集」をクリックする
- 送信先「0.0.0.0/0」ターゲット「インターネットゲートウェイ」のルートを追加する
- 「変更を保存」をクリックする
#EC2インスタンスを配置する
- ページ上部の検索ボックスに「EV2」と入力してEC2ダッシュボードを起動する
- 「インスタンス」をクリックして「インスタンスを起動」をクリックする
- 「クリックスタート」の「Amazon Linux 2 AMI」の「選択」をクリックする
- インスタンスタイプを選択して「次のステップ:インスタンスの詳細の設定」をクリックする
- 「ステップ3:インスタンスの詳細の設定」について入力して「次のステップ:ストレージの追加」をクリックする
- ストレージを追加する必要があれば追加して「次のステップ:タグの追加」をクリックする
- タグを追加して「次のステップ:セキュリティグループの設定」をクリックする
- セキュリティグループの設定について入力して「確認と作成」をクリックする
- 内容を確認して「起動」をクリックする
- 「新しいキーペアの作成」を選択してキーペア名を入力する
- 「キーペアのダウンロード」をクリックする
-
ここまで完了したら「インスタンスの作成」をクリックする
-
インスタンスが作成できた
#Apacheをインストールする(MacOSの解説)
Apacheをインストールするために、まずはSSHでサーバのログインする必要がある
SSH:サーバと自身のPCをセキュアに接続するサービスのこと
EC2にログインするときはSSHを使用する
また、誰でもサーバにログインできると困るので、ログインできる人を限定するために公開鍵認証というものがある
公開鍵認証:
①サーバへのログイン時に認証を行なう仕組み
②ユーザ名をパスワードを使用した認証と比べてセキュリティが高い
③公開鍵暗号(秘密鍵+公開鍵)を用いて認証を行なう
④公開鍵はサーバが保有しており、秘密鍵を持つユーザのみがログイン可能となる
##SSHでサーバへログインする
- ターミナルを起動する
- ターミナルに下記コマンドを入力して、EC2インスタンス作成時にダウンロードした秘密鍵のファイル権限をオーナー以外は使えないよう変更する
※pemファイルのディレクトリが「Desktop/aws-infra-ssh-key-2.pem」の場合
chmod 600 Desktop/aws-infra-ssh-key-2.pem
- EC2インスタンスにチェックを入れて「パブリックIPv4アドレス」をコピーする
- ターミナルに下記コマンドを入力して、SSHでEC2インスタンスに接続する
ここでユーザ名は「ec2-user」とする
ssh -i Desktop/aws-infra-ssh-key-2.pem ユーザ名@パブリックIPv4アドレス
-
「Are you sure you want to continue connecting (yes/no/[fingerprint])?」と聞かれたら「yes」と入力してEnterキーを押下する
-
ターミナルにこのように表示されたら、接続できたということになる
ここでログインに失敗する原因は
①秘密鍵の情報が誤っている
②秘密鍵の権限が変更されていない
③パブリックIPアドレスが間違っている
であることが多い
- サーバからログアウトするときはターミナルに「exit」と入力してEnterキーを押下する
##ポート番号に対応するプログラムを確認する
SSHでサーバにログインする
ターミナルに下記コマンドを入力すると、ポート番号に対応するプログラムを確認することができる
sudo lsof -i -n -P
もし上記コマンドを実行してパスワードを聞かれたら、PCのログインパスワードを入力する
lsofコマンド:ポート番号に対応するプログラムを確認する
-iオプション:ネットワークソケットファイルを表示する(サーバの待機ポートとプロセスを一覧で表示する)
-nオプション:IPドレスをホスト名に変換しない
-Pオプション:ポート番号をサービス名に変換しないオプション
##Apacheを起動する
SSHでサーバにログインする
- ターミナルに下記コマンドを入力して、EC2インスタンスのライブラリをアップデートする
sudo yum update -y
yum:Linuxのパッケージ管理ツール
-yオプション:Yesと聞かれる手間を省く
- ターミナルに下記コマンドを入力して、Apacheをインストールする
sudo yum -y install httpd
- ターミナルに下記コマンドを入力して、Apacheを起動する
sudo systemctl start httpd.service
- ターミナルに下記コマンドを入力して、Apacheが起動したかを確認する
sudo systemctl status httpd.service
- ターミナルに下記コマンドを入力して、プロセスを確認する
ps -axu
psコマンド:Linux上で起動しているプロセスを確認する
-axオプション:全てのプロセスを表示する
-uオプション:CPUやメモリ使用率を合わせて表示する
##Apacheが自動で起動するように設定する
- ターミナルに下記コマンドを入力して、プロセスを確認する
sudo systemctl enable httpd.service
- 自動起動が設定できているかを確認する
sudo systemctl is-enabled httpd.service
#Elastic IPアドレスを確保する
- 「Elastic IP」をクリックして「Elastic IPアドレスを割り当てる」をクリックする
- 「割り当て」をクリックすると自動生成されたEladtic IPアドレスを取得できる
- 取得したIPアドレスを選択して「アクション」-「Elastic IPアドレスの関連付け」をクリックする
- 「インスタンス」「プライベートIPアドレス」を入力して「関連付ける」をクリックする
これが完了すると、取得したElastic IPアドレスをアドレスバーへ入力して
Webページへアクセスすることができるようになる
先程おこなった「Elastic IPアドレス関連付け」「Elastic IPアドレス」は解除(解放)、また「インスタンスの停止」をしておかないと料金が発生してしまうので、勉強のためにこの記事を参考にした場合は必ず解除しておくこと
#まとめ
- AWSは従量課金制なので使用した時間分料金を支払う。料金アラートを設定しておくことで想定外の支払いが請求されるのを防ぐ
- AWSにはルートユーザとIAWユーザがあり、ルートユーザは全ての権限があるのに対して、IAMユーザは個別に権限を付与することができる
- ユーザ毎に操作ログを管理することができる。不正な操作があったときログを確認ことで原因や解決策を導き出す