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?

閉域アクセスでのS3、APIGWのカスタムドメイン利用

Posted at

はじめに

DirectConnectやVPNなど閉域利用でAPIGatewayやS3の静的コンテンツ公開機能、署名付きURLを使いたいケースはよくあることです。今回はそういったケースでどのような設計が可能かを解説していきます。

想定する構成

スクリーンショット 2025-01-11 20.52.56.png
まずはインターネット公開のケースで考えてみます。よくあるフロントエンドとバックエンドAPの構成です。
この場合、Route53により、CloudFront、APIGatewayをカスタムドメインで名前解決し、対象のFQDNのIPアドレスに接続をすることで、AWSのリソースにアクセスできます。実際には、各AWSリソースに対してエイリアスレコードを定義することで、カスタムドメインが利用できます。また、各リソースにHTTPSで接続する場合は、ACMに証明書を登録し、各リソースにアタッチすることで、カスタムドメインを利用したHTTPS接続が可能です。

閉域での構成

スクリーンショット 2025-01-11 20.53.02.png
このような構成になります。
まず、S3に関しては、ALBを利用します。インターナルALBを作成し、カスタムドメインの証明書をACMにインポートし、ALBにアタッチします。また、ターゲットとして、S3VPCエンドポイントのインターフェイスタイプのIPアドレスを指定します。なお、マルチAZ構成の場合は、AZ毎にエンドポイントを作成、指定しましょう。ALBに対して、Route53などのDNSにより、ALIASレコード、またはCNAMEレコードによりカスタムドメインの名前解決を設定します。S3はACMで発行する証明書で指定したカスタムドメインと同じバケット名とします。これにより、S3に対してRESTAPIによる接続が可能となります。

次にAPIGatewayを考えてみましょう。
APIGatewayについてもS3同様ALBとVPCエンドポイントを利用した構成が一般的でしたが、最近、カスタムドメインに対応しました。これにより、閉域構成でも、VPCエンドポイントへの接続でカスタムドメインを利用できます。APIGatewayでプライベートAPIを作成、カスタムドメインを登録します。カスタムドメインの登録には、ACMでインポートした証明書の紐づけが必要です。カスタムドメインをマッピングし、VPCエンドポイントと紐づけます。これにより、VPCエンドポイントに接続した際にカスタムドメインが利用可能になります。Route53などのDNSにより、ALIASレコード、またはCNAMEレコードによりカスタムドメインの名前解決を設定することで、クライアントからの接続が可能になります。

まとめ

本記事では、DirectConnectやVPNなどの閉域環境において、AWSのAPIGatewayやS3の静的コンテンツ公開機能をカスタムドメインで利用する方法について解説しました。
上記構成を取ることで以下のメリットがあります。

  • EC2プロキシサーバが不要
    従来の閉域環境では、EC2上にプロキシサーバを配置する必要がありましたが、今回の構成では不要となります。これにより、運用負担やコストを削減できます。

  • 効率的でシンプルなアーキテクチャ
    VPCエンドポイントやALBを活用することで、よりシンプルかつ安全な閉域ネットワーク設計が可能です。

これらの設計を活用することで、閉域環境においてもインターネット接続同様効率的に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?