AWSネットワーク構築入門(EC2,RDS,S3構成)
まずは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の役割と外部にアクセスするゲートの役割になります。
名前ですが
igw-(プロジェクト名)
等頭にigw-を付けるのがawsの標準のようです。ならって名前を付けるのがよさそうです。
インターネットゲートウェイを作成するとVPCを作成するか聞かれるのでアタッチしましょう。
サブネットの作成
次にサブネットの作成をします。通常はサブネットは外部からアクセスできる役割のpublicサブネットと、内部アクセスのみのprivateサブネットを作成しますが今回EC2のみの構成なのでpublicサブネットのみを作成します。
またサブネットはAZをまたげないので、各AZ単位で作成する必要があります。
(例)
1a-public-subnet 10.0.1.0/24
1c-public-subnet 10.0.2.0/24
1d-public-subnet 10.0.3.0/24
1a-private-subnet 10.0.4.0/24
1c-private-subnet 10.0.5.0/24
1d-private-subnet 10.0.6.0/24
ルートテーブルの作成
次に作成したインターネットゲートウェイとVPCを紐づけます
10.0.0.0/16はこのVPC
0.0.0.0のターゲットを作成したインターネットゲートウェイを設定します。こちらをルーティングする事によって、
インターネット←→(インターネットゲートウェイ)←→VPC
の紐づけができます。
さらにサブネットとも関連付けする事で、サブネットからインターネットにも接続する事ができます。
上記で作成した「public」のサブネットのみ 0.0.0.0 に接続可能とする事で、インターネットからはpublicのサブネットのみアクセス可能になります。
dbは「private」のサブネットに置くことでインターネットからアクセスできなくなります。
セキュリティグループの設定
セキュリティグループは、内部から外部にアクセスできるポートと外部から内部にアクセスできるポートを指定します。
作成するセキュリティグループは二つ
アプリケーション用
インバウンドルール例)
httpアクセス→ポート80解放
httpsアクセス→ポート443解放
sshログイン→ポート22解放
アウトバウンドルール例)
全てのアクセス
RDS用
インバウンドルール例)
mysql用→3306解放
RDSの設定
サブネットグループの作成が重要(自分的にはセキュリティグループと混ざったけど違うので注意)
サブネットグループは複数のサブネットに対してアクセスする為の設定、その為サブネットを2個以上作成してないと作成できないので注意。
サブネットグループ作成のポイント
・db用のprivateサブネットを各AZに作成しておく
・設定した、サブネットをグループとしてまとめる。
・DBを作成前にサブネットグループを作成しておくこと。
・作成したRDSに対してセキュリティグループを設定する。(3306接続可能なsg等)
S3の設定
今回のアクセス方法はIAMユーザーを作成して、IAMユーザーの認証情報を使ってアクセスします。
IAMユーザーにAmazonS3FullAccessを付与します。
付与したIAMユーザーでアクセスキーを作成します。
作成したアクセスキーの情報をlaravelの.envファイルに記述します。
次にAmazo S3のバケットを作成します。
作成したバケットのアクセス権限を決めます。
新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
をオフにする事で、ファイルの書き込み可能になります。
任意のアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
をオフにする事で、ファイルの読み込み可能になります。
まとめ
いつかdraw ioで書き直します・・・