AWSのEC2とVPCを構築してみた

# ・目次
1.AWSの概要
　1-1.AWSとは
　1-2.AWSのメリット
　1-3.AWSのデメリット
　1-4.他社クラウドサービスとの比較
2.AWS CloudFormation
　2-1.AWS CloudFormationとは
　2-2.概念
　2-3.今回発生した問題
3.EC2
　3-1.EC2とは
　3-2.GUI
　3-3.Cloudformation
4.VPC
　4-1.VPCとは
　4-2.GUI
　4-3.Cloudformation

# 1.AWSの概要
### 1-1.AWSとは
AWS（Amazon Web Services）は、2006年3月にAmazon社が開始したクラウドコンピューティングサービスのこと。
サービスを組み合わせることでユーザーが求めるITインフラの構築が可能で、クラウドサービスのパイオニア的存在となっており、クラウドサービス市場のAWSシェア率は約33%であり、世界1位である（2018年第1四半期時点）。


## 1-2.AWSのメリット
　メリット①：初期費用の安さ	
→AWSでは初期費用が一切かからない。また継続的な料金の値下げが実施されており、過去10年間で80回以上の値下げ実績がある。

　メリット②：高い耐久性	
→Amazon S3（AWSのオンラインストレージサービス）は、99.999999999%（9x11）の耐久性を実現するように設計されている。
これは、1万個のオブジェクトを保存したときに、そのうちの1つが障害で失われるのに平均で1000万年近くかかるレベルで、非常に高い耐久性を誇る。

　メリット③：拡張性と可用性	
→現在稼働中のサーバーでも、数クリックの画面操作でサーバーの台数、CPU、メモリ、ストレージのサイズなどを変更することが可能なため、
突発的なイベントに対しても、サーバリソースを短期的に増強し対応することが可能である。そのため拡張性が高く、システムが利用可能な状態を維持する能力も高いと言える。

　メリット④：セキュリティと権限管理	
→複数のアベイラビリティゾーンにインスタンスを配置することによって耐障害性を高めることができる。
1つのインスタンスで障害が発生した場合、他のアベイラビリティゾーンのインスタンスが起動するため、パフォーマンスを落とすことなく稼働が可能である。

　メリット⑤：テクニカルサポートの充実度	
→AWSは、自由にサービスを組み合わせて使用できる反面、それ相応の知識が必要だが、テクニカルサポートのサービスが充実している。


## 1-3.AWSのデメリット
　デメリット①：構成やセキュリティが必要以上に複雑になるケースがある	
→AWSはサービスをブロックのように組み合わせて使うことができ、組み合わせ次第で高度な構成やセキュリティを実現できる。
一方で必要以上に複雑な構成にもなりやすいデメリットもあるため、運用面の負担を軽減できるシンプルな設計にする必要がある。	

　デメリット②：ランニングコストの変動	
→AWSは従量課金制のため、アクセス数やデータの利用量に応じて利用料金が毎月変動する。
そのため、サービス導入からランニングコストまでの試算を行い、予算立てるのが難しいというデメリットがある。


## 1-4.他社クラウドサービスとの比較
大手クラウドサービスは、AWS以外にMicrosoftのAzure、GoogleのGCP（Google Cloud Platform）が提供されている。
今回は、クラウドサービス市場における世界シェア2位であるAzureを対象に特徴を比較する。




| 項目 | Azure | AWS |
|:----:|:-----:|:---:|
| 概要 | Windows をベースに構築 | 最も実績が長くシェアトップ |
| 提供元 | Microsoft | Amazon |
| 強み | ・Microsoft 系サービスとの親和性が高い<br>・IaaS とPaaS を統合してサービスを提供 |・サービスの種類が豊富でさまざまな用途に活用可能<br>・実績豊富で多様性・信頼性に強み|
| 弱み | ・情報量が少ない | ・保守運用の自由度が低い |
| 料金 | ・従量課金制<br>・ライセンス購入などのリセラー経由の料金体系を用意| ・従量課金制<br>・継続的な値下げを実施 |


# 2.AWS CloudFormation
## 2-1.AWS CloudFormationとは
→システム開発環境構築サービスのこと。環境構築を容易に行うことができるのでシステム運用の効率化が図れる。

## 2-2.概念
→AWS CloudFormationテンプレートはJSONまたはYAML形式のテキストファイルのこと。
これらのファイルは".json"、".yaml"、".template"、".txt"などの拡張子を使用して保存が可能。
テンプレートには様々なAmazon EC2インスタンス情報が記述可能。

## 2-3.今回発生した問題
 ☆事象 ：CloudFormation関連の管理ポリシーが付与されておらず、作成したテンプレートをAWSにアップロードする際に以下のエラーが表示された。	
User: arn:aws:iam::[アカウントID]:user/[ユーザ名] is not authorized to perform: cloudformation:CreateUploadBucket because no identity-based policy allows the cloudformation:CreateUploadBucket action
	
 ☆ 解決策：IAM(Identity and Access Management)の管理ポリシーから以下の管理ポリシーを付与	
 AWSCloudFormationFullAccess 
	
# 3.EC2
## 3-1.EC2とは
→Amazon Elastic Compute Cloud (EC2) は、AWSのクラウドサーバーを構築できるサービスである。
起動サーバの使用時間に応じて対価を支払うため、「elastic」と呼ばれる。

## 3-2.GUI
### 3-2-1.設定値一覧（デフォルト値から変更したもののみ記載）
※()は備考を記載

* 1.事前準備
→リジョーンの変更：バージニア北部から東京へ

* 2.Amazonイメージの選択
→使用想定のイメージを選択する：Amazon Linux (Amazon Linux・mac OS・Windowsなど様々な種類とバージョンも選択可能)

* 3.インスタンスタイプの選択
→仮想サーバの選択：t2.micro

* 4.インスタンスタイプ詳細
→ネットワーク：vpc-***************** | default VPC(デフォルト) (*****************の部分は環境によって異なる)

* 5.タグ
→キー名：任意の値 (値には1～128文字のUnicode文字を指定ができる。使用できる文字は以下の通り<br>一連のUnicode文字、数字、空白、_、.、/、=、+、-)
→タグ名：任意の値 (1～256文字の値を指定可能)

### 3-2-2. 構築手順
・0.事前準備(リージョンの変更)
![image20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/35f2bb59-2ea0-ba5a-fdb9-5b53ae075b25.png)
![image19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/d178670f-70df-f3cd-b45b-0740207911a8.png)

・1.Amazonイメージの選択
![image22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/ba61fdad-7417-34fc-6043-5f0cc4b3262b.png)
![image23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/2d235596-052b-bcd7-8eba-cd98c2bb5e2e.png)
![image24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/063d53d1-cb90-34fc-2fb8-6f44e7d1ed14.png)

・2.インスタンスタイプの選択
![image25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/78307218-5b8e-f5e4-35a8-b377fa5db165.png)

・3.インスタンスの詳細設定
![image26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/83404035-e58d-6364-f0f3-798ec6530608.png)
![image27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/e148ddfd-0fe1-3eca-442d-ec0eca47eee2.png)
![image28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/c1586114-8950-fed8-f65a-489d38fc9d50.png)
![image29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/6565c683-e42d-b4a7-5aa5-7a6002b64d14.png)
![image30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/a475ecb0-1fd1-f652-47e6-fbb66b5f208f.png)
![image33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/bf34dc71-3073-92da-60dc-2512aaf407ad.png)

・4.ストレージの追加
![image32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/201313fa-1843-fba3-891b-0fc8ef96c097.png)

・5.タグの追加
![image34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/24adc338-86a1-e084-7fce-fdd69b74f59c.png)

・6.セキュリティグループの追加
![image35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/8190db83-3965-be38-25e9-9917be17d07d.png)
![image36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/e43afeff-3903-2f70-a760-98a9f0636d80.png)

・7.設定の確認
![image37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/711ec314-cc72-5985-6fde-397680539055.png)
![image40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/6b1de1fe-a4ad-5575-0b90-a399bcf4b160.png)
![image38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/f15bd068-9af5-1b24-71d4-d243e436e347.png)
![image39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/dbc53883-e9d4-99b5-b8b6-ca3e3405ae5e.png)

・8.キーペアの設定
![image43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/e07e70a5-5c66-3c75-dc0a-132e8ff216f3.png)

・9.作成画面
![image42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/9e0fbf5f-85cd-4bf9-9996-a2df759ee117.png)

・10.作成確認
![image41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/322e5f55-1308-fead-da80-0edd51cec940.png)

## 3-3.Cloudformation
### 構築手順
・1.CFnを開きスタック作成を押下する。
![image5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/ea2a32cb-eaff-96ad-d133-f3018bd86370.jpeg)

・2.作成したテンプレートをアップロードを行う。
![image45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/04b87291-f191-d4c7-6890-6445a9870d6e.png)

・3.スタックの名前を入力する。
![image46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/3ba23420-5b5e-a379-8a2b-9517c79427fa.png)


・4.オプションの設定
![image8 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/56e137d4-1e29-c3f4-3f45-ed211f4e4fa4.jpeg)
![image9 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/3f19c5a7-b1d9-5af2-de9c-5899edc60cac.jpeg)
![image13 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/15e210e8-3a87-a193-d1eb-10597bba441e.jpeg)

・5.設定値の確認
![image10 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/1c5ac9a6-b035-8830-7016-e0ca57e4290a.jpeg)
![image12 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/670acdbc-47a0-9f71-ec4f-7a90ee5d09fa.jpeg)
![image14 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/d0fe1050-a027-7013-0e58-1f3cf1370b3e.jpeg)

・6.CREATE_IN_PROGRESS"と表記され、作成が開始される。
![image47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/28db68dc-0566-b7e8-1f79-6d5933c5ffb6.png)

・7.正常に作成が完了したら"CREATE_COMPLETE"に表記される。
![image48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/572239cc-bc57-77b2-9a4d-8511df10d390.png)

・8.EC2の画面を開くとCFnから作成したものが確認可能になる
![image49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/f9977527-f205-3ab7-cddb-9e9ad07c9a48.png)

・9.テンプレートの中身
![image50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/c56a8984-deb7-f461-0ebc-52dfd4f0f9d2.png)

## 3-4. EC2作成には以下を参照
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html

# 4.VPC
## 4-1.VPCとは
ユーザ専用のプライベートクラウド環境を提供するサービスのこと。

+ Virtual Private Cloud(VPC)
→AWSアカウント専用のネットワークのこと
+ サブネット
→VPCのIPアドレスの範囲のこと
+ ルートテーブル
→ネットワークトラフィックの経路を判断する際に使用される、ルートと呼ばれる一連のルールのこと
+ インターネットゲートウェイ
→VPC内のリソースとインターネット間の通信を可能にするためにVPCにアタッチするゲートウェイのこと
+ VPCエンドポイント
→PrivateLink※1を使用してサポートされているAWSサービスやVPCエンドポイントサービスにVPCをプライベートに接続ができること
+ CIDRブロック※2
→アドレスクラスの概念を気にしないことにより、IPアドレスの割り当てや経路選択などの自由度を挙げる仕組みのこと。

### ※1 PrivateLinkとは												
インターネットを経由せずに異なるVPCやAWSサービスをAWSネットワーク内でつなぐサービスのこと。												
"PrivateLinkを使用することで、インターネット上に出る必要がなくなるためインターネットゲートウェイ、NATデバイス、VPN接続、AWS Direct Connect接続を
使用する場合はVPCエンドポイントは必要がない。
また、セキュリティの厳しい要件のシステムやクローズドでの稼働が必須となるシステムの構築に役立つ。"												
VPCエンドポイントには2つのタイプがあり、利用可能なサービスが異なる。												
	・インターフェースエンドポイント											
	→PrivateLinkによる一般的なAWSサービスの接続に使う。有料											
	・ゲートウェイエンドポイント											
	→S3 や DynamoDB への接続用に使う。無料											
												
### ※2 CIDRブロックとは												
CIDR(Classless Inter-Domain Routing Block)の頭文字を取った略称でサイダーと読む。												
前提知識												
IPアドレスを２進数で表したときに左からｎビットをネットワーク番号、残りの(32-n)ビットをホスト番号と呼び、区別する。												
CIDR表記とは、以下のようなIPアドレスのネットワーク番号のビット数を、IPアドレスの末尾にスラッシュをつけて記述する表記法のこと。												
	192.168.0.0/16											
												
	IPアドレス192.168.0.0/16 で表されるネットワークのアドレス空間は、以下の通りになる。											
												
					ネットワーク番号（左から16ビット）				ホスト番号			
		２進表記			1100	0000	1010	1000	0000	0000	0000	0001
		10進表記			192		168		0		1	
								～				
												
		２進表記			1100	0000	1010	1000	1111	1111	1111	1110
		10進表記			192		168		255		254	
												
	左から16ビット分の 192.168（10進表記）＝1100 0000 1010 1000（2進表記） がこのIPアドレスのネットワーク番号になる。											
	この場合、ホスト番号は 1～65534 のどれかとなる。											
	先頭(ネットワークアドレス)と終端(ブロードキャストアドレス)は使用できない。											
												
	CIDRが /24 の場合は以下の通りになる。											
												
					ネットワーク番号（左から24ビット）						ホスト番号	
		２進表記			1100	0000	1010	1000	0000	0000	0000	0001
		10進表記			192		168		0		1	
								～				
												
		２進表記			1100	0000	1010	1000	0000	0000	1111	1110
		10進表記			192		168		0		254	
												
												
	192.168.0　までがネットワーク番号となり、ホスト番号は 1 ～ 254 のどれかとなります。											
	先頭(ネットワークアドレス)と終端(ブロードキャストアドレス)は使用できない。	
										
## 4-2.GUI
### 4-2-1.設定値一覧（デフォルト値から変更したもののみ記載）

* 1.作成するVPCの名前の設定
→ネームタグの作成：任意の値

* 2.IPv4 CIDRブロックの設定
→IPv4 CIDRの手動入力：任意の値


### 4-2-2.構築手順
![image2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/a4abf981-7f34-1cf5-37b3-ac2d388fb34b.jpeg)
![image1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/23fc86fe-266e-83f7-eb10-2fbb5be41267.jpeg)
VPCでは設定の一番最初にネームタグの設定を行っているので、タグのキーと値 - オプションのには自動的に入力されている。

### 4-2-3.作成画面
![image3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/24bd1d86-460a-c030-8051-f9b75115dc59.jpeg)

### 4-2-4.作成確認
![image4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/3c0b8421-14db-ada6-7d9a-99bc560b010a.jpeg)

## 4-3.Cloudformation
### 4-3-1.構築手順
・1.CFnを開きスタック作成を押下する。
![image1jpg.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/f0337480-da2d-158e-035f-efa620578cd3.jpeg)

・2.作成したテンプレートをアップロードを行う。
![image7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/93ae8c4c-4305-bd39-ec23-4fcff7aa74d1.jpeg)

・3.スタックの名前を入力する。
![image6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/0430910e-91f1-b583-f3a5-db2491534e31.jpeg)

・4.オプションの設定
※今回はNameタグはテンプレートに記載してるので入力しません。
※IAMロールが未作成のため選択不可
![image8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/a28f519e-a2ca-1004-8ae0-63041e5c8a0a.jpeg)
![image9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/eb98fd7a-4a14-8bf1-cb04-d4aaa9572ed8.jpeg)
![image13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/a5e5b3cb-06df-ff2c-2cbe-0162c36e634d.jpeg)

・5.設定値の確認
![image11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/9919cafa-becb-2b05-63d5-a27c67248720.jpeg)
![image10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/80492ce1-049f-0176-a940-b73193926ddd.jpeg)
![image12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/171c3545-a0a0-5198-465c-f479ac4b5dcc.jpeg)
![image14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/fda6b204-3ad0-5901-38dd-218eac59b457.jpeg)

・6."CREATE_IN_PROGRESS"と表記され、作成が開始される。
![image15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/0edc18f3-2f60-d464-649b-5e844a9296fc.jpeg)

・7.正常に作成が完了したら"CREATE_COMPLETE"に表記される
![image16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/4600572e-a4f1-1951-ba96-2f8513864fd0.jpeg)

・8.VPCの画面を開くとCFnから作成したものが確認可能になる
![image18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/c42d7921-2154-5252-18e7-2a7a7a43a1f9.jpeg)

・9.テンプレートの中身
![image17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711226/132e2564-cb6d-8029-a99c-34454b3a4992.jpeg)

# 4-4. VPC作成には以下を参照
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html

以上。