Amazon ElastiCacheにワンクリックで接続できるようになりました！

# 2行で
* EC2とElastiCache間の接続に必要な設定が1クリックでできるようになった
* CloudShell経由で簡単にElastiCache接続ができるようになった

# 概要
先日、「Amazon ElastiCache now supports 1-click connectivity setup between EC2 and your cache」というタイトルで、ElastiCacheにアップデートがありました。

これまでElastiCacheに接続し動作等を確認するためには、「確認用のEC2を立てる→SSHやSession Manager等でEC2に接続→redis-cli等をインストールする→ElastiCache接続」というステップを踏む必要がありました。もちろん、セキュリティグループの設定も必要であるため、単なる動作確認のために結構な手間がかかります。

今回のアップデートにより、EC2とElastiCacheの接続に必要な設定、およびCloudShellからの接続が1クリックでできるようになりました。

https://aws.amazon.com/about-aws/whats-new/2025/01/amazon-elasticache-1-click-connectivity-setup-ec2-cache/

# 試してみる
まずElastiCacheクラスタを用意します。今回はValkeyキャッシュをサーバーレスで用意しました。

## VPCの作成
特別な設定はせず、プライベートサブネットが2つあるVPCを作成します。
![スクリーンショット 2025-01-25 14.34.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/b1d98f27-cd42-2910-73b6-e55131235db4.png)

:::note info
ElastiCache作成時、AZが2つ以上必要になります
:::

## Valkeyキャッシュの作成
キャッシュ作成画面で、デフォルト設定をカスタマイズし、先ほど作成したVPCのプライベートサブネット内で作成します。
![スクリーンショット 2025-01-25 14.35.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/71ce04f3-0f4d-0377-aba0-b9fa949ebeea.png)
![スクリーンショット 2025-01-25 14.36.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/6e37ae8a-d8a3-a1e2-8dac-63077e1d6083.png)

しばらくすると、ステータスが「Available」になります。

## 接続(EC2編）
まずはEC2の動作を見ていきます。

作成したキャッシュの「接続とセキュリティ」タブから「コンピューティング環境をセットアップ」を押下します。
![スクリーンショット 2025-01-25 14.43.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/22f87af7-9a0f-5884-3da8-9850f1d1a2d6.png)

「EC2インスタンスを作成」から新規にEC2を作成します。
![スクリーンショット 2025-01-25 14.50.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/5ad4200f-89d3-3fb3-082d-ebefe4dcfdd2.png)

特別な設定は不要で、SSH接続ができるようにしておきます。![スクリーンショット 2025-01-25 14.52.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/79865e0a-4186-8e69-a558-1ca61e9ac4b1.png)
![スクリーンショット 2025-01-25 14.52.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/7a2adea4-7c20-7012-c567-328546414503.png)


EC2作成後、Valkeyの画面に戻ると作成したEC2が選択できるようになっていますので選択します。すると、新規にセキュリティグループが作成されそうであることがわかります。
（ElastiCacheのセキュリティグループにdefault以外の設定がありますが、本来作成したてであればdefaultのみとなっています）
![スクリーンショット 2025-01-25 14.53.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/c2bc25b3-3ed1-35d7-5404-34db0b0786e0.png)

セットアップが完了すると、EC2およびElastiCache間で必要なセキュリティグループが自動で設定されます。
![スクリーンショット 2025-01-25 14.56.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/b47e6b07-7ea6-640b-5bbb-3783f686a749.png)
![スクリーンショット 2025-01-25 14.57.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/2e9bf7a1-6a54-350d-c876-0868faaeff0f.png)

実際に自動で実行された内容は下記のとおりです。
![スクリーンショット 2025-01-25 15.02.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/6863ef43-dc7c-9f63-9f02-777335677870.png)

ただ、内容を見る限り、**EC2にredisクライアントがインストールされないので、redis-cli等は手動でインストールする必要がありそうです。** あくまで接続に必要なセキュリティグループが自動で設定されています。

## 接続（CloudShell経由）
続いてはCloudShellを使用した接続です。こちらはかなりシンプルです。

「接続とセキュリティ」タブから「キャッシュに接続」を確認すると、画面右に「キャッシュに接続」というボタンがあります。
![スクリーンショット 2025-01-25 14.39.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/58ba6228-216a-97ea-f72b-14d93279af7f.png)

こちらを押すと、新規にCloudShellの環境構築画面が出てきますので、任意の環境名を入力し作成します。
![スクリーンショット 2025-01-25 14.40.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/5e05ec8e-434f-d1b0-81e3-cf4ed25f352d.png)

作成完了後、即キャッシュに接続し、任意のRedisコマンドが叩けるようになりました。
![スクリーンショット 2025-01-25 14.41.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/46a06d4a-5003-3f28-a337-a2876a3c3025.png)
![スクリーンショット 2025-01-25 14.42.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/0a151381-58ea-0a3a-7db6-ceed037968bf.png)

# まとめ
タイトルにはEC2との接続が1クリックで、とありましたが実際には本文中に記載があるCloudShellの1クリック接続が非常に強力だと感じました。プライベートサブネットに作成したElastiCacheであっても問題ない点も良かったです。アプリケーションでElastiCacheを利用する場合、簡単な動作確認に大きく役立つアップデートだと思います。

# 参考

https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/compute-connection.html