0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFormationで必要な時だけRegional NAT Gatewayを作成する

0
Posted at

AWSでプライベートサブネットを利用していると、

  • OSアップデート
  • パッケージインストール
  • 外部リポジトリアクセス
  • 一時的なインターネット通信

などのためにNAT Gatewayが必要になることがあります。

しかし、NAT Gatewayは利用有無に関係なく時間課金が発生するため、開発環境や検証環境では意外とコストがかかります。

そこで今回は、

必要な時だけCloudFormationでRegional NAT Gatewayを作成し、不要になったらスタックごと削除する

という運用方法を紹介します。

想定環境

既に以下の環境が存在しているものとします。

VPC
├─ Public Subnet 1
├─ Public Subnet 2
├─ Private Subnet 1
├─ Private Subnet 2
├─ Private Route Table 1
└─ Private Route Table 2

プライベートサブネットからのインターネットアクセスはまだ構成されていません。

構成図

CloudFormation実行前

名称未設定ファイルのコピーのコピー.drawio.png

CloudFormation実行後

名称未設定ファイルのコピー.drawio.png

Regional NAT Gatewayを利用することで、

  • AZごとのEIP管理
  • AZカバレッジ管理

をAWSへ任せることができます。

Regional NAT Gatewayとは

従来のNAT Gatewayでは、

AZ-A → NAT Gateway-A
AZ-B → NAT Gateway-B

のようにAZごとにNAT Gatewayを作成する必要がありました。

一方、Regional NAT Gatewayでは、

VPC
 └─ Regional NAT Gateway

として構成でき、AWSが内部的にAZカバレッジを管理します。

また、コンソールで表示される

Elastic IP (EIP) 割り当て方法

○ 自動

に相当する構成となります。

注意事項

本テンプレートは既存のRoute Tableへ

0.0.0.0/0 → Regional NAT Gateway

を追加します。

そのため、既に

0.0.0.0/0

のルートが存在する場合は作成に失敗します。

事前にRoute Tableを確認してください。

CloudFormationテンプレート

AWSTemplateFormatVersion: '2010-09-09'

Description: Temporary Regional NAT Gateway for existing private route tables

###############################################################################
# Parameters
###############################################################################

Parameters:

  VpcId:
    Type: AWS::EC2::VPC::Id
    Description: Target VPC

  PrivateRouteTable1Id:
    Type: String
    Description: Existing private route table ID 1
    Default: rtb-xxxxxxxxxxxxxxxxx

  PrivateRouteTable2Id:
    Type: String
    Description: Existing private route table ID 2
    Default: rtb-xxxxxxxxxxxxxxxxx

###############################################################################
# Resources
###############################################################################

Resources:

  ###########################################################################
  # Regional NAT Gateway
  ###########################################################################
  RegionalNatGateway:
    Type: AWS::EC2::NatGateway
    Properties:
      ConnectivityType: public
      AvailabilityMode: regional
      VpcId: !Ref VpcId
      Tags:
        - Key: Name
          Value: temporary-regional-nat-gateway

  ###########################################################################
  # Route Table 1
  ###########################################################################
  PrivateDefaultRoute1:
    Type: AWS::EC2::Route
    DependsOn:
      - RegionalNatGateway
    Properties:
      RouteTableId: !Ref PrivateRouteTable1Id
      DestinationCidrBlock: 0.0.0.0/0
      NatGatewayId: !Ref RegionalNatGateway

  ###########################################################################
  # Route Table 2
  ###########################################################################
  PrivateDefaultRoute2:
    Type: AWS::EC2::Route
    DependsOn:
      - RegionalNatGateway
    Properties:
      RouteTableId: !Ref PrivateRouteTable2Id
      DestinationCidrBlock: 0.0.0.0/0
      NatGatewayId: !Ref RegionalNatGateway

###############################################################################
# Outputs
###############################################################################

Outputs:

  NatGatewayId:
    Description: Regional NAT Gateway ID
    Value: !Ref RegionalNatGateway

スタック作成

CloudFormationコンソールから

CloudFormation
 ↓
スタックの作成
 ↓
新しいリソースを使用

を選択します。

パラメータには以下を入力します。

パラメータ
VpcId vpc-0123456789abcdef0
PrivateRouteTable1Id rtb-0123456789abcdef0
PrivateRouteTable2Id rtb-abcdef0123456789

作成完了まで数分程度です。

スタック削除

作業終了後はスタックを削除します。

CloudFormation
 ↓
対象スタック
 ↓
削除

CloudFormationが自動的に

  1. Route削除
  2. NAT Gateway削除

を実施します。

削除完了後はNAT Gatewayの時間課金も停止します。

NATインスタンスという選択肢もある

NAT Gateway以外に、EC2を利用したNATインスタンスという方法もあります。

Internet
    |
   IGW
    |
 NAT Instance
    |
 Private Subnet

メリット

  • 小さいEC2で構築可能
  • 利用量が少ない場合は安価
  • インスタンス停止で課金停止可能

デメリット

  • OS管理が必要
  • パッチ適用が必要
  • 冗長化を自分で設計する必要がある
  • 障害対応も自分で行う必要がある

本番環境ではNAT Gatewayが一般的ですが、個人環境や小規模環境ではNATインスタンスも十分選択肢になります。

まとめ

開発環境や検証環境では、NAT Gatewayを常時起動しておく必要がないケースも少なくありません。

CloudFormation化しておけば、

  • 数クリックで作成
  • 数クリックで削除
  • Git管理可能
  • 再利用可能

となり、必要な時だけNAT Gatewayを利用できます。

特にRegional NAT Gatewayを利用すると、AZやEIPの管理をAWSへ任せられるため、よりシンプルな構成で運用できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?