1ヵ月で取得するAWSソリューションアーキテクト (11日目)

#概要
もう11日目(日付変わって12日目になっちゃった)ということで、
EC2も動かしたし、色々と基本的なことも分かってきたので、
モタモタしていないでさっさと合格しよう！…ということで、
試験合格までの最短の道である試験の出題傾向を抑えていこうと思います。

非公式の情報ですが、どうやらソリューションアーキテクト
アソシエーションレベルでは以下の傾向があるとのことです。
<br>
-----------------------------------------------------------------------

<b>試験時間および出題数</b>

-----------------------------------------------------------------------

試験時間: 80 分間
問題数: 複数の選択肢と複数の答えがある問題(55問という噂)

-----------------------------------------------------------------------
<br>
-----------------------------------------------------------------------
<b>出題傾向</b>

-----------------------------------------------------------------------
◆頻出：
<b>EC2、S3、VPC</b>

◆次点：
ELB、AutoScaling、EBS、IAM、RDS、CloudWatch

◆各2-3問：
SQS、SWF、SNS、ElastiCashe、Route53、CloudFormation, DynamoDB

◆1問程度：
Elastic MapReduce、CloudFront、Elastic BeansTalk、Glacier

◆ランダムで出題：
Direct Connect
Storage Gateway
RedShift
DataPipline
OpsWorks
CloudSearch
Elastic Transcoder
SES

-----------------------------------------------------------------------
<br>

結構、幅広く出題されますね…
残念ながら、このままのペースだとさすがにカバーしきれないですね。

問題の内容としては仕組みを理解した上で最適・効率的に動作させる方法を問うようです。

上記を踏まえた上で勉強する方法を考えなくてはならないですね。
まぁ、まずは頻出であるEC2、S3、VPCの基本動作を抑えていきましょうか。

##[1]Amazon S3 バケットの作成とアクセス権の設定

EC2の基本事項は前回、大分はしょってしまいましたが後々、まとめていくとして
頻出分野の1角であるS3の基本動作の確認を行っていこうと思います。

いきなりバケットという言葉が出てきますが、これはサービスの全体像を
確認した時にも触れましたがいわゆるデータの入れ物です。

S3上のオブジェクト(フォルダ、ファイル)はバケットという仕組みで管理されます。

(1)AWSマネジメントコンソールメニューから[S3]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/4a824492-f32b-7333-156f-6cd5c41152d5.png)

(2)[バケットの作成]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/8085a724-859c-9ca0-8d2a-829c0a42045b.png)

(3)[バケット名]に任意のバケット名を入力して[作成]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/ed60b2fc-2f2b-8e94-9ad3-6a56a25ea61e.png)

…と作成をクリックしたら以下のように怒られちゃいました。

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/a8eef000-5f72-c91e-24c9-95eee3184763.png)

というわけで気を取り直して、小文字に変えて再度、作成ボタンをクリックします。

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/17fe41f4-6392-f6c8-db31-8fc44f2d74f0.png)

…と今度は名前が被ってて使えないよのメッセージが…
気を取り直して、誰も使ってなさそうな名前を入力して作成。

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/6b5aa53b-c387-91a0-a920-b3cff104e9c6.png)

無事に作成できました。
このバケットに対する次にアクセス権の追加を行います。

どうやら、デフォルトでアクセス権がついています。
このデフォルトでついているアクセス権を編集していきます。

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/ad932316-5ae9-a3ac-d7ad-7f5f4a83e5f7.png)


S3ではアクセス権が以下のように用意されているようです。

```
●Everyone(全員):
匿名アクセスを許可するには、このグループを使用します。

●Authenticated Users(認証済みユーザー):
このグループは、Amazon AWS アカウントのあるユーザーのみで構成されます。
グループのアクセス権限を付与すると、
有効な署名付きリクエストで適切なアクションを実行できます。
リクエストには、AWS アカウントまたは IAM ユーザーによって署名できます。

●Log Delivery(ログ配信):
このグループは、バケットへのサーバーアクセスログの格納時に
バケットへの書き込みアクセスを許可します。

●Me(AWSルートアカウント):
このグループは、IAM ユーザーではなく、AWS ルートアカウントを参照します。
```

どうやら、デフォルトで付与されているアクセス権はMeの権限だったんですね。
それではアクセス権を変更していきます。

(4)プルダウンメニューから[認証済みユーザー]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/99500fcb-0c9f-1e60-4bd8-006f6191ca9f.png)

(5)[保存]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/af8f850e-9507-5aad-7638-fe0b91e28423.png)

ここまででバケットの作成とアクセス権の付与は完了しました。

順番は前後してしまいましたが、ここでS3の用語をきちんと確認しておきます。
(こういうところが他の人の参考にならないところですよね…)

```
1.オブジェクト:
Amazon S3に格納されるファイル。

2.バケット:
オブジェクトのコンテナ(保管場所)。オブジェクトはここに保存される。
バケットの作成可能な最大数は1アカウント100個まで。
バケット名はユニークな値にする必要がある。

3.キー:
オブジェクト固有の識別子。
またオブジェクトにはウェブサービスエンドポイント、
バケット名、キー、(およびオプションでバージョン)を
組み合わせることで一意にアクセス可能。

```

##[2]ファイルのアップロード

作成したバケットにファイルをアップロードします

(1)S3のメニュー画面からバケットを選んだ状態で[アクション]-[アップロード]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/67fd3658-5769-e8e7-1ef0-b530bd9a3934.png)

(2)[ファイルを追加する]をクリックしてアップロードしたいファイルを選択します
※ドラッグ＆ドロップでもいけるみたいですね。

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/7af03106-26a1-4160-0000-b02e3c93ab05.png)

(3)右下の[アップロードの開始]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/66d9e271-6e60-bd49-f968-00db96b3d643.png)

(4)アップロードが終了すると左にファイル名、右にアップロードのステータスが表示されます

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/0fbd7e49-64c7-2bde-6b90-2ded5550a7bb.png)

##[3]ファイルの表示
続いて、アップロードしたファイルを表示してみたいと思います。

(1)S3メインメニューからバケット内の対象オブジェクトを選択した状態で
　 [アクション]-[開く]をクリックします

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/87c2e1b3-1ac3-51c2-0bd7-a2d43d848d00.png)

(2)保存確認の画面が表示されるので[保存]か[破棄]を選択します

※画面はChromeの場合です。

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/b7234552-a2f6-f0ed-9678-1206c0d5991a.png)

##[4]データストレージクラスについて

S3には堅牢性や料金が異なる複数の[ストレージクラス]なる概念が存在しているようです。
それらを使い分けることによってコストの適正化を行うことができるようです。
ちなみにデフォルトのクラスは[スタンダード]だそうです。

![image](https://qiita-image-store.s3.amazonaws.com/0/138274/fcb82c52-663d-d655-5747-d5bb04fbc32a.png)

・スタンダード(デフォルトクラス)

堅牢性:99.999999999%(イレブンナイン)
可用性:99.99%(フォーナイン?)

・スタンダード-低頻度アクセス　<b>※アクセスが少ないデータを長期保存</b>

堅牢性:99.999999999%(イレブンナイン)
可用性:99.99%(フォーナイン?)

堅牢性はスタンダードと同じ、ストレージ料金がスタンダードよりも安価である。
ただし「データ取り出し」時に料金が発生する

・低冗長化 　<b>※サムネイルやサイズ変更された画像を保存するのに良い</b>

堅牢性:99.99%(フォーナイン?)
可用性:99.99%(フォーナイン?)

複製箇所が2箇所に削減されるためスタンダードよりも堅牢性が劣るが、その分安価である。
唯一の両方フォーナイン。

・アーカイブ(Glacierのこと) 　<b>※データアーカイブ向けサービス</b>

堅牢性:99.999999999%(イレブンナイン)
可用性:99.99%(フォーナイン? ※オブジェクトを復元後)

リアルタイムのアクセス不可。オブジェクトの復元には3～4時間かかる場合がある。

##[5]データ整合性モデル

この記事をお読みの方はお気づきのことと思いますが前回更新から大分時間が経過してます…
そして、ここ数日、色々な出来事が起きて私は思った以上に忙しかったんだなと
今更ながら気づいたわけです。

S3の理解を深めるためには原理を理解する必要があるというわけで、
更に一つ、S3の仕様を確認しておきます。

S3は高い堅牢性と可用性を実現しているわけですが、結果整合性モデルという仕組みを採用し、
データを保管していることが理由として挙げられます。

ではその仕組みを確認します。

```
・新規登録(新規PUT)
　[整合性モデル]
　　書き込み後の読み取り整合性
　[説明]
　　データ登録完了後、即時データが参照できる

・更新(上書きPUT)
　[整合性モデル]
　　結果整合性
　[説明]
　　更新直後は以前のデータが参照される可能性がある

・削除(DELETE)
　[整合性モデル]
　　結果整合性
　[説明]
　　削除直後は以前のデータが参照される可能性がある
```

ここで覚えておくべき特徴としては<b>更新・削除は以前のデータが
参照される可能性を考慮して設計する必要がある</b>ということですね。

ところでなぜ、頻出の項目の中にS3が含まれているのでしょうか？
S3がAWS内でコアサービスたる所以があるでしょうか？

確かにS3は色々なパターンのユースケースが考えられますね。
パッと思いつくところでは…

①データバックアップの保存先
②ログデータの保存先

一言でバックアップといっても色々な用途が考えられそうですが…
実はもう一つ大きな機能をS3は有しているようです。

##[6]静的ウェブサイトホスティング

AWS上のファイルはパブリックに公開することが可能であり、
見知らぬ第三者がアップロードしたファイルへアクセス可能にすることが出来ます。

それが出来るということはですよ。

Webサイトを作成して、マニュアルの保管場所はここですみたいな形で
リンクを貼っておきさえすれば、わざわざ、専用の領域を用意しなくて済むわけですね。

ちなみにEC2インスタンスにS3の領域をマウントするなんてことも可能なようです。
※今回は主題ではないので触れませんが…

設定方法は後日、追記するとして、今回はここまででS3の内容は終わらせたいと思います。

##総括
やはり、毎日いろいろなことがあるから毎日勉強するって大変ですな。

まぁ投稿してから何日経過してんだよって話なわけなんですが…
やっと5日間位かけて11日目のS3に区切りをつけられました(かなり無理くり)

まぁ受かれば良いでしょってこと(そんなことあるかい！ってツッコミは勘弁してください)で
残り日数も少ないことですし、明日からはかなり趣向を変えた学習方法で進めます。

タイトルはどうしよっかな…もう12日目じゃないんだけど…