Open4

AWSではじめるインフラ構築入門 第2版 安全で堅牢な本番環境のつくり方

yuitayuita

CIDR
IPアドレスを管理する範囲を決める方法の1つ。電話番号を市外局番、市内局番、加入者番号で区切るようなもの。

サブネット
ネットワークを細分化したもののこと。細分化する理由は主に以下。
役割の分離(外部公開するリソースかどうか区別する)
機器の分離(AWS内での物理的な冗長化、AZを分離して耐障害性を上げる)

サブネット化が必要な理由
ネットワークをサブネット化しないとホストが増えるので余計な通信が発生する。
IPアドレスはネットワークとデバイスアドレスを示すだけなので、IPアドレスを使ってIPパケットがどのサブネットに移動すべきかを示すことはできない。そこでネットワーク内のルーターが、サブネットマスクを使用して、データをサブネットワークに分類する。

サブネットマスクとは
IPアドレスを分割して、どこがネットワークアドレス部分で、どこが端末を表すホストアドレス部分かを識別するために使う数値。

yuitayuita

基本的なインフラ構成の流れ。

ネットワークの設定(VPS)
VPCの設定で行うこと
・IPアドレスの設定
・サブネットの作成
ネットワークを細分化したもののこと。細分化する理由は主に以下。
役割の分離(外部公開するリソースかどうか区別する)
機器の分離(AWS内での物理的な冗長化、AZを分離して耐障害性を上げる)
・インターネットゲートウェイの作成
インターネットゲートウェイとは、VPCで作成したネットワークとインターネット間の通信を可能にするもの
・NATゲートウェイの作成とElastic IPの割り当て
NATゲートウェイとは
プライベートサブネット内のインスタンスがVPC外部ネットワークへ接続するために必要なサービス。情報がプライベートサブネットからNAT gatewayに向かうように、ルーティングを設定すれば、プライベートサブネットから外部ネットワークへアクセスできるようになる。
NATゲートウェイはパブリックサブネットに作成する。
・ルートテーブルの作成
ルートテーブルとは、ネットワーク内の伝送経路の情報をまとめたもの。AWSではサブネットと関連付けられて作成される。
・セキュリティグループの作成
セキュリティグループとはVPCに対する外部からのアクセスを制御するもの。

サーバー(踏み台、Web、DB)を用意する(EC2など)
踏み台サーバーの作成
踏み台サーバーとはVPC内のリソースに接続する際に経由しなければならないサーバーのこと。
各リソースに外部からの接続設定を行うのは手間だし漏れが発生する恐れもあるので、踏み台サーバーに接続設定を行なって踏み台サーバー経由で各リソースに接続するよう設定することで、外部からの接続設定を一手に行える。
また誰がいつどのリソースにアクセスしたかの管理も一箇所で行える。
また、外部からリソースに接続できるアクセス元が踏み台サーバーに限定されるので外部からの侵入リスクも軽減される。
SSH接続のためにキーペアを作成する
Webサーバーを作成する

ロードバランサーを設定(ELB)
ロードバランサーの役割
リクエストの分散
複数あるWebサーバーにリクエストを分散させる
SSL処理
Webサーバーで暗号化処理を行うとパフォーマンス低下に繋がる恐れがあるのでロードバランサーで暗号化処理を行う(ロードバランサーには暗号化を高速で行う機能が備わっている)。Webサーバーで行なっていた暗号化処理を肩代わりすることをSSLオフロードという。
不正リクエスト対策
SSL処理同様不正アクセス対応をWebサーバーで行なっていると負荷が高くなるのでロードバランサーで不正アクセス対策を行う。

DBサーバーを作成する
RDSの場合パラメーターグループ(データベース固有の設定)、オプショングループ(RDS固有の設定)、サブネットグループ(DBサーバーを複数のAZに分散配置する際の設定)、データベース
を作成する
必要に応じてストレージやメールサーバーを用意する。
S3
WebサーバーからS3にアクセスするためにはロールの作成が必要。
S3にアクセス可能なロールを作成し、それをWebサーバーのEC2インスタンスに適用する。

独自ドメインとDNS
ドメインはRoute53で取得する。Route53経由でドメインを取得した場合、ドメインを管理するパブリックDNSが同時に作成される。ここに外部からアクセスしてくる踏み台サーバーとロードバランサーの情報を追加する。

SSLサーバー証明書
Certificate ManagerでSSL証明書が発行できる。ロードバランサーにHTTPSで待ち受けるリスナーを追加し、そのリスナーにSSL証明書を設定することでHTTPSアクセスが可能になる。

メール送受信にはSESを利用する。

キャッシュサーバーの作成
キャッシュを利用することによりパフォーマンスの向上が見込める。
ElastiCacheを利用することでキャッシュサーバーを構築できる。

CloudWatchを利用すればリソースの監視を行える。
Billing and cost managementやAWS料金見積もりツールを利用することで料金の監視や見積りが行える。

yuitayuita

Lambda
https://www.udemy.com/course/aws-lambda-serverless-framework/learn/lecture/35226130#overview

ECS on EC2はサーバー管理必要
ECS on Fargateはサーバー管理不要
サーバーレスという言葉の定義は曖昧。利用者がサーバーを触らなくていいものをサーバーレスということもあればLambdaのようなFaasのことをサーバーレスと呼ぶこともある。

Lambdaはコード(zipファイル)をアップロードしておいて、トリガーを設定して実行する。
トリガーの例
定期実行
API Gatewayへのリクエスト
SQSへのメッセージの登録
S3へのデータ保存
DynamoDBへのデータの保存

Lambdaを使ったWebアプリケーション構成の例

ブラウザ → (Cloud Front)S3
     ↘︎ API Gateway → Lambda → DynamoDB
この構成使う場合はCORSの設定が必要。