AWS System Manger 批量操作EC2 实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS System Manger 批量操作EC2 实例相关的知识,希望对你有一定的参考价值。

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 实例的主要内容,如果未能解决你的问题,请参考以下文章

System Operations on AWS - Lab 1W - Creating EC2 (Windows)

AWS EC2 Windows 实例用户数据和任务计划程序

AWS IAM - 根据资源标签拒绝某些 EC2 操作?

如何在AWS平台导入自行创建的操作系统模板并创建EC2实例

不支持 NUMA 的 AWS EC2 实例

System Operations on AWS - Lab 3W - Managing Storage (Windows)