AWS EB使用自定义镜像

写在前面的话

最好不要走自定义AMI这个方案,如果你只是一个人的话,还是把OS维护的事,交给AWS EB团队维护比较好。

问题

有时候EB管理EC2系统版本没那么及时,就需要我们自己手动制作EC2镜像,来给AWS EB使用。

查询当前eb使用的镜像id

查询当前EB环境中使用的最新镜像id,可以从控制台看出来,也可以使用aws cli来查询对于eb环境不同的平台的镜像id是多少,具体CLI查询代码如下:

bash 复制代码
# 查询java17平台
aws elasticbeanstalk describe-platform-version --region cn-north-1 --platform-arn "arn:aws:elasticbeanstalk:cn-north-1::platform/Corretto 17 running on 64bit Amazon Linux 2023/4.10.0" --query PlatformDescription.CustomAmiList
# 查询python3
aws elasticbeanstalk describe-platform-version --region cn-north-1 --platform-arn "arn:aws:elasticbeanstalk:cn-north-1::platform/Python 3.13 running on 64bit Amazon Linux 2023/4.11.0" --query PlatformDescription.CustomAmiList

这里主要是获得ImageId是多少,响应内容如下:

json 复制代码
[
    {
        "VirtualizationType": "pv",
        "ImageId": ""
    },
    {
        "VirtualizationType": "hvm",
        "ImageId": "ami-0ae3568632112c6fd"
    }
]

这样获得ami id就可以,基于这个镜像来制作自己的系统镜像了。

制作ec2镜像

打开EC2控制台,开始启动新实例,如下图:

这里做一些常规的EC2配置即可,如设置名称,设置安全组,设置角色。这里最关键的步骤,就是找到上一部ami id来启动ec2,如下图:

整体设置如下:

设置没问题后,点击启动实例即可。

等待一段时间,使用AWS CLI连接上去看看,就说明没有问题了:

bash 复制代码
aws ssm start-session --target i-093ce0589e6aabfd0

Starting session with SessionId: xxxx-bu7ak5bexqjg34zglcpfktalfq
sh-5.2$ bash

这样就启动成功了。

更新系统

先检查系统是否需要更新:

bash 复制代码
sudo dnf check-release-update

如果出现如下结果:

bash 复制代码
WARNING:
  A newer release of "Amazon Linux" is available.

  Available Versions:

  Version 2023.10.20260325:
    Run the following command to upgrade to 2023.10.20260325:

      dnf upgrade --releasever=2023.10.20260325

    Release notes:
     https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.10.20260325.html

这说明有版本需要更新,直接运行如下命令即可:

bash 复制代码
sudo dnf upgrade --releasever=2023.10.20260325 -y

等待一段时间,就安装成功了。还可以使用如下命令验证一下:

bash 复制代码
cat /etc/*release

如果是内核更新,需要reboot一下。这里就不演示了,接下来直接启用内核实时更新。

启用内核实时更新

安装 DNF 插件

bash 复制代码
sudo dnf install -y kpatch-dnf

安装 kpatch 软件包

bash 复制代码
sudo dnf install -y kpatch-runtime

启用 DNF 插件

bash 复制代码
sudo dnf kernel-livepatch -y auto

启动 kpatch 服务

启动 kpatch 服务。此服务在初始化或启动时会加载所有内核实时补丁。

bash 复制代码
sudo systemctl enable kpatch.service && sudo systemctl start kpatch.service

然后,重启EC2:

bash 复制代码
sudo reboot

验证安全公告和安全漏洞是否修复

bash 复制代码
# 查公告
sudo dnf updateinfo list
# 查安全漏洞
sudo dnf updateinfo list cves

当重启后,重新登录到EC2实例,没有任何安全公告和安全漏洞,则说明安全问题也解决。就可以基于这个EC2实例制作镜像AMI了。

制作AMI镜像

停止上面设置好的EC2实例,如下图:

停止完成后,选择【创建映像】,如下图:

创建映像设置如下:

等待一段时间,映像状态从【待处理】变成【可用】后,即可清理原来的EC2实例。

这里我们就获得自己的AMI ID。接下来,就将这个AMI ID用到EB环境中了。

修改EB环境中的配置

找到EB中AMI ID设置处,如下图:

将默认AMI ID换成我们自己的AMI ID即可,如下图:

等待一段时间,EB状态OK了,就说明我们顺利解决EB默认系统不及时的问题。

总结

AI之下,找问题的速度是变快了,需要人解决问题的速度就不一定快了。这个中国区的AL2023发布日志页面,只有英文版更新了,中文版没有及时更新。

最好不要走自定义AMI这个方案,如果你只是一个人的话,还是把OS维护的事,交给AWS EB团队维护比较好。

参考:

相关推荐
yichengerp3 小时前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
做运维的阿瑞5 小时前
公有云算力布局的技术逻辑与工程实践
微服务·云计算·csdn开发云
朱包林6 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
酒神dnspup9 小时前
IPv6 网站访问异常怎么查?DNSPup 双栈检测、DNS 与端口排障指南
运维·云计算·域名·dns·dnspup
workflower1 天前
矿用机器人人工智能安全与治理体系
人工智能·安全·机器学习·机器人·云计算·无人机
怪奇云呼军1 天前
教育试听预约后没到课,闪电智能 Voice Agent 如何做分层回访?
人工智能·python·算法·云计算·音视频
yichengerp1 天前
国内中小电子工厂用哪个erp系统好?
大数据·运维·人工智能·云计算·制造
sbjdhjd1 天前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
GPU实战笔记1 天前
项目网盘大文件上传:暂停与取消的事实边界
云计算·文件上传·项目网盘·gpu云服务器
workflower1 天前
汽车自动驾驶9 要素
人工智能·机器学习·重构·云计算·汽车·无人机