tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

AWS AWS Tools for Windows PowerShell の Get-EC2InstanceStatus が改善されてた

AWS Tools for Windows PowerShell 使ってますか? 非常に便利なので、重宝しています。 ダウンロードはこちらから
AWS Tools for Windows PowerShell
さて、この AWS Tools for Windows PowerShell ですが、更新が非常に活発です。 今回は、以前から困っていた内容が修正されていたので報告を。

Get-EC2InstanceStatus にあった面倒な状態

このコマンドは、 現在起動している EC2 Instance の状態を取得するためのコマンドです。 詳しくはこれで
Get-Help Get-EC2InstanceStatus
DESCRIPTION Describes the status of an Amazon Elastic Compute Cloud (Amazon EC2) instance. Instance status provides information about two types of scheduled events for an instance that may require your attention, Scheduled Reboot and Scheduled Retirement. Only information about instances in the running state is returned.
実は、インストーラバージョンで 3.0.451.0 まで、実行時に返ってくる型が System.Collections.Generic.List`1[]]  でした。 そのため、 以下のコードを実行すると、配列として各インスタンスの情報が入ってしまうという..... 2013年 5月上時点の 古いバージョンをお使いの方は再現します。
Get-EC2InstanceStatus | %{[PSCustomObject]@{InstanceId=$_.InstanceId}} 
結果このようになります。
InstanceId
---------------
{i-xxxxxxx,i-zzzzzzz}
本来期待するのは、この形なのですね。
InstanceId
---------------
i-xxxxxxx
i-zzzzzzz
この時は、しょうがないので正確な型 Amazon.EC2.Model.InstanceStatus を取得するため以下のようにしていました。
(Get-EC2InstanceStatus).ServiceResult.InstanceStatus
返却結果の見た目は、 Get-EC2InstanceStatus と変わりません。 しかし、先ほどのコードに倣って実行すると
(Get-EC2InstanceStatus).ServiceResult.InstanceStatus | %{[PSCustomObject]@{InstanceId=$_.InstanceId}} 
期待した結果が取得できます。
InstanceId
---------------
i-xxxxxxx
i-zzzzzzz

Get-EC2InstanceStatus がこっそり改善されれた

開発環境などでバージョンが違っていて気付いたのですが、インストーラバージョンで 3.0.514 、 7月上旬のバージョンでこれが修正されています。 普通に、この返却結果が Amazon.EC2.Model.InstanceStatus なので、
Get-EC2InstanceStatus | %{[PSCustomObject]@{InstanceId=$_.InstanceId}} 
で、期待した結果が変えてきます。
InstanceId
---------------
i-xxxxxxx
i-zzzzzzz
ヤッタね! しかし、稼働していない EC2 Instance の状態取得が出来ないのは困りますね.... Stop-EC2Instance でしか取れないのでしょうか...... 副作用がヒドイのですが.....