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团队维护比较好。

参考:

相关推荐
ZStack开发者社区5 小时前
ZSvirt 开源月报第 1 期 · Around the World
开源·云计算·vmware·虚拟化
QYRdata6 小时前
ICMP云管理平台2026-2032年CAGR达13.5% 未来发展潜力凸显
云计算·服务发现
天翼云开发者社区9 小时前
央国企大模型安全合规应用新标杆!中国电信天翼云推出央企可信Token专区!
云计算·大模型推理服务
AKAMAI16 小时前
Akamai 云服务持续强化其基础架构(更新时间:2026年8月)
人工智能·云计算
zhaodezhu168817 小时前
软件SaaS信息技术云计算GEO优化公司专属服务活动正式开启
云计算·信息技术·geo优化·软件saas·公司服务
zhaodezhu168820 小时前
软件SaaS信息技术云计算GEO优化公司行业百科
云计算·信息技术·geo优化·软件saas·公司行业
云老大-阿里云国际站代理商1 天前
华为云国际站服务代理商:NAT网关怎么配?多台ECS共用公网IP要注意什么
服务器·华为云·云计算
闲云自留地1 天前
告别命令恐惧症,openEuler 基础操作 + 文本 + 网络管理实战
linux·运维·云计算
^Rocky2 天前
IT 疑难杂症诊疗室:复杂技术问题解决实录
运维·bug
逐流人2 天前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd