はじめに
この記事ではAmazon CodeCatalystのDev Environmentで作成したコンピューティングリソースを調査します。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば修正していく想定です。
CodeCatalystのDev Environmentで作成したコンピューティングリソースってどうなっているん
前回と前々回に渡り、CodeCatalystについて書きました。その際に疑問に思うこととして「Amazon CodeCatalyst(以下、CodeCatalyst)のIAMはどうなっているのか」というところです。
とくに前回のDev EnvironmentについてはCodeCatalystでEC2を構築しているように見えるため、「IAMロールのようなものがあるのではないか」と考えられます。
そこで今回はCodeCatalystのDev Environmentで作成したコンピューティングリソースの中身を調べたいと思います。
検証環境は以下の記事を参考に作成するため、一部省略します。なお、今回はAWS Builder IDを使ってセットアップします。
- 検証!AWS Builder IDを使ってAmazon CodeCatalystをセットアップする
- 検証!Amazon CodeCatalystのDev EnvironmentでVisual Studio Codeを起動してみる
検証環境の作成
では、実際に環境を構築してやっていきたいと思います。
Dev EnvironmentsでVisual Studio Codeの開発環境を構築する
以下のURLにアクセスしてsource-repositoriesを開きます。
※{スペース名}
と{プロジェクト名}
は任意の名前
https://codecatalyst.aws/spaces/{スペース名}/projects/{プロジェクト名}/source-repositories
Create Dev Environment
の右にある逆三角形をクリックします。
いくつか環境が選択できますが、ここではVisual Studio Code
を選択します。
開発環境の設定と起動
開発環境を選択すると設定画面に遷移します。ブランチ、エイリアス、VPCコネクションなどの設定がありますが、ここではブランチのみ設定してCreate
をクリックします。
Dev Environment Configuration
の設定はデフォルトのSmall 2vCPU, 4GB RAM
で進めます。
Create
を実行するとローカルにインストールされているVisual Studio Codeから通知が届きます。Open Visual Studio Code.app
をクリックします。
Visual StudioCodeの画面でポップアップが表示されるのでOpen
をクリックします。
これでAWS上にVisual Studio Codeを起動してローカルのVisual Studio Codeから接続できました。
接続確認
ターミナルを起動してuname -a
を実行してみましょう。
まずはターミナルを起動します。Terminal
をクリックしてNew Terminal
を選択します。
新しいターミナルで以下のコマンドを実行します。
uname -a
実行結果
Linux ip-10-130-38-171.us-west-2.compute.internal 6.1.90-99.173.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 7 11:11:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
AWS上で起動しているターミナルであることが確認できました。
Dev Environmentで作成したコンピューティングを調査してみる
Dev Environmentで作成したコンピューティングリソースにはいくつかの疑問が浮かびます。
- IAMはどうなっているのかAWSサービスにはアクセスできるのか
- パブリックIPアドレスはあるのかあるとしたらどう調べるのか
- メタデータはどうなっているのか
気になるので調査してみましょう。
IAMはどうなっているのかAWSサービスにはアクセスできるのか
※結論いうとセットアップ時ではできないです。
仮にもAWSのサービスなのでAWSで作成したリソースということは何かしらのロールを持っているに違いないと思います。
AWS CLIで検証してみます。まずはAWS CLIのプロファイルを持っているのかを確認します。
aws configure list-profiles
実行結果
codecatalyst
codecatalyst
という名前のプロファイルを持っているそうです。中身を確認するため、以下のコマンドを実行してみます。
aws configure list --profile codecatalyst
実行結果
Name Value Type Location
---- ----- ---- --------
profile codecatalyst manual --profile
access_key <not set> None None
access_key <not set> None None
region us-west-2 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
access_key
とaccess_key
が存在しないため、AWSサービスへのアクセスはできません。
そもそもCodeCatalystをセットアップした時にアカウント連携をしていますが、アカウント内のリソースを連携していません。
※でもそうするとCodeCatalystのリソース展開はどのIAMが担当するんだろうか?
パブリックIPアドレスはあるのかあるとしたらどう調べるのか
※結論いうとパブリックIPアドレスはあります。メタデータを使って調査できます。
メタデータはどうなっているのか
メタデータを使って調査していきましょう。参考:メタデータの調べ方
ではまず、基本となる最初のコマンドを実行します。
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
実行結果
ami-id
ami-launch-index
ami-manifest-path
autoscaling/
block-device-mapping/
events/
hostname
iam/
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
reservation-id
security-groups
services
パブリックIPv4アドレスを調べる
※結論いうとパブリックIPv4アドレスを持っています。
パブリックIPv4アドレスを持っているかを調査します。
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-ipv4
実行結果
52.32.128.109
パブリックIPがあるということはおそらくホスト名もあるだろうということでホスト名を調べます。
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-hostname
実行結果
ec2-52-32-128-109.us-west-2.compute.amazonaws.com
セキュリティグループ
最後に、もう一つ気になるところとしてAWSの環境に接続しているということはそこにはセキュリティもあるはず!ということでセキュリティグループも調べます。以下のコマンドを実行します。
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/security-groups
実行結果
moontide-compute-stack-prod-us-west-2-cell-0-ecs-MoontideNoInboundSecurityGroupDF8C19F8-H9NGSEPKY6FC
実行結果で表示されたセキュリティグループはAWS マネジメントコンソールでは確認できませんでした。
まとめ
まだまだ謎が多いCodeCatalystという感じでこのコンピューティングリソースにはどういう権限があるのかよくわかりませんでした。
しかし、メタデータからさまざまな情報を探れますのでまだまだ調査のしがいがありそうです。