AWSネットワーク構築入門(EC2,RDS,S3構成)

AWS

まずはEC2,RDS,S3の最小構成でアクセスする為のネットワーク構成を考えます。また、今回はネットワーク構成の勉強も兼ねているので、デフォルトのネットワークは使わない物とします。

参考
https://brain-market.com/u/blackriver/a/bQMzUjMgoTZsNWa0JXY

https://bcblog.sios.jp/construction-procedure-of-routetablescenario-aws/

上記は有料ですが、こちらの構成を設定する前に見ておく資料として一番良いです。

また、設定の順序が大事です。僕はとりあえずEC2を作って色々いじる事からはじめましたが、その場合EC2はデフォルトのネットワークを使っている等で設定は楽でしたが、実際の内容は分からない状態でした。

最初から設定する場合はEC2の構築ではなくVPCの設定から始める必要があります。(EC2を作成してしまうと、設定したサブネット等が変更できなくなる為。)

まずは、AWSのサービスからEC2の作成ではなくVPCを選択しましょう。

VPCでの設定

vpcの設定では下記の作業を行います。

  • VPCを作成
  • インターネットゲートウェイの作成
  • インターネットゲートウェイをVPCにアタッチ
  • サブネットの作成
  • ルートテーブルの作成
  • セキュリティグループの作成

最初はVPCを作成します。デフォルトのVPCではサブネットのCIDRが決まっている等融通がきかない為、カスタムVPCを作成する為です。

カスタムVPCのCIDRは

10.0.0.0/16

をお勧めします。
これは、第2オクテッドまで使用できるので、次のサブネットの設定の時に/24で設定して第3オクテッド使用した設定をする為です。

(サブネットの例)
10.0.1.0/24
10.0.2.0/24
10.0.3.0/24

インターネットゲートウェイの作成

次に作成したVPCにインターネットゲートウェイを作成します。こちらをVPCにアタッチする事で、外部IPと内部IPを変換するNATの役割と外部にアクセスするゲートの役割になります。

サブネットの作成

次にサブネットの作成をします。通常はサブネットは外部からアクセスできる役割のpublicサブネットと、内部アクセスのみのprivateサブネットを作成しますが今回EC2のみの構成なのでpublicサブネットのみを作成します。
またサブネットはAZをまたげないので、各AZ単位で作成する必要があります。

(例)
1a-public-subnet
1c-public-subnet
1d-public-subnet

ルートテーブルの作成

次に作成したインターネットゲートウェイとVPCを紐づけます
10.0.0.0/16はこのVPC
0.0.0.0のターゲットを作成したインターネットゲートウェイを設定します。こちらをルーティングする事によって、
インターネット←→(インターネットゲートウェイ)←→VPC
の紐づけができます。

さらにサブネットとも関連付けする事で、サブネットからインターネットにも接続する事ができます。

セキュリティグループの設定

セキュリティグループは、内部から外部にアクセスできるポートと外部から内部にアクセスできるポートを指定します。

作成するセキュリティグループは二つ

アプリケーション用

インバウンドルール例)
httpアクセス→ポート80解放
httpsアクセス→ポート443解放
sshログイン→ポート22解放

アウトバウンドルール例)
全てのアクセス

RDS用

インバウンドルール例)
mysql用→3306解放

RDSの設定

サブネットグループの作成が重要(自分的にはセキュリティグループと混ざったけど違うので注意)

サブネットグループは複数のサブネットに対してアクセスする為の設定、その為サブネットを2個以上作成してないと作成できないので注意。

サブネットグループ作成のポイント

・db用のprivateサブネットを各AZに作成しておく
・設定した、サブネットをグループとしてまとめる。
・作成したサブネットグループに対してセキュリティグループを設定する。
・DBを作成前にサブネットグループを作成しておくこと。

S3の設定

今回のアクセス方法はIAMユーザーを作成して、IAMユーザーの認証情報を使ってアクセスします。
IAMユーザーにAmazonS3FullAccessを付与します。

付与したIAMユーザーでアクセスキーを作成します。

作成したアクセスキーの情報をlaravelの.envファイルに記述します。

次にAmazo S3のバケットを作成します。
作成したバケットのアクセス権限を決めます。

新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
をオフにする事で、ファイルの書き込み可能になります。

任意のアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
をオフにする事で、ファイルの読み込み可能になります。