🐚

CloudShell を VPC で使ってみた!

2024/07/02に公開

はじめに

2024/06/26 に CloudShell が VPC をサポートするようになったので使ってみます!

https://aws.amazon.com/jp/about-aws/whats-new/2024/06/aws-cloudshell-amazon-virtual-private-cloud/

VPC サポートのメリット

VPC をサポートするということは、より CloudShell をセキュアに利用できるということです!具体的には以下のネットワーク制御が効くようになります。

  • ルートテーブル
  • セキュリティグループ
  • ネットワーク ACL
  • AWS Network Firewall
  • その他 ネットワークセキュリティ製品

起動方法

CloudShell を開き、右上の「アクション」から「Create VPC environment (max 2)」をクリック。名前・VPC・サブネット・セキュリティグループを入力し「Create」から起動します。

image
image

本当に VPC 内で起動できているのでしょうか?ENI を確認したところ、指定したサブネットで起動していることがわかりました!

image
image
image

運用上の制約

パブリックサブネットで動作確認をしたところ、AWS の API コールもインターネットへの接続もできません。

image

公式ページを読むと以下の制約を発見。

AWS CloudShell 環境は、プライベート VPC サブネット内にある場合にのみインターネットに接続できます。

https://docs.aws.amazon.com/cloudshell/latest/userguide/using-cshell-in-vpc.html

詳細はリンク先を確認ください。他にも制約があるので、簡単にまとめておきます。

  • VPC 環境は最大 2 つ
  • セキュリティグループは最大 5 つ
  • アップロード・ダウンロードアクションは使用不可
  • ストレージは一時的、セッションを終了するとデータは削除
  • インターネットアクセスはプライベートサブネットでのみ使用可
  • API コールには AWS サービスへのネットワークアクセス必須

動作確認

プライベートサブネットでしか使えないことがわかったので、インターネットアクセスを確保するため NAT ゲートウェイを作成し、ルートテーブルのルートを変更します。

image

このプライベートサブネットで CloudShell を起動すると、AWS の API コール、インターネットアクセス、EC2 への Ping ができる ことを確認できました!

image
image

VPC で起動できるということは、VPC で稼働する RDS にもアクセスできるのでは? ということで確認します。CloudShell には psql コマンドが入っているため、難なく接続できました!

image

Aurora であればマネジメントコンソールからクエリエディタで SQL を発行できますが、それ以外では踏み台等からのアクセスが必要です。CloudShell を使うと楽できる場面があるかもしれません。

おまけ

特定の EC2 の情報を出力するコマンドを Claude に作成してもらいました。実行するとエラーになりましたが、エラー文を伝えるとうまく修正してくれました。複雑な jq のクエリは(私は)パッと作れないので、生成 AI を活用していきたい!

image
image
image

GitHubで編集を提案

Discussion