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

参考:

相关推荐
ai小陈1 天前
大模型推理显存不够怎么办?量化、KV Cache与CPU Offload优化实战
大数据·人工智能·ai·云计算·gpu算力
@HNUSTer1 天前
基于 GEE 的 Sentinel-2 多光谱数据实现河流浊度指数(NDTI)遥感监测
云计算·数据集·遥感大数据·gee·云平台·河流浊度(ndti)·水质遥感反演
DolitD1 天前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算
小马同学-1 天前
四、虚拟化技术
运维·云计算
福大大架构师每日一题1 天前
RAGFlow v0.27.1 发布:新增 Azure DevOps、You.com 搜索,修复海量 Bug,性能大幅提升!
bug·azure·devops
树码小子1 天前
测试(6) - bug篇(上)
软件测试·bug
Lifangyun_WD2 天前
第一次租 GPU 服务器怎么开始?镜像、SSH、数据存储和停机前要做什么
服务器·云计算·gpu算力·gpu算力租赁
Huazhongzhanhui2 天前
极智防护与绿色表改:2026中国(武汉)国际表面处理展览会涂装涂料展会前瞻
人工智能·云计算
workflower2 天前
人形机器人灵巧手产业链
人工智能·设计模式·机器人·云计算·无人机
翼龙云_cloud2 天前
阿里云国际渠道代理商:如何在ECS上部署Flask应用?
运维·数据库·阿里云·flask·云计算