AWS(クラウド)超入門 第1回

## はじめに
この記事は[【eLV】AWS(クラウド)超入門 第1回](https://elv.connpass.com/event/66772/)のハンズオン資料です。
他の勉強会などで参照頂いたり、そのまま流用(直リン歓迎)して頂いて構いません。
問題点や間違いがあればお手数ですがコメント頂ければ幸いです。
## AWSを知ろう
#### AWSって？
* アマゾンウェブサービス(AWS)は、2006年に登場したシェア約34%[^1]を誇るクラウドサービス。　
* 起源はアマゾン(ショッピングサイト)のビジネス課題を解決するために生まれたITインフラ。
* 自社で培った膨大なサービスを一般に提供。
* 初期費用なし、最低利用期間なし、無料枠あり。
     * 無料枠だけ利用して即解約も可能。
* 個人利用からエンタープライズまで様々な規模で利用可。

### 利用料について
* 基本的には従量制課金(使った分だけ)
     * [クラウドサービス料金](https://aws.amazon.com/jp/pricing/services/)
* 無料利用枠の設定あり
	* [AWS 無料利用枠](https://aws.amazon.com/jp/free/)
* 見積もりツールを利用すればある程度は予測可能。
     * [AWS 課金体系と見積り方法について](https://aws.amazon.com/jp/how-to-understand-pricing/)
* 1人で複数アカウント作成することも可能。

## 学習方法を知ろう
#### 公式サービス
* 公式ドキュメントが充実している。
* 無料の[AWSオンラインセミナー](https://aws.amazon.com/jp/about-aws/events/webinars/)もあり。
* [BlackBeltオンラインセミナー](https://aws.amazon.com/jp/aws-jp-introduction/)のスライドは超おすすめ！
    * 知らないサービスを理解したい時は是非活用しましょう。

#### おすすめ書籍
* [Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版](https://www.amazon.co.jp/dp/4822237443/)
    * インフラの知識についても分かりやすく解説されている。
    * 手順に沿って学習出来る。

#### 各種イベントの活用
* ユーザグループ[JAWS-UG](https://jaws-ug.jp/)が熱い！
    * アスキーに専用ページが設けられている　[JAWS-UG on ASCII](http://ascii.jp/jaws-ug/)
    * 特に毎年3月ごろ開催のJAWSDAYSは超おすすめ！
* AWS公式カンファレンスAWS Summit Tokyoではハンズオン、活用事例が盛り沢山。
* doorkeeperやConnpassで検索しても多くの勉強会がヒットします。

####おすすめサイト
* [Developers.IO](http://dev.classmethod.jp/)
    * AWSプレミアパートナーであるクラスメソッドさんのブログ
    * AWSの技術情報についてググると大体ヒットする
    * イベントも多数開催

## おさえておきたい用語
### この記事で登場する用語

|用語|読み方|意味|
|-----------------|------------------|------------------|
|EC2|イーシーツー|Amazon Elastic Compute Cloud。スケーラブルな仮想サーバーサービス。|
|IAM|アイアム|AWS Identity and Access Management。ユーザーに対してAWSへのアクセスを安全に制御するための仕組み。|
|CloudWatch|クラウドウォッチ|Amazon CloudWatch。さまざまなメトリクスを監視、および管理して、それらのメトリクスのデータに基づいてアラームのアクションを設定できるウェブサービス。|
|VPC|ブイピーシー|Virtual Private Cloud。インフラストラクチャ、プラットフォーム、および共通のセキュリティと相互接続を共有するアプリケーションサービスによって追加される伸縮性のあるネットワーク。|
|Region|リージョン|AWSのサービスを展開している地域を表す。リージョンは最小2個のAZで構成される。|
|AZ|エーゼット、アベイラビリティゾーン|availability zone。アベイラビリティーゾーンは1つ以上の独立したデータセンターで構成される。|
|CloudTrail|クラウドトレイル|AWS API呼び出しを記録し、ログファイルをユーザーに送信するサービス。|

### この記事で登場しない用語

|用語|読み方|意味|
|-----------------|------------------|------------------|
|S3|エススリー|Amazon Simple Storage Service。容量、ファイル数無制限のオンラインストレージサービス。|
|RDS|アールディーエス|Amazon Relational Database Service。クラウド内でリレーショナルデータベースを簡単に設定、運用、およびスケールできるサービス。|
|ELB|イーエルビー|Elastic Load Balancing。アプリケーションへのトラフィックを複数のターゲット(EC2インスタンス、コンテナ、IP アドレスなど)に自動的に分散できるサービス。|
|Lambda|ラムダ|AWS Lambda。サーバーをプロビジョニングしたり管理しなくてもコードを実行できるサーバレスなコンピューティングサービス。|
|ElasticBeanstalk|エラスティックビーンストーク(スターク)|AWS Elastic Beanstalk。コードをアップロードするだけで、キャパシティのプロビジョニング、ロードバランシング、Auto Scaling からアプリケーションの状態モニタリングまで、デプロイを自動的に行ってくれるサービス。<br>豆の木の意であり、豆の話(ビーンズトーク)ではない。|

## 実践編
### AWSアカウントを作ろう
手順は公式サイトを参考にしましょう
[AWS アカウント作成の流れ](https://aws.amazon.com/jp/register-flow/)

#### ポイント
* クレジットカードが必須(VISAデビットなども利用可)。
* 登録時に本人確認のための、電話による音声認証があります。
その際、非通知着信を拒否していると電話が受けられず、サポートへの問い合わせ(日本時間平日9:00-18:00)が必要になる場合があるので、**事前にスマホなどの非通知着信拒否設定を解除しておきましょう。**
* 個人情報は英語表記で入力します。
	* 英語が苦手な人は住所変換サービスなどを活用しましょう。
* 1年間の無料枠があるのでアカウントを作っただけではお金は掛からない。
* AWSの契約アカウントは、後述のIAMアカウントと区別するためルートアカウントと表現する。
* 管理が不適切だと思わぬトラブルに繋がることもあるので、後始末を忘れずに。
  * EC2インスタンスを削除し、EBSやEIP(固定IP)を削除し忘れた場合など。
  * 後述の料金関連アラームを設定しましょう。
* 登録時のメールアドレスにはgmailのエイリアスアドレスを利用すると便利。
  * e.g. example+aws1@gmail.com

### 最初にやること(ルートアカウント)
トラブルを防止するための以下の設定をおすすめします。

#### セキュリティ関連設定
1. AWSマネジメントコンソールにログインする。
2. ルートアカウントのMFAを設定する。
	* AWSが紹介している[仮想 MFA アプリケーション](https://aws.amazon.com/jp/iam/details/mfa/#仮想_MFA_アプリケーション)
		* PCでも利用できるAuthyがおすすめ。
	* [お使いの AWS アカウントのルートユーザーの仮想 MFA デバイスを有効にする (AWS マネジメントコンソール)](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html#enable-virt-mfa-for-root)
3. パスワードポリシーを設定する。
	* [パスワードポリシーの設定（AWS マネジメントコンソール）](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_passwords_account-policy.html#IAMPasswordPolicy)
4. IAMユーザ、IAMグループを作成する。
	* [管理者 IAM ユーザーおよびグループの作成 (コンソール)](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/getting-started_create-admin-group.html)
	* 作成した際に、IAM用ログインURLが表示されるので控えておく。
	* [IAM のベストプラクティス](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html)は時間のあるときに確認しておきましょう。

5. 必要に応じてCloudTrailを有効化する。
	* 過去7日分の記録は事前設定なしで確認可能。
	* S3に保存する場合は課金あり。
	* 仕事で使用するときは全リージョン有効化推奨。

#### 料金関連設定
1. 請求設定を変更する。
	* [請求設定](https://console.aws.amazon.com/billing/home#/preferences)より下記2点を有効にする。
		* 電子メールで PDF 版請求書を受け取る
		* 請求アラートを受け取る
2. アカウント情報の設定を変更する。
	* [アカウント情報](https://console.aws.amazon.com/billing/home#/account)より下記2点を変更にする。
		* お支払通貨の設定をJPYにする
		* IAM ユーザー/ロールによる請求情報へのアクセスを有効にする
	* ※ちなみにアカウント解約もこのページからできます。
3. 予算を設定する(請求アラーム設定でも良い)。
	* [AWS Budgets](https://console.aws.amazon.com/billing/home#/budgets)にて予算を設定する。
		* 予算の詳細
			* コストまたは使用量を選択：コスト
			* 名前：任意(AWS予算など)
			* 開始日：今日の日付
		* 予算の絞り込み
			* チェックなし
		* 通知
			* 通知のタイミング：現行＞1%
			* 連絡電子メール：任意のメールアドレス

### IAMユーザでのログイン
1. マネジメントコンソールにIAMユーザでログインする。
	* [IAM コンソールとサインインページ](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/console.html#user-sign-in-page)
2. IAMユーザのMFAを設定する。
	* [IAM ユーザーの仮想 MFA デバイスを有効にする (AWS マネジメントコンソール)](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html#enable-virt-mfa-for-iam-user)

### EC2に触ってみる
1. リージョンを選択する。
	* 今回はオレゴン(us-west-2)を選択。
2. EC2インスタンスを作成する。
	* [インスタンスの作成](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/launching-instance.html)を参照。
	* セキュリティグループでhttp(80)を許可する。
	* ユーザデータ[^2]として以下を入力する。
	
	```
#!/bin/bash
yum update -y
yum install -y httpd24 php56 mysql55-server php56-mysqlnd
service httpd start
chkconfig httpd on
groupadd www
usermod -a -G www ec2-user
chown -R root:www /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} +
find /var/www -type f -exec chmod 0664 {} +
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
```
3. ブラウザでWebページにアクセスしてみる。
4. インスタンスを削除する。


----
引用

[^1]: http://blogs.itmedia.co.jp/business20/2017/08/aws34microsoft11.html
[^2]: http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts