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

参考:

相关推荐
TYKJ02311 小时前
GPU选型避坑指南:A100/H100/H200/H20怎么选?从真实案例讲起
云计算·创业
xixixi7777711 小时前
AI的“账号”与“钱包”:AWS与Circle同日出手,AI正从工具进化
人工智能·安全·ai·大模型·云计算·aws
wanhengidc17 小时前
显卡服务器都有哪些功能
运维·服务器·人工智能·科技·智能手机·云计算
QuestLab18 小时前
维护 Hermes Agent CN 过程中的碎碎念,以及从bug上得到的一点点启发
bug
YuanDaima204818 小时前
云计算基础与容器技术演进
java·服务器·人工智能·python·深度学习·云计算·个人开发
容器魔方20 小时前
Kthena 核心原语:ModelServing CRD 如何定义分布式推理“新标准”?
大数据·分布式·云原生·容器·云计算
java修仙传21 小时前
Java 实习日记:一次 Excel 导入校验 Bug 的定位与数据更新逻辑优化
java·数据库·bug·excel·后端开发
当战神遇到编程21 小时前
软件测试基础入门:从 BUG 到测试用例设计完整指南
测试用例·bug
China_Yanhy21 小时前
【云原生 AI 实战(二)】大模型训练的“深水区”:从 Pod 成功拉起到 GPU 性能监控与模型导出
人工智能·云原生·aws
翼龙云_cloud21 小时前
亚马逊云代理商:DeepSeek V4海外使用指南 AWS部署方案
人工智能·云计算·aws·ai智能体·deepseek v4