【小ネタ】AWS CLIでEC2インスタンスのOS情報を取得してみた。
こんばんは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
EC2インスタンスのOS情報、皆さんはどこで確認していますか?
勿論コンソール上からも確認は出来ますが、AWS CLIでも取得出来ます。
今回はその方法と気になったことについてまとめてみました。
いきなりまとめ
- コマンドラインでインスタンスのOS情報を取得するには、SSMエージェントが対象のインスタンスに入っている必要がある
aws ssm describe-instance-information
というコマンドでOS情報を取得可能- 出力結果を見やすく整形したコマンドがこちら↓
aws ssm describe-instance-information --query 'InstanceInformationList[*].[InstanceId,PlatformType,PlatformName,PlatformVersion]' --output table
- 取得出来るOSの情報は3つ
PlatformType
:OSプラットフォームの種類PlatformName
:OSプラットフォームの名称PlatformVersion
:OSプラットフォームのバージョン
- 出力結果を見やすく整形したコマンドがこちら↓
- OSの種類がLinuxでもWindowsでも取得可能
はじめに
ある日、弊社社員に「インスタンスのOS情報も確かAWS CLIで取れますよ」と教えてもらい、EC2のAPIで取るのかな?と思いコマンドを調べていました。
aws ec2 describe-instances
の出力内容を見ても、OSに関連する情報はOSプラットフォームの種類が記載されるPlatformDetails
ぐらい無さそう。。。バージョンも見たいなぁ。
最終的に辿り着いたのはAWS ナレッジセンターのこの質問です。
EC2 Linux インスタンスの OS プラットフォームまたはバージョンの確認
どうやらインスタンスのOS情報はEC2のAPIではなくSSMのAPIで、インスタンスにインストールされたSSMエージェント経由で取得するようですね。
前提条件
調査対象のインスタンスが下記条件を満たしている必要があります。
- SSMエージェントがインストールされている。
- 最近のAMIであれば基本的にデフォルトでインストールされています。
- SSMを利用するための権限を持ったIAMロールがアタッチされている。
- IAMポリシー
AmazonSSMManagedInstanceCore
を持つIAMロールがアタッチされている。 - 参考:ステップ 4: Systems Manager の IAM インスタンスプロファイルを作成する - AWS Systems Manager
- ロールが反映されるまで数分程度の時間がかかる場合があります。
- IAMポリシー
やってみよう
それではどのように取得出来るのかやってみましょう。
今回コマンドはCloudShellで実行しました。お手軽ですね。
まずはaws ssm describe-instance-information --output table
でどのような出力がされるのかを確認します。
[cloudshell-user@ip-10-0-158-73 ~]$ aws ssm describe-instance-information --output table -------------------------------------------------------------------------- | DescribeInstanceInformation | +------------------------------------------------------------------------+ || InstanceInformationList || |+-------------------+--------------------------------------------------+| || AgentVersion | 3.1.1188.0 || || ComputerName | ip-172-31-5-47.ap-northeast-1.compute.internal || || IPAddress | 172.31.5.47 || || InstanceId | i-03eabc1c930425994 || || IsLatestVersion | False || || LastPingDateTime | 2022-04-19T07:12:03.639000+00:00 || || PingStatus | Online || || PlatformName | Amazon Linux || || PlatformType | Linux || || PlatformVersion | 2 || || ResourceType | EC2Instance || || SourceId | i-03eabc1c930425994 || || SourceType | AWS::EC2::Instance || |+-------------------+--------------------------------------------------+|
OSに関連する情報としては、PlatformName
, PlatformType
, PlatformVersion
が取れていますね。
最初にご紹介したナレッジセンターの回答を参考に、--query
オプションを使用して出力結果を整形します。
実行するコマンドはこちら。
aws ssm describe-instance-information --output table --query 'InstanceInformationList[*].[InstanceId,PlatformType,PlatformName,PlatformVersion]'
[cloudshell-user@ip-10-0-158-73 ~]$ aws ssm describe-instance-information --output table --query 'InstanceInformationList[*].[InstanceId,PlatformType,PlatformName,PlatformVersion]' ------------------------------------------------------- | DescribeInstanceInformation | +----------------------+--------+----------------+----+ | i-03eabc1c930425994 | Linux | Amazon Linux | 2 | +----------------------+--------+----------------+----+
左から順に「インスタンスID」、「OSプラットフォームの種類」、「OSプラットフォームの名称」、「OSプラットフォームのバージョン」が出力されています。
ちなみに--region ap-northeast-1
といったオプションを付けることで特定のリージョンの結果を取得することも可能です。(ap-northeast-1部分は任意のリージョンに変更して下さい。)
Windowsインスタンスでも出来るの?
ナレッジセンターの質問内容には「EC2 Linux インスタンス」と書かれています。
SSMエージェント経由だからWindowsインスタンスでも出来そうなのにLinuxインスタンス限定なの?と気になったのでやってみました。
[cloudshell-user@ip-10-0-158-73 ~]$ aws ssm describe-instance-information --output table --query 'InstanceInformationList[*].[InstanceId,PlatformType,PlatformName,PlatformVersion]' ---------------------------------------------------------------------------------------------- | DescribeInstanceInformation | +----------------------+----------+--------------------------------------------+-------------+ | i-01e7870c7bc11b377 | Windows | Microsoft Windows Server 2019 Datacenter | 10.0.17763 | +----------------------+----------+--------------------------------------------+-------------+
取れました!
最後に
コマンドラインでOSの情報が取得出来るのは便利ですね。コンソール上ではOSプラットフォームのバージョンまでは確認出来ないので助かりますね。
やはりAWS CLIのコマンドは知らないことが多いので調べていて面白いです。
小ネタでしたが、本記事がどなたかのお役に立てれば幸いです。
以上、べこみんでした。