AWS System Manger 批量操作EC2 例項
阿新 • • 發佈:2018-11-14
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
幾秒後檢視結果