AWS(Amazon Web Services)について


#目的
AWSの知識が浅いので定着に励む為、アウトプットします！
#AWS
Amazonが提供している、サーバーに関するサービスの総称です。
#Amazon Simple Storage Service（略称：AmazonS3,S3）
S3を利用することで、画像を保存したり、保存してある画像を取得したりすることができます。
```AWS```導入から```S3```で保存先を作成する流れを覚える

AWSでセキュリティの対策を行う。
・ ログインを二段階に設定（二段階認証）
・ 利用制限付きのユーザーを使用（IAMユーザー）
・ 保存機能にアクセス制限を設定（バケットポリシー ）

#AWSに新規登録
「Eメールアドレス」から「AWSアカウント名」まで全て入力して、「続行」をクリック。
次に
・アカウントの種類は「パーソナル」を選択
・「フルネーム」から「郵便番号」まで全て入力
・「AWSカスタマーアグリーメント」にチェックを入れる
・入力できたら、「アカウントを作成して続行」をクリック

支払情報も入力し、入力できたら、「検証して追加する」をクリック。

本人確認の登録
・検証コードをどのように受け取りますか？の欄は、「テキストメッセージ（SMS）」にチェックを入れる
・国はリージョンコードは「日本」を選択
・セキュリティーチェックは「表示された文字」を入力
・入力できたら、「SMSを送信する」をクリック

しばらくすると、アカウント登録時に入力した電話番号にSMS（ショートメール）が届きます。
受け取ったメッセージ内に検証コードとして書かれている「4桁の数字」を入力します。
入力できたら、「コードの検証」をクリック。

ここまでしたら後はプランの選択
無料で行いたかったのでベーシックプランを選択。作成したアカウントでログインする為コンソールにサインイン。ログイン画面に遷移します。
「ルートユーザー」を選択して、アカウント登録時に設定した「メールアドレス」を入力しましょう。
入力できたら「次へ」をクリック。```AWSのトップページが表示されれば、ログイン成功です。```

#ルートユーザー
AWS上の全てのサービスや機能を使える権限が与えられています。
ルートユーザーであればAWS上のサービスを何でも利用できるという意味です。
したがって、ルートアカウントを不正利用された場合、大量課金の可能性があり大変危険です。
また、不正利用ではなく、自ら誤った操作をしてしまう危険性もあります。
そこで、利用制限のあるユーザーを作成してAWSを利用する設定をしていきましょう。

#IAMユーザー
AWSにはサービスへのアクセス制限を管理できるサービスがあります。それを「IAM」といいます。
今回はIAMを利用して、権限が制御された「IAMユーザー」というものを作成します。
利用制限のある「IAMユーザー」を利用して、安全にAWSを利用できるようにしましょう。

#IAMユーザーの作成
IAMユーザーを作成していきます。
・AWSトップページのサービスの検索フォームに「IAM」と入力し、検索結果からIAMのページにアクセスします。
・IAMのページに遷移します。
・IAMリソースから「ユーザー」をクリック。
・IAMユーザーのページに遷移します。
・画面左上の「ユーザーを追加」をクリック。
・ユーザー作成画面の1ページ目に遷移します。
・「ユーザー名」に自身で考えた名前を入力しましょう。
・アクセス権限は「プログラムによるアクセス」を選択しましょう。
・入力できたら「次のステップ：アクセス権限」をクリック。
・アクセス許可の設定は「既存のポリシーを直接アタッチ」を選択
・検索窓に「AmazonS3」を入力
・検索結果に出てきた「AmazonS3FullAccess」を選択
・入力できたら、「次のステップ：タグ」をクリック。
・何も入力せず、「次のステップ：確認」をクリック。
・設定内容に遷移、「ユーザーの作成」をクリック。
```「.csvファイルをダウンロード」をクリックして、ファイルをダウンロードしましょう。```
csvファイルは「new_user_credentials.csv」という名前で、ホームディレクトリのダウンロードディレクトリに保存されます。
こちらのファイルには```「Access key ID」``` ```「Secret access key」```という秘密情報が記載されています。この秘密情報はソースコードのプログラム内でAWSにアクセスする際に使用するものです。
#IAMユーザにパスワードの作成
・IAMユーザーのページから、先ほど作成したIAMユーザーをクリックしましょう。
・「認証情報」のタブをクリックすると、「サインイン認証情報」の欄が表示されます。
・コンソールのパスワードの「管理」をクリック
・コンソールのアクセスの「有効化」、パスワードの設定の「自動生成パスワード」を選択しましょう。
入力できたら「適用」をクリック
・「.csvファイルをダウンロード」をクリックして、ファイルをダウンロードしましょう。
csvファイルは```「ご自身のIAMユーザー名_credentials.csv」```という名前で、ホームディレクトリのダウンロードディレクトリに保存されます。
こちらのファイルには「ユーザー名」「パスワード」「ログインURL」が記載されています。
こちらのログインURLに飛んでいただき、IAMユーザーでログインしてください。
#二段階認証
もし仮にAWSアカウントのID・パスワードが漏れてしまった場合でもすぐに不正利用されないように、ログインを二段階にしましょう。
二段階目のログインには、```「Authy」```というアプリケーションを使用します。
Authyがトークンという一時的に使えるパスワードを自動で生成してくれます。
そのトークンを使用し、二段階目のログインを行う仕組みになっています。
またトークンは30秒ごとに自動で変更されるため、漏洩のリスクが低く、セキュリティーを強化することができます。
#Authyをインストール
まず、Authyという認証アプリを自分のスマートフォンにインストールします。
初期設定
・Codeに「Japan（+81）」を選択
・Cellphone numberに「電話番号」を入力
・電話番号を入力したら出現するEmailの欄に「メールアドレス」を入力
入力できたら、「OK」を選択
・次に本人確認のページに遷移します。
・本人確認コード送付方法として「SMS」を選択しましょう。
しばらくすると、アカウント登録時に入力した電話番号にSMS（ショートメール）が届きます。
メッセージ内にある「6桁の数字」を入力しましょう。
これで初期設定終了。次にAWSのルートユーザーにログインし直し
・右上のユーザー名のリストから、「サインインアウト」をクリック
・「コンソールにサインイン」をクリック
ログイン画面に遷移します。
「ルートユーザーのEメールを使用したサインイン」を選択しましょう。

次に、AWSで二段階認証を行うための設定を行います。
・ヘッダー部分に表示されているアカウント名をクリックして、メニューの中から 「マイセキュリティ資格情報」 を選択します。
・ポップアップ画面が表示された場合は、 「Continue to Security Credentials」 をクリックします。
・セキュリティ認証情報のページに遷移します。
・メニューの中の 「多要素認証（MFA）」 をクリックして内容が展開されたら、「MFAの有効化」 をクリックしましょう。
・ポップアップ画面が表示されます。
・「仮想MFAデバイス」が選択されているのを確認して、「続行」をクリック。
新しいポップアップ画面が表示されます。
・「QRコードの表示」をクリックすると、QRコードが表示されます。
ここまで終えたら、スマートフォンでAuthyを開きましょう。
IOSの場合
①Add Accountを選択
②Scan QR Codeを選択
③QRコードを読み取る
設定画面を終了すると、トークンと呼ばれる6桁の数字が表示されるようになります。
今回の初期設定と今後の二段階認証のログイン時に、このトークンを使用していくことになります。

AWSに戻り以下を実施
・「MFAコード1」の欄に現在表示されているトークンを入力
・次のトークンに切り替わるまで数十秒ほど待つ
・新しいトークンが表示されたら、「MFAコード2」の欄に新しいトークンを入力。
・最後に「MFAの割り当て」をクリック
これでルートユーザーに二段階認証の設定をすることができました。
次回以降ログインする際には、トークンを求められるようになります。
Authyで表示されたトークンを入力しましょう。

IAMユーザーにも二段階認証の設定を行う。
・左のサイドバーから「ユーザー」をクリック。
・作成したIAMユーザーの名前をクリック
・「認証情報」のタブをクリックすると、「サインイン認証情報」の欄が表示されます。
・MFAデバイスの割り当ての「管理」をクリック。
ここからは、ルートユーザーに二段階認証を設定した時と同じ流れになります。

#S3で保存先を作成
バゲット
S3では自分用のデータを保存する場所のことを「バケット」と呼びます。
リージョン
S3に保存されたデータは実在の施設に分散して保管される,その実在の施設が所在している場所を「リージョン」といいます。
#バゲットの作成
・ルートユーザーに切り替え
・画面上部のメニューバーから「サービス」をクリック。
・サービス一覧から「S3」を選択
・S3バケットのページに遷移します。
・「バケットを作成する」を選択
・「バケット名」を入力し、リージョンが「アジアパシフィック（東京）」になっていることを確認しましょう。
・「パブリックアクセスをすべてブロック」のチェックを外しましょう。
・チェックを外すと、追加でチェックボックスが表示されます。
![スクリーンショット 2020-12-25 17.46.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/918688/54abbab7-f01d-3040-6270-d145713fa97f.png)
以下の三点にチェックを記載
「バケットを作成」をクリック。
次に「バケットポリシー」というものを使用して、アクセス制限の設定をしましょう。
```バケットポリシー```
バケットに対して、どのようなユーザーが、どのような処理をできるか取り決めをするものです。この処理とはデータの保存やデータの読み取りなどです。
先ほど作成したIAMユーザーのみバケットにアクセスできるよう設定していきます。
・「IAMユーザー」の情報を取得します。
・画面上部のメニューバーから「サービス」をクリック。
・検索欄に「IAM」と入力して、結果に表示された「IAM」をクリック。
・左のサイドバーから「ユーザー」をクリック。
・IAMユーザーのページが表示されます。
・「作成したIAMユーザー名」をクリック。
・ユーザー概要のページに遷移します。
・「ユーザーのARN」をコピーするボタンをクリックしましょう。
これで、IAMユーザーの個別情報である「ユーザーのARN」を取得することができました。
後ほどこの「ユーザーのARN」を使用するため、メモアプリなどに保存しておきましょう。
次に、バケットポリシーの設定を行います。
・画面上部のメニューバーから「サービス」をクリック。
・サービス一覧から「S3」を選択。
・バケットのページに遷移します。
・先ほど作成した「バケット名」をクリック
・個別のバケット概要ページに遷移します。
・画面中央の「アクセス許可」をクリック。
・入力できたら、下にスクロールしてください。
・画面を下にスクロールすると、バケットポリシーの設定が表示されます。
・「編集する」をクリックしましょう。
下記のバケットポリシー のコードをコピーしましょう。
コピーしたら、AWSのサイト上の「ポリシー」という入力欄に貼り付けます。

```バゲットポリシー
{
   "Version": "2012-10-17",
   "Id": "Policy1544152951996",
   "Statement": [
       {
           "Sid": "Stmt1544152948221",
           "Effect": "Allow",
           "Principal": {
               "AWS": "①"
           },
           "Action": "s3:*",
           "Resource": "arn:aws:s3:::②"
       }
   ]
}
```
①の箇所に、ユーザーのARN
②の箇所に、作成したバケット名を入力します。
・「変更の保存」をクリック
これでバゲットの作成は完了です。

次回S3に保存のやり方を投稿します。