AWSについて勉強する

##よく出てくる用語

EC2(Elastic Compute Cloud):仮想サーバー
RDS(Relational Database Service):データベース
S3(Simple Storage Service):ストレージ
IAM(Identity and Access Management):AWS リソースへのアクセスを安全に制御するためのウェブサービス
Amazon CloudWatch:AWS で実行するアプリケーションのモニタリングサービス。メトリクスを収集して追跡すること、ログファイルを収集してモニタリングすること、アラームを設定すること、AWS リソースの変更に自動的に反応することができる。

##アカウントを作る
・クレジットカードの登録が必要
・電話を使った二段階認証

##EC2の作成
サービス＞コンピューティング＞EC2
・リージョンを東京にする
・インスタンスの作成

###AMIの選択
AMI(Amazon Machine Image) は、インスタンスの作成に必要なソフトウェア構成 (OS、アプリケーションサーバー、アプリケーション) を含むテンプレート。 AWS が提供するもの、ユーザーコミュニティが提供するもの、または AWS Marketplace に掲載されているものを選択可能

今回はAWSが無償で提供する下記のAMIを利用
・Amazon Linux AMI 2017.09.1 (HVM), SSD Volume Type - ami-ceafcba8を選択

<img width="915" alt="スクリーンショット 2018-02-10 22.13.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/146385/13cc05e9-8133-f76f-483b-ac3d8d0cff1b.png">


###インスタンスタイプの選択
インスタンスは、アプリケーションを実行できる仮想サーバー。CPU、メモリ、ストレージ、ネットワークキャパシティーのさまざまな組み合わせが可能なため、アプリケーションに合わせて適切なリソースを柔軟に選択可能。

今回は汎用向けで無償提供されている下記を選択
t2.micro (可変 ECU, 1 vCPU, 2.5 GHz, Intel Xeon Family, 1 GiB メモリ, EBS のみ)



###インスタンスの設定
・サブネットの選択
・削除保護の有効化にチェック

###ストレージの追加
インスタンスに追加の EBS ボリュームやインスタンスストアボリュームをアタッチするか、ルートボリュームの設定を編集することができます。

EBSって何？インスタンスストアボリュームって何？ルートボリュームって何？
EBS(Elastic Block Store):
ー耐久性に優れたブロックレベルのストレージボリューム
ーシステムドライブ、データベースアプリケーションのストレージなど、頻繁に更新する必要があるデータのプライマリストレージとして使用可能
ーEC2 インスタンスの運用状況から独立した永続性を持つ

インスタントストア：
ーインスタンス用のブロックレベルの一時ストレージを提供
ー頻繁に変更される情報 (バッファ、キャッシュ、スクラッチデータ、その他の一時コンテンツなど) の一時ストレージに最適
ーロックデバイスとして表示される 1 つ以上のインスタンスストアボリュームで構成
ーインスタンスストアのサイズと、利用可能なデバイスの数は、インスタンスタイプによって異なる

ルートボリューム：
ールートデバイスボリュームに格納されているイメージを使用してインスタンスがブートされる
ーinstance store-backed AMI または Amazon EBS-backed AMI のどちらからでもインスタンスを起動できる。AMI の説明にはそのタイプが含まれており、場所によってルートデバイスが ebs (Amazon EBS-Backed の場合) または instance store (Instance store-Backed の場合) と表示される。各タイプの AMI を使用して実行できることには大きな違いがある。
詳しくは[コチラ](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device)を参照

・デフォルト設定を利用

###タグの追加
インスタンス、イメージ、その他の Amazon EC2 リソースにはタグという形式で独自のメタデータをオプションで割り当てることができる。

###セキュリティグループの設定
セキュリティグループ：
ーインスタンスのトラフィックを制御するファイアウォールのルールセット

・ソースはマイIPにする
・HTTP 0.0.0.0/0 でインターネットからの接続を可能にする
この辺り、基本でありながら全然理解できていないので、今度復習する。


###キーペアの作成
とりあえず作成して安全な場所に置いておく
ここは今度勉強する。
キーが公開されていないことが必要
chmod 400 キーペア
で読み出し権限のみにする


##仮想サーバーへの接続
アクション＞スタンドアロンSSHクライアント

ssh -i "キーペア" ----.amazonaws.com
でサーバー接続。
sudo yum update
でアップデート
sudo yum -y install httpd php mysql
でインストール

sudo service httpd start
でWebサーバーの立ち上げ
sudo chkconfig httpd on
で再起動時に自動でサーバーを立ち上げる

/var/www/htmlにファイルを置くとWeb上でページを表示してくれるようだ。これをhomeディレクトリに置いていたら怒られた（当たり前だ笑）





##イメージの作成
イメージとはインスタンスの設定内容をテンプレ化したもの
右クリック＞イメージ＞イメージの作成

##IPアドレスを設定する
Elastic IPs＞新しいアドレスの割り当て
アドレスの関連付けから関連付けるインスタンスを選択
＊インスタンスに関連づいていないElastic IPは課金されてしまうので使わない場合はリリースすること

##バックアップとスペックの変更
バックアップ：ボリューム＞スナップショットの作成
作成したスナップショットからイメージを作成し、イメージからインスタンスを作成する。

スペックの変更
インスタンスを停止する
Stateがstoppingからstoppedになってからインインスタンスの設定＞インスタンスタイプを変更する
その後インスタンスを開始する

#データベースを立ち上げる
DBエンジン；MySQL
無料枠で利用するためマルチAZはオフにする。
マルチアベイラビリティゾーンを有効にすると、物理的に離れたデータセンターにバックアップを作ってくれるので障害に強くなる。

mysqlへの接続
mysql -h エンドポイント -u ユーザー名 -p
で接続できるはずなんだけどうまくいかない。
どうもセキュリティグループの設定が必要なようだ。
[参考：mysqlへの接続](http://posaune.hatenablog.com/entry/2013/06/10/002800)

#ロードバランサーを作る
アクセスをインスタンスに振り分ける
##ロードバランサーの設定
リスナーとは、設定したプロトコルとポートを使用して接続リクエストをチェックするプロセス


#S3を作成する
ストレージに特化しているので、容量を気にする必要がない。信頼性が高い。アクセスも高速。
画像をホストして、アクセスを分散させる。基本的に開発言語向けのパッケージを利用することが多い。



##無料でAWSを利用する際の注意点
・EC2のマイクロインスタンスのみ利用する
参考：https://aws.amazon.com/jp/ec2/?ft=n

#ドメインを取得して、S3と紐づける
URLから静的ページへ遷移する仕組みを作成する。
##お名前.comからドメインを取得
ムームードメインなども有名、今回はお名前.comでドメインを取得した。
##Route53を使ってS3とドメインを紐づけ
詳細は[コチラ](http://webfood.info/muumuu-domain-for-amazon-s3/)に載っているので参考にすると良い

#次回勉強すること
・S3の料金体系
・S3とEC2の違い、用途の違い、料金について
・EC2を用いた動的ページの作成
・EC2内で作業する為に必要なこと