初めてのAWS (Amazon Web Service)

# 初めてのAWS！

最近クラウドの勉強をしているのですがAWSを利用したことがなかったもんで試しに触ってみます。

以下のサイトを参考にしつつ初期設定をしてみました。

- [AWS(クラウド)超入門 第1回](https://qiita.com/modokkin/items/fc1280eda4356816a3f9)
- [AWSアカウントを取得したら速攻でやっておくべき初期設定まとめ](https://qiita.com/tmknom/items/303db2d1d928db720888)

ではさっそく取り掛かりましょう！

## AWSとは？

ざっくりというと以下のようなものです。

- クラウドコンピューティングサービス
- 世界190ヵ国の100万もの企業で利用されている
- サーバーを立ててHostingしたりデータベース作ったり、Webアプリを動かせたりと何でもできる
- 利用が簡単
    - 素早く安全にHostingできる
- 柔軟性がある
    - OSやプログラム言語、プラットフォームなど目的に合った環境を構築できる
- コスト効率がいい
    - 利用したいサービスのみお金を払う仕組み
- 信頼性がある
    - 10年以上（2007年からサービスを開始）のキャリア
- スケーラブル
    - 需要に応じて拡大/縮小が容易に行える
- 安全性が高い
    - 物理的対策など
- 従量課金制
    - 使った分だけお支払い
    - 12ヶ月の無料利用枠がある
 
詳しくは[AWSのフリートライアル](https://aws.amazon.com/jp/s/dm/landing-page/start-your-free-trial/)のページに紹介されています。

## AWS用語

準備中…

|AWS用語|内容|
|---|---|
|EC2|クラウドにサーバーを立てると言ったらこれ|
|VPS|サーバーなどのローカルIPアドレスなどを設定することができる|
|IAM|AWSで権限を管理する|
|AZ|Available Zone|
|RDS|データベース|
|DynamoDB|NoSQL|
|S3|ファイルサーバー|
|Lambda|サーバーレスで関数を実行する|
|CloudFormation|AWSのサービスを管理するサービス|


# AWSを始めよう！（初期設定）

## AWSの登録

[こちら](https://aws.amazon.com/jp/s/dm/landing-page/start-your-free-trial/)からとりあえずFREEのトライアルを申し込んでみましょう。
案内にしたがって登録をしていけばOKです。住所等は英語で記入する必要があります。またクレジットカードの登録も必須ですので注意してください。

## AWSを利用する前に…

AWSは初期設定が肝心です、特にセキュリティ。
もしキーなどをGitHubなどのパブリックに公開してしまった日には不正利用されて高額請求で苦しむことになるかもしれません。
痛い目を見ないためにもここはしっかりと設定しておきましょう。
一度以下の記事に目を通しておくといいかもしれません。

- [GitHub に AWS キーペアを上げると抜かれるってほんと？？？試してみよー！](https://qiita.com/saitotak/items/813ac6c2057ac64d5fef)
- [初心者がAWSでミスって不正利用されて$6,000請求、泣きそうになったお話。](https://qiita.com/mochizukikotaro/items/a0e98ff0063a77e7b694)
- [AWSで不正利用され80000ドルの請求が来た話](https://qiita.com/koyama9876/items/add70cba3cccdb7fa995)
- [AWSが不正利用され300万円の請求が届いてから免除までの一部始終](https://qiita.com/AkiyoshiOkano/items/72002409e3be9215ae7e)

## AWSのセキュリティ設定

設定方法のおおまかな流れは以下のような感じです。

1. AWSのコンソールにログインする
2. ルートアカウントのMFAを設定する
    - Google Authenticator or Authy 2段階認証を使う
    - 詳しくはAWSが紹介している[Multi-Factor Authentication](https://aws.amazon.com/jp/iam/details/mfa/#%E4%BB%AE%E6%83%B3_MFA_%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)をチェック
    - [多要素認証（MFA）仮想デバイスの有効化](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html#enable-virt-mfa-for-root)を参考にMFAを設定
3. パスワードポリシーを設定する
    - ここでパスワードの設定ができる
    - 文字列長は__8文字以上__、文字種は__英数字を使用する__設定がおすすめ
    - あとはお好みで制限をかける
4. IAMユーザー、IAMグループを作成する
    - IAMの設定方法は重要なので次の項目に詳細を書いた
    - 更なる詳細は[最初の IAM 管理者のユーザーおよびグループの作成](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/getting-started_create-admin-group.html)をチェック
    - 余裕があれば[IAM のベストプラクティス](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html)もチェック

5. 料金まわりの設定をする
6. IAMユーザーに切り替える
7. リージョンを設定する
8. CloudTrailを設定する
    - AWS アカウントのガバナンス、コンプライアンス、運用監査、リスク監査を可能にするサービス
    - AWS インフラストラクチャ全体でアカウントアクティビティをログに記録し、継続的に監視し、保持できる
    - 詳細は[AWS CloudTrail](https://aws.amazon.com/jp/cloudtrail/)をチェック

## 管理用IAMの設定詳細

以下を参考に設定を行う

- [AWS アカウント内での IAM ユーザーの作成](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_create.html)

1. [IAMのホーム](https://console.aws.amazon.com/iam/home)を開く
2. `個々のIAMユーザーの作成`　→　`ユーザーの管理`を選択
3. `ユーザーの追加`を選択
4. ユーザー名を入力し、下部にある`AWS マネジメントコンソール へのアクセス`にチェックを入れる（AWS CLI等を利用する場合など、必要に応じて`プログラムによるアクセス`にチェックを入れておく）
5. パスワードの設定等をする（自動 or カスタムどちらでも）
6. 所属させる管理用グループを作成する
7. 管理用グループに与える権限としてAdministratorAccessにチェックを入れる
8. 確認画面で設定を確認する
9. 完了画面でアクセスキーなどをメモる
10. 左の項目から`ユーザー`を選択し、先ほど作成したユーザーを選択する
11. 認証情報のタブを開き、MFAの設定を編集する
12. 手元のデバイスとの2段階認証を設定する


## セキュリティをさらに高める

### git-secrets

いろいろ設定をしていても操作ミス等でgitにシークレットアクセスキーをpushしてしまうような人的ミスが起こらないとも限りません。そのためにAmazonが提供している__git-secrets__を導入しましょう！

### 利用方法

以下の記事を参考に自身のマシン上で設定しましょう。

- [クラウド破産しないように git-secrets を使う](https://qiita.com/pottava/items/4c602c97aacf10c058f1)

## AWSの料金まわりの設定

IAMを設定し終えた後もやることは残っています。AWSアカウントをログアウトする前に設定しておきましょう。

### IAMユーザーに対して請求情報のアクセス許可

[アカウント設定](https://console.aws.amazon.com/billing/home#/account)を開き、`IAM ユーザー/ロールによる請求情報へのアクセス`の編集をクリックする。
IAM アクセスのアクティブ化にチェックを入れ、更新を押す。

### お支払通貨の設定

AWSの利用料金は日本円で払うことも可能である。場合によってこちらの設定もしておくといいかもしれない。
同じくアカウント設定の`お支払通貨の設定`の編集をクリックする。 
規約を読みAcceptをクリックする。
JPYを選択し、更新をクリックする。

### 請求情報とコスト管理の設定

左の項目にある`設定`を選択する
以下の項目にチェックを入れ、設定を保存する。

- [x] 電子メールでPDF版請求書を受け取る
- [x] 請求アラートを受け取る

### コストエクスプローラーの有効化

課金情報をグラフィカルに表示してくれて便利なので有効化しておく。

左メニューから`コストエクスプローラー`を選択し、`コストエクスプローラーを有効化する`のボタンをクリックする。


### CloudWatchで請求情報のアラームを作成

任意の金額に達した時点でアラートを受け取る設定をする。これにより、いきなり数十万の請求とかを未然に防げるようにする。

[CloudWatch](https://console.aws.amazon.com/cloudwatch/home?region=us-east-1)を開く

左メニューから`請求`を選択し、`アラームの作成`をクリックする。

通知の基準と通知先のメールアドレスを指定してアラームを作成ボタンをクリックする。

設定したメールアドレスに確認メールが来るので、確認メールのリンク先にアクセスして確認を行うとアラームの表示が選択できるようになる。
クリックするとアラームが作成できる。


## IAMユーザーに切り替え

AWSアカウントでの設定が終了したため、ここからはIAMユーザーに切り替える。

### IAMユーザーでのログイン

1. AWSアカウントのIAMのページを開く
2. IAMユーザーのサインインリンクをコピーしてAWSアカウントをサインアウトする
3. 先ほどのリンク先にアクセスしIAMアカウントでログインする

### リージョンを変更

デフォルトではバージニア北部に設定されているため、東京のリージョンに変更する。

右上のメニューからバージニア北部をクリックしてアジアパシフィック（東京）を選択する

### CloudTrailの設定

これを設定することでAWS内のリソースの作成、変更、削除のログを残してくれる。

[CloudTrail](https://ap-northeast-1.console.aws.amazon.com/cloudtrail/home?region=ap-northeast-1#/subscribe)を開き、以下の項目を設定する。

- 証跡名（任意の名前）
- 証跡情報を全てのリージョンに適用
    - [x] はい
- 新しい S3 バケットを作成しますか
    - [x] はい
- S3パケット（任意の名前）

APIアクティビティ履歴からログを確認できる。

# 最後に

AWSを個人で利用するには設定が多くて大変ですね。ただここをさぼると後で痛い目を見ることになるので（特にお金が絡んでるのでね）しっかり設定は行わないとですね。ここに書いたことはあくまで最低限の事なので必要であればその都度セキュリティの設定をしていくのがいいと思います。
[IAM のベストプラクティス](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html)はかなり参考になるので必ず見ておきましょう。


# 参考サイト

- [AWS(クラウド)超入門 第1回](https://qiita.com/modokkin/items/fc1280eda4356816a3f9)