【初心者】AWS Privatelink クロスリージョン接続を使ってみる

# 1. はじめに
- 2024/11に、Privatelinkのクロスリージョン接続が可能になったとのこと。実業務でも使えそうなため、基本動作を確認する。
 
https://aws.amazon.com/jp/about-aws/whats-new/2024/11/aws-privatelink-across-region-connectivity/

# 2. 予習
- いくつか関連記事を見て、以下のように理解した。
    - すごくざっくり言って、Privatelinkは、自分のVPCからInternetに出ずに、(a)S3などのAWSサービス、(b)datadogなどのSaaS、(c) NLBなどを用いてユーザが作成したエンドポイントサービス　の3つのどれかに接続することができる。
    - 2024/11の本機能のリリース時点で、クロスリージョン接続可能なのは(b)と(c)。
- 業務で使いたいのは(c)なので、(c)の構成を検証する。

https://dev.classmethod.jp/articles/aws-privatelink-across-region-connectivity/

https://iret.media/130754

# 3. やったこと
- 東京リージョンにVPC、サブネット、EC2インスタンス(curlクライアント)を作成する。
- 大阪リージョンにVPC、サブネット、Internal NLB,EC2インスタンス(nginx)を作成し、NLBのターゲットグループにnginxを登録する。
- 大阪リージョンのVPCにエンドポイントサービスを作成し、<font color="Red">公開対象リージョンとして東京を追加する。</font>
- 東京リージョンのVPCにインターフェースエンドポイントを作成し、<font color="Red">接続先として大阪リージョンのエンドポイントサービスを指定する。</font>
- 東京リージョンのcurlクライアントから大阪リージョンのnginxまで接続できることを確認する。

# 4. 構成図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/f5e298f3-cb11-48dc-9a9e-a8a55597c613.png)

# 5. 手順
## 5.1 事前準備
- 東京リージョンにVPC1, サブネット, EC2インスタンス(Amazon Linux 2023)を作成する。
- 大阪リージョンにVPC2, サブネット, EC2インスタンス(Amazon Linux 2023にnginxをインストール)を作成する。
- 大阪リージョンのサブネットにInternal NLBを作成し、nginxのEC2インスタンスを含むターゲットグループを設定する。

## 5.2 エンドポイントサービスの作成(大阪リージョン)

- VPC > エンドポイントサービス -> エンドポイントサービスを作成　を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/1150d400-da59-43f9-8aeb-058dbec9338f.png)

- 作成済のInternal NLBを選択する。
- 「サポートされているリージョン」は最初空白となっているので、このエンドポイントサービスにアクセスさせたい他のリージョンを追加する。（今回は東京リージョンを追加）
- 他はデフォルトの値とする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/b79e59d6-a36a-41bf-a419-c0d2ca972d72.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/030e606c-50ed-44f0-bc6b-faa46ba89c58.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/c821ebcb-07cc-4dd0-91ca-966ac158b594.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/d83b015e-9cb8-4453-b390-9a90af2a6bdf.png)

- 作成が完了したら、サービス名「com.amazonaws.vpce.ap-northeast-3.vpce-svc-123456789012345」をメモする。

- このエンドポイントサービスは大阪リージョン(自リージョン)と、東京リージョン(追加指定)のインタフェースエンドポイントから接続可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/7a2e9fd0-88d2-4d26-874b-02cd2184d8b7.png)


## 5.3 インタフェースエンドポイントの作成(東京リージョン)

- VPC > エンドポイント > エンドポイントを作成　を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/ecba0403-bb44-4b44-a6e9-0aa5dbf1a9e6.png)

- タイプは「NLBとGWLBを使用するエンドポイントサービス」を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/c04e34f2-a85e-496a-a79c-9cfc7c2f5c49.png)

- 前項で作成した大阪のエンドポイントサービス名を入力し、「クロスリージョンエンドポイントを有効にする」をチェックして、大阪リージョンを選択したうえで、「サービスの検証」を行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/e80d4b66-e423-445e-8e73-38cf2fad8132.png)

- VPC, Subnet, SecurityGroupを選択してインタフェースエンドポイントを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/c33b072e-a6c4-4c22-b81a-5d842ef1cef6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/fbeff6fb-b472-40c4-91e0-c6b023e793f5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/bb600d96-109b-4c78-908a-7af91c5e769e.png)

## 5.4 リクエストの承諾(大阪リージョン)

- エンドポイントサービス側でリクエストを承諾する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/eb0c0a2c-6890-423b-b15f-ea8ba436e6d7.png)

## 5.5 接続確認

- 東京リージョンのEC2インスタンスから、作成したインターフェイスエンドポイント経由でcurlできることを確認。

```
[ec2-user@ip-10-0-2-65 ~]$ curl vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx.vpce-svc-xxxxxxxxxxxxxxxxx.ap-northeast-3.vpce.amazonaws.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
```

# 6. ユースケース

- 業務上のシステムで以下の構成のものがある。
    - 自システム(Consumer)は東京リージョン/大阪リージョンの両ACT構成
    - 対向システム(Provider)は東京リージョンのみ
    - 東京リージョン内では、自システムから対向システムへPrivatelink接続
    - 自システム(大阪リージョン)は、peeringを用いて、自システム(東京リージョン)を経由して東京リージョン内のPrivatelinkを利用して接続
- 次作り直すときは、自システム(大阪リージョン)から、対向システムの東京リージョンに対してクロスリージョン接続してもよいかも。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/5df97ad7-0801-447c-b7ba-e6aa00aebc68.png)

# 7. 所感
- エンドポイントサービス側の設定で、接続を可能とするリージョンを個別に設定しておくこと以外は、これまでのリージョン内Privatelinkの設定と大差なく、普通に使って行けそうな気がした（料金の違いはあるが、、）。