AWS EC2の操作はPowerShellで楽ができます。
今回は、 誤ってTerminateしたくない人の見方「Terminate Protection」をEC2インスタンスに対して有効化する方法です。
EC2 Instance の Terminate Protection
Terminate Protectionは、名のごとく、 Terminateを実行できないようにしてくれます。 この設定が有効になったEC2 Instanceは、 Terminateボタンがグレイアウトして無効になり、 Terminate Protectionを無効にしないとTerminateできないようになります。
特にAWS Management Consoleは、マウス操作のため、 StopやStart, Rebootの近くにTerminateがあるのは恐いものです。
PowerShell で Terminate Protectionを操作する
PowerShellでのAWS操作が初めての方は、前回の記事を参照してください。
AWS Tools for Windows PowerShell のススメ
Terminate Protectionは、 EC2の属性 (Attribute) として設定されています。 ということで、使うコマンドレットはこれです。
Get-EC2InstanceAttribute Edit-EC2InstanceAttribute
EC2 Instanceの状態を取得するには、 Get-EC2InstanceAttribute Cmdletを利用します。 Terminate Protection状態を取得するならこうです。
Get-EC2InstanceAttribute -InstanceId i-xxxxxxx -Attribute disableApiTermination
Terminate Protectionは、 disableApiTerminationという名称なんですね。 有効にする場合はこのようにします。
Edit-EC2InstanceAttribute -InstanceId i-xxxxxxxx -Attribute disableApiTermination -Value $true
無効にする場合はこうです。
Edit-EC2InstanceAttribute -InstanceId i-xxxxxxxx -Attribute disableApiTermination -Value $false
指定したIPのInstanceを取得したい? それならこうです。
$IpAddress = "10.0.100.10" (Get-EC2Instance).RunningInstance | where PrivateIpAddress -eq $IpAddress | Get-EC2InstanceAttribute -Attribute disableApiTermination
設定も簡単ですね。
$IpAddress = "10.0.100.10" (Get-EC2Instance).RunningInstance | where PrivateIpAddress -eq $IpAddress | Edit-EC2InstanceAttribute -Attribute disableApiTermination -Value $false
まとめ
PowerShellは基本としてPipe Orientatedです。 Pipeが使えない利用なら、別にPowerShellではなくて .NETの方を使えばいいのです。
より効率書ける/利用できる場面に適したものを使えるといいですね。