ヤマムギ

growing hard days.

*

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

      2025/01/06

このブログの構成からパブリックIPv4を減らすように設計変更しています。
もともとこのブログのEC2インスタンスはインターネットゲートウェイへのルートがあるパブリックサブネットで起動していました。
CloudWatch Logsへログを送信することが主な目的でした。
CloudWatch LogsがIPv6をサポートしたため、EC2インスタンスのパブリックIPv4アドレスを削減しようと思います。

ターミナルへの接続はEC2 Instance Connect エンドポイントを使用しています。
EC2 Instance Connect エンドポイントの作成

CloudWatch LogsのAPIエンドポイント

東京のCloudWatch LogsにもAPIエンドポイントが増えていましたので、Macからdigコマンドでそれぞれ確認してみました。
Amazon CloudWatch Logs エンドポイントとクォータ

;; ANSWER SECTION:
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:210:9706:687e:1716:7535
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:210:e87e:9810:3cf7:de8d
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:210:b80b:2ce5:ece0:295d
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:200:3b20:8259:a92b:33bb
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:200:6ec8:ce1f:7430:a52e
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:230:fb38:7f6a:b5e7:99
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:200:91ee:998e:ee66:9eaf
logs.ap-northeast-1.api.aws. 20 IN AAAA 2406:da70:4000:230:29b2:751d:268c:4826

IPv6アドレスが確認できました。

既存のAPIエンドポイントではANSWER SECTIONが返ってこなかったので、こちらはIPv6対応ではないようです。

VPCの構成

  • IPv6が有効
  • パブリックサブネットにもIPv6を設定し、Egress Only Internet Gatewayをアタッチ。
  • EC2インスタンスにもIPv6を有効化。
  • EC2インスタンスのサブネットに関連づいているルートテーブルにはEgress Only Internet Gatewayへのルートがある。

ルートテーブルからインターネットゲートウェイへのルートを削除

このブログのWebサーバーを起動していたサブネットのルートテーブルからインターネットゲートウェイへのルートを削除しました。
ローカルとS3 VPCゲートウェイエンドポイントとEgress Only Internet Gatewayへのルートが残っています。

EC2 Instance Connect エンドポイントで接続して、curlコマンドで確認してみます。
このブログはCloudFrontでIPv6も有効にしています。

IPv6アドレスで接続できるか確認してみます。

HTTP/2 200
content-type: text/html; charset=UTF-8
date: Sun, 05 Jan 2025 12:20:15 GMT
set-cookie: AWSALB=nURfAfYibXPTzTZDN0qOhbYRS9RZjRYk21/dHdC7TxXnlBOP9Z5hLZaGnNSu85Su4l9pGKTzWXa+/oSJKz7bjsSrTG78AgsTDGkwjKqhq5wDx6qMMJ0H163fTdft; Expires=Sun, 12 Jan 2025 12:20:15 GMT; Path=/
set-cookie: AWSALBCORS=nURfAfYibXPTzTZDN0qOhbYRS9RZjRYk21/dHdC7TxXnlBOP9Z5hLZaGnNSu85Su4l9pGKTzWXa+/oSJKz7bjsSrTG78AgsTDGkwjKqhq5wDx6qMMJ0H163fTdft; Expires=Sun, 12 Jan 2025 12:20:15 GMT; Path=/; SameSite=None; Secure
server: nginx/1.24.0
x-powered-by: PHP/8.2.9
link: https://www.yamamanx.com/wp-json/; rel=”https://api.w.org/”
x-cache: Hit from cloudfront
via: 1.1 4fd04861f340431c4c752882593032f0.cloudfront.net (CloudFront)
x-amz-cf-pop: NRT57-P6
x-amz-cf-id: YsR6nBK4kXKiTpw-t3iUuOyoxzaay7YAnAEqCBdUgUOHsOYTkHu2_A==
age: 1312

IPv6アドレスで接続確認できました。

一応IPv4アドレスでも接続できるか確認してみます。

curl: (28) Failed to connect to www.yamamanx.com port 443 after 300226 ms: Timeout was reached

タイムアウトしました。
IPv6のみアウトバウンドリクエストが実行できていることがわかりました。

CloudWatchエージェントの確認

CloudWatchエージェントのログを確認してみます。

Aws error received when sending logs to nginx-access/i-04c5fb17fbe602c9a: RequestError: send request failed
caused by: Post “https://logs.ap-northeast-1.amazonaws.com/”: dial tcp 18.181.204.209:443: i/o timeout

CloudWatch LogsのAPIエンドポイントへ接続できずにタイムアウトしています。

CloudWatchエージェント自体が古いのでバージョンを確認しておきます。

1.300026.3b189

でした。

CloudWatchエージェントのバージョンアップ

最新のエージェントにバージョンアップします。

状態を確認します。

{
“status”: “running”,
“starttime”: “2024-05-05T06:09:26+00:00”,
“configstatus”: “configured”,
“version”: “1.300026.3b189”
}

CloudWatchエージェントを停止します。

****** processing amazon-cloudwatch-agent ******

状態を確認します。

{
“status”: “stopped”,
“starttime”: “”,
“configstatus”: “configured”,
“version”: “1.300026.3b189”
}

止まりました。

既存のCloudWatchエージェントをアンインストールしました。

~省略~
Removed:
amazon-cloudwatch-agent-1.300026.3b189-1.aarch64

Complete!

完了しました。

アップグレードもしておきます。

エージェントを改めてインストールします。

~省略~
Installed:
amazon-cloudwatch-agent-1.300044.0-1.amzn2023.aarch64

Complete!

完了しました。

状態とバージョンを確認します。

{
“status”: “stopped”,
“starttime”: “”,
“configstatus”: “configured”,
“version”: “1.300044.0”
}

1.300044.0になりました。

CloudWatchエージェントの設定

手動で設定ファイルを作成しました
endpoint_overrideでIPv6対応のCloudWatch Logs APIエンドポイントへ送信するようにしています。
ここの設定をするだけで、CloudWatchエージェントのバージョンは気にしなくてよかったかもしれません。

amazon-cloudwatch-agent.json

設定ファイルを反映してCloudWatchエージェントを起動します。

CloudWatch Logsにログが書き込まれていました。

この後、AMIを作成し直して、起動テンプレートのバージョンを作成して、パブリックIPv4の割当を無効化して、EC2インスタンスを置き換えました。
サブネットの設定でもパブリックIPv4の自動デフォルト有効化を無効にしておきました。
これでEC2インスタンスをプライベートサブネットにでき、パブリックIPv4を減らせました。


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

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

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

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

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

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

 - AWS , ,

ad

ad

  関連記事

Active Directory認証でAWSマネジメントコンソールにSSO

こちらの2つのサイトを参考にすすめました。 Active Directory資産 …

AWS Glueチュートリアル

AWS Glueのマネジメントコンソールの左ペインの一番下にチュートリアルがあり …

VPC内のLambdaからVPCエンドポイント経由でSecrets Managerを使う

InternetGatewayのないVPCでMySQLに対して一日数回のレポーテ …

Amazon Connectの新規作成からプッシュボタン入力と発信元電話番号をLambdaで処理するまで

とりあえずやりたいことはタイトルに書いたとおり、「電話をかけて、プッシュボタンに …

Amazon CloudWatch Anomaly Detectionをダッシュボードに設定

Amazon CloudWatch クロスリージョンクロスアカウントダッシュボー …

VPCピア接続した先のVPCインターフェイスエンドポイントを使用する

VPC1とVPC2でピア接続しています。 VPC2にはKMSのインターフェイスエ …

Route 53のホストゾーンにサブドメインを登録する

親ドメインを移行しないでサブドメインの DNS サービスを Amazon Rou …

Amazon Aurora Serverlessを使い始めてみました(1日経過しての課金結果も)

祝!!! Amazon Aurora ServerlessがGAになりました! …

macOSにAWS Schema Conversion Toolをインストール

環境 macOS BigSur バージョン11.5(20G71) MacBook …

Amazon API Gatewayでモックを作る

超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …