プロジェクト

全般

プロフィール

開発実装 #58

未完了

設計 #1: 開発運用プロジェクトのスケジュール

開発実装 #31: 本番環境インフラの構築

Terraformを用いて仮想ネットワークを構築する

Lunatic1998 さんが9ヶ月前に追加. 8ヶ月前に更新.

ステータス:
完了
優先度:
普通
担当者:
開始日:
2024-01-15
期日:
2024-02-01 (約9ヶ月 遅れ)
進捗率:

0%

予定工数:

説明

VPC

  • リソースの配置、接続性、セキュリティなどを制御可能な仮想ネットワーク
    • 仮想ネットワーク内のインスタンスのアクセス制限
    • 独自の IP アドレス範囲の選択
    • サブネットの作成
    • ルートテーブルの設定

VPCネットワーク

  • 上記で設計した仮想ネットワークの基盤を作成した。
    • IPアドレスの範囲は/16 から /28 までの最大 5 個の CIDRで選択可能。
    • サービスの範囲を考慮すると、/28 で問題ないが、サブネットの選択が/16 から /28であることから、サブネットのIP範囲より大きい範囲を指定する必要がある。
    • 将来的なサービスの拡張性よりIPを枯渇させない、サブネットとIPの計算が楽になるという理由で /16 を選択した。

VPCサブネット

  • 以下の三種類のサブネットを作成した。
    • パブリックサブネット
      • プライベートサブネット内に配置することで、インターネットからの直接アクセスを制限し、セキュリティを向上させる。
    • パブリックサブネット(ダミー)
      • ALBは複数のサブネットを指定することが求められる。
    • プライベートサブネット
      • 基本的にアプリケーションサーバーは外部からのネットワークからは届かない空間に存在することが望ましい。

ゲートウェイ

  • 以下の二種類のゲートウェイを作成した。
    • インターネットゲートウェイ
      • 外部インターネットと接続する必要があるため作成。
    • NATゲートウェイ
      • 正直VPCエンドポイントを作成しているため、必要性は懐疑的。EC2から外部ネットワークへアウトバウンドのネットワークが必要となった場合にNATゲートウェイがあると後々便利な気がしたため作成。

VPCエンドポイント

  • ECSから外部へコンテナイメージを取得する際にECRへアクセスが必要である。
  • プライベートサブネットから外部インターネットへ接続するときに、以下二点の選択肢がある。
    • NATゲートウェイを利用する
      • 接続が発生するたびにコストがかかる。不要なデータ処理料金は削減するなら好ましい選択ではない。
    • VPCエンドポイントを作成する。
    • 参考

Lunatic1998 さんが8ヶ月前に更新

  • 説明 を更新 (差分)
  • 親チケット#39 にセット

Lunatic1998 さんが8ヶ月前に更新

  • ステータス新規 から レビュー中 に変更

Lunatic1998 さんが8ヶ月前に更新

  • 期日2024-02-01 にセット
  • ステータスレビュー中 から 完了 に変更

Lunatic1998 さんが8ヶ月前に更新

誤ってdestinationがIPv6型のパラメータであったためエラー

  • NATゲートウェイの一部であるインターフェイスはIPv6プレフィックス外に設定できない的なことを言っている。
    • 単純に設定していたdestinationがIPv6型のパラメータだった。
    • ipv4のdestination設定と正しいipv4でのデフォルトルート型にしてやれば良い。
$ terraform apply
│ Error: error creating Route in Route Table (rtb-04e5881ba4b3bc13a) with destination (::/0): InvalidParameterValue: An interface that is part of a NAT gateway cannot be the next hop for an IPv6 destination CIDR block outside the CIDR range 64:ff9b::/96 or IPv6 prefix list.
│       status code: 400, request id: 2482ace8-a2b5-4719-96af-4ef95038b6ac
│ 
│   with module.network.aws_route.private_nat_route,
│   on network/main.tf line 85, in resource "aws_route" "private_nat_route":
│   85: resource "aws_route" "private_nat_route" {

Lunatic1998 さんが8ヶ月前に更新

  • 親チケット#39 から #31 に変更

他の形式にエクスポート: Atom PDF