Amazon QuickからクロスアカウントAuroraへ接続してみた

こんにちは、まつほです。

前回、Amazon Quickでコスト分析をしてみる記事をアップしました。
しかし、どうせなら都度CSVを取得するのではなく、Auroraに蓄積したコストデータを使って分析したい!

というわけで今回は、Amazon QuickからAuroraをデータソースとしてコストデータを取り込んでみます。

同じアカウントにあるAuroraへ接続するだけならそれほど難しくありませんが、今回はクロスアカウント構成にする必要があり、いくつかひっかかりポイントがあったので、その記録です。

 

最終的にやりたいこと

最終的にやりたいのは前回と同様、AIを活用したコスト分析をはじめとするFinOps活動です。
AWSのコスト情報をAmazon Quickに取り込む方法はいくつかありますが、より高度な分析を行うには、継続的に蓄積されたデータを利用できる環境が必要です。

そこで、以下のような流れでAWSのコスト情報をFinOps活動につなげていきます。

AWSコスト情報 → Aurora → Amazon Quick → ダッシュボード/前月差異分析 → AI → 増減要因分析/無駄の発見/レポート生成

今回の記事で扱うのは、上記のうち、Aurora → Amazon Quickの導線を作る部分です。

 

今回検証する構成について

今回検証する構成は以下のとおりです。

今回は、AWS PrivateLink/VPC Latticeのリソースゲートウェイ(Resource Gateway)を利用して、クロスアカウント構成のAuroraへの接続を検証します。

接続方式の比較や選定については、弊社の間世田が以下の記事で紹介しています。気になる方はこちらもご覧ください。

AWSネットワークにおけるSaaSへの接続方式まとめ 〜PrivateLink編〜
https://blog.usize-tech.com/saas-network-privatelink/

 

Amazon QuickからAuroraへ接続してみる

それでは、実際にAmazon QuickからクロスアカウントのAuroraへ接続していきます。

今回は、以下の順番で進めていきます。

  1. Aurora側アカウントの設定
  2. Quick側アカウントの設定
  3. Amazon Quickの設定

 

1. Aurora側アカウントの設定

まず、Auroraが存在するアカウント側で必要なリソースを作成していきます。

1-1. リソースゲートウェイ

リソースゲートウェイを作成します。

Auroraを配置しているVPCとサブネットを指定します。

 

1-2. リソース設定

続いてリソース設定を作成します。
当初はAuroraのリソースARNを使用してリソース設定を作成しましたが、リソースエンドポイント側に複数のDNS名が作成され、Quickのデータソース設定ではそのうち1つを指定する形になりました。

今回はQuickから利用する接続先を1つにしたかったため、設定タイプを「単一(Single)」とし、AuroraクラスターのDNS名を指定します。また、先ほど作成したリソースゲートウェイを紐づけます。

 

 

1-3. Resource Access Managerでリソースを共有

Resource Access Manager(RAM)からリソース共有を作成します。

「プリンシパルにアクセス権限を付与する」で、接続元となるQuick側のAWSアカウントIDを指定します。

 

1-4. セキュリティグループ

続いて必要なセキュリティグループを設定します。

■リソースゲートウェイ用SG

  ポート ソース/送信先
インバウンド(設定なし) ‐ ‐
アウトバウンド TCP/3306 Aurora用SG

■Aurora用SG

既存のAurora用SGに以下のルールを追加します。

  ポート ソース/送信先
インバウンド TCP/3306 リソースゲートウェイ用SG
アウトバウンド(設定なし) ‐ ‐

 

2. Quick側アカウントの設定

続いてAmazon Quickを利用するAWSアカウント側の設定を行います。

 

2-1. VPC・サブネット・ルートテーブル

エンドポイントを配置するVPC、サブネット、ルートテーブルを用意します。

既存のVPC内にエンドポイントを作成する場合は、新規作成は不要です。

 

2-2. セキュリティグループ

Quick側アカウントでは、リソースエンドポイント用とAmazon Quick用のセキュリティグループを設定します。

■リソースエンドポイント用SG

  ポート ソース/送信先
インバウンド TCP/3306 Amazon Quick用SG
アウトバウンド TCP/3306 0.0.0.0/0

■Amazon Quick用SG

  ポート ソース/送信先
インバウンド(設定なし) ‐ ‐
アウトバウンド(設定なし) TCP/3306 リソースエンドポイント用SG

 

2-3. エンドポイント

VPCエンドポイントを作成します。

タイプとして「リソース」を選択し、Aurora側アカウントから共有されたリソース設定IDを選択します。

セキュリティグループには、先ほど作成したリソースエンドポイント用SGを指定します。

 

 

2-4. IAMロール

Amazon QuickからVPC内のリソースへアクセスするためのIAMロールを作成します。

 

3. Amazon Quickの設定

AWS側の準備ができたら、Amazon Quickから接続設定を行います。

 

3-1. VPC接続

Amazon QuickでVPC接続を作成します。

Quick側アカウントで用意した以下のリソースを指定します。

  • VPC
  • IAMロール
  • サブネット
  • セキュリティグループ

 

3-2. Auroraをデータソースとして登録

最後にデータソースを作成します。

データソースとして「Amazon Aurora」を選択し、接続情報を設定します。

接続タイプには、先ほど作成したVPC接続を指定します。

そして重要なのがデータベースサーバーです。

ここにはAuroraのエンドポイントではなく、Quick側アカウントに作成したリソースエンドポイント(Resource Endpoint)のDNS名を指定します。

 

実際にハマったポイント

実際に構築する中で、以下の2点にハマりました。

1. AuroraのDNS名を指定してもつながらない

一番ハマったのがここです。

最初は「Auroraに接続するのだからAuroraクラスターのDNS名を指定すればよいだろう」と考え、Amazon QuickのデータソースにAuroraのDNS名を設定していました。

しかし、何度試しても接続できません。

今回の構成ではリソースエンドポイントを経由してAuroraへアクセスするため、指定するのはAuroraのDNS名ではなく、リソースエンドポイントの関連付けDNS名でした。

DNS名を変更したところ、無事に接続できました。

 

 

2. セキュリティグループは役割ごとに分ける

当初は同じセキュリティグループを複数のリソースで使用していましたが、今回の構成では期待した通信ができませんでした。

そこで、セキュリティグループを以下のように役割ごとに分割しました。

  • Amazon Quick用SG
  • リソースエンドポイント用SG
  • リソースゲートウェイ用SG
  • Aurora用SG

それぞれのSG間で必要なTCP 3306の通信を許可する構成に変更することで、正常に接続できました。

 

接続結果

無事に別アカウントのAuroraをデータソースとして登録できました。

※キャプチャだけではクロスアカウント感が伝わりませんが、別アカウントにあるAuroraのデータを参照しています。

 

データ接続からAI分析へ

これでようやく、Amazon QuickからクロスアカウントのAuroraに蓄積したデータを参照できるようになりました。

とはいえ、今回やりたかったのはAuroraにつなぐこと自体ではありません。
ここから、コストデータの蓄積 → 可視化・前月差異分析 → AIによる増減要因分析・無駄の発見・レポート生成へと発展させていくのが本来の目的です。

今回は、そのために必要なデータ接続部分まで検証できました。

 

まとめ

いかがでしたでしょうか。

今回は、AIを活用したFinOps分析基盤の構築に向けて、Amazon Quickからクロスアカウントに配置されたAuroraへの接続を検証しました。

まだデータを参照できるようになった段階ですが、今後はコストデータの可視化や前月差異分析、さらにAIを活用した増減要因分析や無駄の発見、コストレポートの作成などに発展させていく予定です。

×
タイトルとURLをコピーしました