AWSについて

# 趣旨
AWSについて3時間ほどかけて調査を行いました 

# AWS概要
まずはAWSの概要について
Amazonが提供する、いわゆる`クラウドサービス`の1種であるが、[AWS公式HP](https://aws.amazon.com/jp/what-is-aws/)によると、概要は以下の通り。

>Amazon Web Services (AWS) とは、世界で最も包括的で、幅広く採用されているクラウドコンピューティングサービスです。クラウドサービスを利用すると、インターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができます。AWSでは、そういった 200 を超えるフル機能のサービスを世界中のデータセンターから提供しています。

# 調査対象について
AWSには200を超えるサービスがあるとのことで、このサービスについての調査を行おうと思います。
ですが、200個も調べられないのと、EC2,RDS,S3については現時点でもなんとなくイメージがつくので、
新しい知識を身につけることを目的として、Webアプリケーションに関係しそうなサービスを数種類調べます。

調べられなかったサービスや単語の意味は別の時間で勉強します。
→資格と合わせて勉強：（[AWS Certified Cloud Practitioner](https://aws.amazon.com/jp/certification/certified-cloud-practitioner/?ch=tile&tile=getstarted)）

## 調査１： Lightsail
特徴の調査と、実際の操作を行いました。

### 特徴
https://aws.amazon.com/jp/lightsail/?did=ap_card&trk=ap_card

- EC2の亜種のようなもので、最初からLAMP環境やMEAN環境などが設定されているインスタンスであり、好きなものを選ぶだけで簡単に開発環境を構築できる
    - 上記に限らずWordPressやMagentoなども選ぶことが可能
- EC2と同様にスペックによって値段が変化する
- LightsailからEC2へアップグレードすることも可能

### 実際の操作
[公式のチュートリアル](https://aws.amazon.com/jp/getting-started/hands-on/launch-a-virtual-machine/)(WordPressアプリケーションの作成)があるので、無料枠を用いて実作業を行いました。

#### 1. Lightsail インスタンス設定
以下の設定をしてからインスタンスの生成を行う。今回はWordPressを選択。

- Region/Availability Zoneを選択
- Platformを選択
    - Linux/UnixとWindowsの2種類あり
- brueprintを選択
    - OS onlyと Apps + OSの2種類あり
        - OS onlyは、AmazonLinux, Ubuntu, Debian, freeBSD, openSUSE, CentOS から選択可能
        - Apps+OSは、WordPress,LAMP,MEAN,Node.jsなど、16種類のアプリケーションを選択可能
- Instance Plan
    - サーバの性能を選択
        - 最低 $3.50 USD -> 512MB Mem/2vCPUs/20GB SSD/1TB Transfer
        - 最高 $160 USD -> 32GB Mem/8vCPUs/640GB SSD/7TB Transfer
- Instance名設定

#### 2. インスタンスへの接続
1で生成したのち、コンソールアイコンをクリックするだけでCLI操作を行うことができる。

起動した段階で、3306と80が動いている。
```
bitnami@ip-172-26-15-129:~$ ss -tan
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port    Process    
LISTEN    0         80               127.0.0.1:3306            0.0.0.0:*                  
LISTEN    0         128                0.0.0.0:22              0.0.0.0:*                  
ESTAB     0         0            172.26.15.129:22         136.18.20.86:20862              
ESTAB     0         0            172.26.15.129:22         136.18.20.86:51181              
LISTEN    0         511                      *:80                    *:*                  
LISTEN    0         128                   [::]:22                 [::]:*                  
LISTEN    0         511                      *:443                   *:*   
```

#### 3. IPアドレスの固定
生成したインスタンスはグローバルなIPアドレス(v4, v6)を持つが、インスタンスを停止したのち起動を行うとIPv4アドレスが変わってしまう。(v6は機能の無効化/有効化によって変わる）
これでは困ることが多いので、インスタンスの`Networking`設定画面から、現在のIPv4アドレスをずっと紐づけたままにすることができる。

以下、IPアドレスの変化の確認。
- 最初
    ```
    2406:da14:f4a:ef00:9d67:2e1d:246a:5f0
    54.249.208.7
    ```
- インスタンス Stop -> Start後
    ```
    2406:da14:f4a:ef00:9d67:2e1d:246a:5f0
    18.179.7.222
    ```
- IPv6無効化/有効化後
    ```
    2406:da14:f4a:ef00:450:2088:d231:1bd4
    18.179.7.222
    ```

#### 4. ドメインの設定(ドメインがないので未実施）
`Domains`設定より、自身が所持するドメインに、3で設定したIPアドレスを紐付けることができる。
ドメインを持っていなくても、設定画面でドメイン自体を買いながらドメイン周りの設定することもできる。

#### 5. WordPressの設定
`https://18.177.63.212/wp-admin`でWordPress管理用ページにアクセスでき、`wp-admin`なしで実コンテンツを見ることができる。
後は好き勝手にWordPressをいじることができる。


## 調査２：Lambda
理解に時間がかかったため、特徴のみになります。

### 特徴
https://aws.amazon.com/jp/lambda/

- コードを書いておくと、トリガーに応じて処理を行ってくれる、というサービス
- EC2やLightsailでは処理性能に限界があり、限界までくると未処理のデータが溜まっていってしまうが、Lambdaを用いると処理限界を気にせずに好きなだけ処理を実行することができる
- 実行時間(1ミリ秒単位)で課金され、メモリの性能等によっても値段が変化する
- `関数を記述`→`メモリ/タイムアウト/IAMの役割を選択`→`関数をトリガーするAWSリソースを指定` という流れで設定することで、そのリソースが変更されると関数が実行されるようになる
    - IAMとは`Identity and Access Management｀のことで、リソースにアクセスできるユーザの制御を行うことができるサービス
- デフォルトで、Java、Go、PowerShell、Node.js、C#、Python、Rubyをサポートしており、言語に縛られず使用できる