AWS 裏面有個叫作 AWS System Manager 的服務,能夠幫助管理員批量的自動化管理AWS的資源。好比說,我能夠經過他的 Run Command 批量地對指定的EC2 實例組實現某個操做,如升級系統,執行一段腳本,更新agent等等ide
默認狀況下,這個System Manager是沒有權限去訪問EC2的,因此第一步須要建立一個IAM role,受權System Manager去訪問EC2。它默認已經提供了一個 policy 叫作 AmazonEC2RoleforSSM,建立一個Role,選擇這個Policy就好了測試
下一步須要在EC2上綁定這個Rolecode
若是隻有幾個EC2實例能夠手動操做 ,若是有上百臺手動操做就太慢了,咱們能夠考慮用腳原本配置。blog
安裝AWSPowerShell, 而後設定帳戶初始化,而後就能夠獲取實例並註冊IAMRole了ip
#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 實例了it
最後作過簡單的測試自動化
點擊 run Command 而後選擇 AWS-RunPowerShellScriptio
輸入一個簡單的命令ast
選擇幾臺測試的實例機器
點擊Run
幾秒後查看結果