ヤマムギ

growing hard days.

*

このブログからパブリックIPv4 IPアドレスをなくしてコスト最適化

   

2024年2月より使用中のパブリックIPv4アドレスに1時間あたり0.005USDが請求されるようになりました。
パブリックIPv4をどこまでなくせるかもコスト最適化につながります。
AWSの各サービスもIPv6に対応しつつありますし、プライベートEC2 Instance ConnectやCloudFrontのVPCオリジンなどの機能も揃いつつあるので、このブログのパブリックIPv4をなるべくなくしてみます。

現在の構成とパブリックIPv4の必要性

現在のこのブログの構成です。
使用しているパブリックIPv4アドレスは最低4つで、最低2つがApplication Load Balancer、最低2つがEC2インスタンスで使用されています。
最低2つと書いているのは、リクエスト量によって増える可能性があるためです。

だいたい4つのパブリックIPv4アドレスで月額15USD弱かかってます。
これを削減してみます。

Application Load Balancerの方針

Application Load BalancerはCloudFrontのVPCオリジンを使ってプライベートサブネットでパブリックIPv4なしで再構築します。

EC2インスタンスの方針

現在EC2インスタンスがパブリックサブネットにあってパブリックIPv4アドレスを設定している理由を書き出してみます。
S3への画像アップロードはすでにS3 VPCゲートウェイエンドポイントを使用しています。
* CloudWatch Logsへのログ書き込み
* CloudWatchカスタムメトリクスの送信
* Systems Managerセッションマネージャー使用
* WordPressとプラグイン更新時にwordpress.orgへのアクセス

このうち2025年1月現在でIPv6に対応しているのはCloudWatch Logsのみですので、カスタムメトリクスとセッションマネージャーは代替を考えなければいけません。
カスタムメトリクスはメモリ使用量のみモニタリングしているので、メモリ使用量のモニタリングを一時的にやめることにします。
セッションマネージャーの代替にEC2インスタンスコネクトを使用することにします。
wordpress.orgへのアクセスは更新時のみですので、メンテナンス用のEC2インスタンスのみ一時的にパブリックサブネットで起動することにします。

EC2 Instance Connect エンドポイントの作成

EC2 Instance Connect エンドポイントの作成

セッションマネージャーの代替でEC2 Instance Connect エンドポイントを使用できるようにしました。

CloudWatch LogsをIPv6アドレスを使用して送信する

CloudWatch LogsをIPv6アドレスを使用して送信する

EC2インスタンスのパブリックIPv4アドレスを無効にするために、CloudWatch Logsへの送信をIPv6エンドポイントに変更しました。

VPCオリジンを使用してApplication Load Balancerを内部ロードバランサーにする

CloudFrontのVPCオリジンを使用してApplication Load Balancerをプライベートサブネットで起動する

VPCオリジンを使用して、内部ロードバランサーを構築して以前のパブリックサブネットのApplication Load Balancerから移行しました。

最終構成

以上で請求対象のパブリックIPv4をこのブログから削減できました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , , , , ,

ad

ad

  関連記事

「JAWS-UG in AWS Cloud Roadshow 2017 大阪」で運営をしました

AWS Cloud Roadshow 2017 大阪のナイトイベントで、「JAW …

Amazon Connectから問い合わせ追跡レコード(CTR)をエクスポート

Amazon Connectから発信した電話に出たのか、出なかったのかを確認した …

再会の日 ~re:Union 2018 Osaka by JAWS-UG~

8/5は大阪でre:Unionでした。 「再会」と名うったこのイベントは、6月に …

ブログ画像のシンガポールリージョンへのレプリケーションはじめました

このブログの画像はS3バケットに保存して、CloudFront経由で配信していま …

Apple Silicon M1 MacBook ProにAWS CLI v2をインストール

公式手順どおりにインストールしました。 macOS での AWS CLI バージ …

ALBのヘルスチェックでPHPとMySQL接続をチェック

当ブログで504エラーが発生して、オートスケーリングにより自動でインスタンスが置 …

S3バケットのリクエスタ支払い

S3バケットのリクエスタ支払いを試しました。 バケットの設定 検証用のS3バケッ …

VPC環境でLambdaを100同時実行してプライベートIPアドレスを確認した

2019年9月発表のLambda 関数が VPC 環境で改善されます以降に、VP …

slackのbotをAWS Lambda(Python)+API Gatewayで構築

slackで投稿した内容に応じて返信したり調べ物したりしてくれるbotですが、こ …

WordPress W3 Total Cache のDatabaseCacheをAmazon ElastiCacheのmemcachedに格納する

このブログのアーキテクチャは現在こちらです。 データベースは、Amazon Au …