😎

【AWS】インスタンスプロファイルと紐付いているEC2インスタンスをスムーズに確認する方法とは?

2023/01/09に公開

はじめに

AWSCLIを用いて、インスタンスプロファイルと紐付いているEC2インスタンスをスムーズに確認する方法について書きます。
どのEC2インスタンスにどのインスタンスプロファイルが紐付いているのかをすぐに確認したい場合に使える方法になります。

環境

  • 今回使用するAWSCLIのバージョン情報
% aws --version
aws-cli/2.7.31 Python/3.10.6 Darwin/21.4.0 source/x86_64 prompt/off
%

作業手順

1.対象のインスタンスプロファイルを確認する。

  • 以下のコマンドを用いて確認する。
    • インスタンスプロファイルのarnRole名 を抽出することが可能。
コマンド
aws iam list-instance-profiles | jq -r '.InstanceProfiles[] | [.Arn, .Roles[].RoleName] | @csv' | tee tmpRole.csv | cat
実行例
% aws iam list-instance-profiles | jq -r '.InstanceProfiles[] | [.Arn, .Roles[].RoleName] | @csv' | tee tmpRole.csv | cat
arn:aws:iam::<AWSアカウントID>:instance-profile/<Role名>,"Role名"
arn:aws:iam::<AWSアカウントID>:instance-profile/<Role名>,"Role名"
arn:aws:iam::<AWSアカウントID>:instance-profile/<Role名>,"Role名"
%

※インスタンスプロファイルに設定している許可ポリシー等の詳細情報を確認したい場合は、AWS Console にて以下を確認。

IAMダッシュボード -> ロール -> 対象のロール

2.IAMロールと紐付いているEC2インスタンスを確認する。

以下のコマンドを実行します。

コマンド
aws ec2 describe-instances --region ap-northeast-1 | jq -r '.Reservations[].Instances[] | [.IamInstanceProfile.Arn, .InstanceId, (.Tags[]?|select(.Key=="Name").Value)] | @csv' | tee tmpEC2.csv | cat
  • こちらのコマンドにて、インスタンスプロファイルに紐付いているEC2インスタンスの一覧を表示させることが可能。
    • インスタンスプロファイルのarnEC2インスタンスのIDEC2インスタンス名 を抽出することが可能。
    • EC2インスタンス名は、Nameのタグ付けをしている場合のみ抽出することが可能。
% aws ec2 describe-instances --region ap-northeast-1 | jq -r '.Reservations[].Instances[] | [.IamInstanceProfile.Arn, .InstanceId, (.Tags[]?|select(.Key=="Name").Value)] | @csv' | tee tmpEC2.csv | cat
"arn:aws:iam::107500286332:instance-profile/<Role名>","<EC2インスタンスのID>","<EC2インスタンス名>"

参考

https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html

https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html

https://dev.classmethod.jp/articles/export-list-ec2-iamrole/

Discussion