• AWS-PatchAsgInstance自动化定时ASG组打补丁


    问题

    需要给AWS的EC2水平自动扩展组AutoScaling Group(ASG)中的EC2自动定期打补丁。

    创建自动化运行IAM角色

    找到创建角色入口页面,如下图:
    创建角色入口页面
    开始创建Systems Manager自动化运行的IAM角色,如下图:
    自动化运行的角色创建开始
    设置AmazonSSMAutomationRole权限,如下图:
    AmazonSSMAutomationRole权限设置
    设置AmazonSSMAutomationRole角色名和角色描述,点击创建角色,如下图:
    创建AmazonSSMAutomationRole角色

    创建AWS-PatchAsgInstance自定义策略

    找到策略入口页面,开始创建策略如下图:
    策略入口页面

    AWS-PatchAsgInstance自动化文档,需要的权限内容,如下:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Statement1",
                "Effect": "Allow",
                "Action": [
                    "ssm:StartAutomationExecution",
                    "ssm:GetAutomationExecution",
                    "ssm:GetCommandInvocation",
                    "ssm:GetParameter",
                    "ssm:SendCommand",
                    "cloudformation:CreateStack",
                    "cloudformation:DeleteStack",
                    "cloudformation:DescribeStacks",
                    "ec2:CreateTags",
                    "ec2:DescribeInstances",
                    "ec2:RunInstances",
                    "iam:AttachRolePolicy",
                    "iam:CreateRole",
                    "iam:DeleteRole",
                    "iam:DeleteRolePolicy",
                    "iam:DetachRolePolicy",
                    "iam:GetRole",
                    "iam:PassRole",
                    "iam:PutRolePolicy",
                    "lambda:CreateFunction",
                    "lambda:DeleteFunction",
                    "lambda:GetFunction",
                    "lambda:InvokeFunction"
                ],
                "Resource": "*"
            }
        ]
    }
    

    将AWS-PatchAsgInstance需要的权限设置到策略中,如下图:
    设置AWS-PatchAsgInstance策略权限
    设置AWS-PatchAsgInstance策略名和描述,直接创建策略即可,如下图:
    审核创建AWS-PatchAsgInstance自定义策略

    然后,将创建好的AWS-PatchAsgInstance自定义策略绑定给AmazonSSMAutomationRole自动化角色,结果如下图:
    AWS-PatchAsgInstance策略添加到AmazonSSMAutomationRole角色

    自动化角色设置PassRole权限角色为自己

    找到自动化角色AmazonSSMAutomationRole,如下图:
    创建内联策略入口
    策略内容如下:

    {
    	"Version": "2012-10-17",
    	"Statement": [
    		{
    			"Sid": "VisualEditor0",
    			"Effect": "Allow",
    			"Action": "iam:PassRole",
    			"Resource": "arn:aws-cn:iam::xxxxxxxxx:role/AmazonSSMAutomationRole"
    		}
    	]
    }
    

    将上述策略权限内容,复制策略编辑器中,如下图:
    策略内容设置
    设置AmazonSSMAutomationRolePolicy策略名称,如下图:
    设置AmazonSSMAutomationRolePolicy策略名创建内联策略
    最后AmazonSSMAutomationRole角色权限策略,如下图:
    AmazonSSMAutomationRole角色权限策略

    创建维护窗口

    找到维护窗口创建页面入口,如下图:
    维护窗口入口页面
    设置维护窗口,如下图:
    设置维护窗口
    这里去掉“允许已注销目标”的勾选,意思没有被AWS SSM托管到的EC2目标,不会执行这个维护任务。
    后面是设置每周六凌晨1点定时执行维护任务,维护窗持续时间为1个小时。如果在这1个小时内没有执行完,就不执行了(停止启动任务为0小时)。这里的时区为东八区。
    最后点击“创建维护时段”。

    注册维护目标

    找到维护窗口,入口页面如下图:
    维护窗口入口页面
    找到注册目标入口页面,如下图:
    注册目标入口页面
    设置注册目标,如下图:
    设置注册目标
    这里主要通过EC2实例选择标签Name进行识别dev相关EC2实例。

    注册维护任务

    找到注册维护任务入口页面,如下图:
    注册维护任务入口页面
    设置使用AWS-PatchAsgInstance自动注册任务,并且,设置上一步已经注册的目标组,而且,设置变量InstanceId为{{ TARGET_ID }},并且,这个任务是一个一个执行,执行完一个没有错误就执行下一个。设置之前的IAM服务角色。最后,点击注册自动化任务。如下图:
    注册自动化任务

    查看历史记录

    找到查询历史记录网页入口,如下图:
    历史记录网络入口
    查看到成功结果,即可,如下图:
    成功结果

    注意

    加入了定时维护窗口的AutoScaling组,需要禁用自动缩容策略,不然,这个自动任务可能找不到EC2实例;还有就是AutoScaling组所需EC2实例数,需要大于AutoScaling组最小EC2实例数。只有这个两个AutoScaling组条件满足,才能使用自动维护窗口。

    总结

    使用自动化维护任务打补丁,还算简单,只是对AutoScaling有自动缩容限制。第一步合规性就是每天扫描一次所有EC2是否合规,定时自定化维护任务,就是每周六半天打补丁。

    参考:

  • 相关阅读:
    关于过滤链设计的实践记录
    iOS——Manager封装网络请求
    MATLAB与Python:优势与挑战
    SQLZOO:SELECT from NOBEL Tutorial
    MySQL8.0.26安装配置教程(windows 64位)
    电脑重装系统Win11格式化硬盘的详细方法
    Openmldb 踩坑0.53
    TCP 连接的状态详解以及故障排查
    南大通用GBase8s 常用SQL语句(261)
    Easysearch压缩模式深度比较:ZSTD+source_reuse的优势分析
  • 原文地址:https://blog.csdn.net/fxtxz2/article/details/139803311