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
几秒后查看结果