标签:NotePropertyValue item Protection result Termination NotePropertyName select EC2
同事前两天打算重启一个EC2 实例,结果手滑点到了 Termination,然后EC2 就悲剧了。幸好有Snapshot备份,服务器挂了15分钟之后 成功的恢复了。
可以看见 reboot和terminate靠的十分近,所以为了避免悲剧再次发生,我们需要打开 termination protection
如果只有几台EC2,可以手动点开,如图所示
但是如果很多的话,还是写脚本实现方便一些
下面是PowerShell实现的操作。
function Scan-EC2(){
Write-Host "Checking EC2 instance Tags status" -ForegroundColor Yellow
$all=Get-EC2Instance | select -expand instances
# confirm EC2 instances were tagged
$result=@()
foreach($item in $all){
$Name=$item.tag | Where-Object {$_.Key -eq 'Name'} | select -ExpandProperty value
$clinic=$item.tag | Where-Object {$_.Key -eq 'clinic'} | select -ExpandProperty value
$terminationprotection=Get-EC2InstanceAttribute -InstanceId $item.instanceid -Attribute disableApiTermination | select -ExpandProperty DisableApiTermination
$sg=$item.securitygroups.groupname
$item | add-member -NotePropertyName Description -NotePropertyValue $name
$item | add-member -NotePropertyName Clinic -NotePropertyValue $clinic
$item | add-member -NotePropertyName sg -NotePropertyValue $sg
$item | add-member -NotePropertyName TerminationProtection -NotePropertyValue $terminationprotection
$item = $item | select *
$result+=$item
}
$result | select Description, InstanceId, InstanceType,privateIpaddress, Clinic,@{n='Status';e={$_.state.name}},sg, TerminationProtection
}
$result=Scan-EC2
foreach($one in $result){
if($one.terminationprotection -eq $false){
Edit-EC2InstanceAttribute -InstanceId $one.instanceid -DisableApiTermination $true
}
}
$result=Scan-EC2 | Out-GridView
输出结果显示都成功的变成True了
可以通过计划任务定期执行,这样就不用担心无意中把重要的服务器给删掉了。
标签:NotePropertyValue,item,Protection,result,Termination,NotePropertyName,select,EC2 来源: https://blog.51cto.com/beanxyz/2484786
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。