1. 程式人生 > >AWS System Manger 批量操作EC2 實例

AWS System Manger 批量操作EC2 實例

profile 自動化 ipad The 資源 lis att 批量 fault

AWS 裏面有個叫做 AWS System Manager 的服務,可以幫助管理員批量的自動化管理AWS的資源。比如說,我可以通過他的 Run Command 批量地對指定的EC2 實例組實現某個操作,如升級系統,執行一段腳本,更新agent等等

技術分享圖片

默認情況下,這個System Manager是沒有權限去訪問EC2的,所以第一步需要創建一個IAM role,授權System Manager去訪問EC2。它默認已經提供了一個 policy 叫做 AmazonEC2RoleforSSM,創建一個Role,選擇這個Policy就行了

技術分享圖片

下一步需要在EC2上綁定這個Role

技術分享圖片

如果只有幾個EC2實例可以手動操作 ,如果有上百臺手動操作就太慢了,我們可以考慮用腳本來配置。

安裝AWSPowerShell, 然後設定賬戶初始化,然後就可以獲取實例並註冊IAMRole了

#Install-Module AWSPowerShell -force

Set-AWSCredential -AccessKey XXXXX  -SecretKey YYYYYY -StoreAs test

#Get-AWSCredential -ListProfileDetail

Initialize-AWSDefaults -ProfileName test -Region ap-southeast-2

$instances=Get-EC2Instance | select -ExpandProperty instances
foreach($item in $instances){

    $iamrole=$item  | select -ExpandProperty IamInstanceProfile
    if($iamrole -eq $null){

        Register-EC2IamInstanceProfile -InstanceId $item.InstanceId -IamInstanceProfile_Arn arn:aws:iam::3861158221239:instance-profile/AmazonEC2RoleForSSM
    }

}

我們可以通過下面的腳本來判斷是否綁定成功

$filter = New-Object Amazon.EC2.Model.Filter -Property @{Name = "iam-instance-profile.arn"; Value = "arn:aws:iam::386115804199:instance-profile/AmazonEC2RoleForSSM"} 
$ec2 = @(Get-EC2Instance -Filter $filter)
$ec2instances = $ec2.instances  #returns instances with its attributes
$ec2instances.privateipaddress  #

成功之後我們返回 System manager的界面,在Managed Instances 下面可以看見所有的EC2 實例了

技術分享圖片

最後做過簡單的測試

點擊 run Command 然後選擇 AWS-RunPowerShellScript

技術分享圖片

輸入一個簡單的命令
技術分享圖片

選擇幾臺測試的實例機器
技術分享圖片

點擊Run

幾秒後查看結果

技術分享圖片

AWS System Manger 批量操作EC2 實例