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

参考:

相关推荐
Benszen9 小时前
云计算基础-13:Linux网络管理实战-1
linux·运维·云计算
吨吨ai16 小时前
# ChatGPT Plus / Pro + Codex Debug 实战:如何让 AI 从日志、Trace、异常堆栈自动定位线上 Bug
人工智能·chatgpt·bug
聚搜云——JuSouClouD16 小时前
广州阿里云代理商:多 Agent 协同异常 三大核心问题解析
网络·阿里云·云计算
酷可达拉斯1 天前
Linux操作系统-升级OpenSSH修复漏洞
linux·运维·服务器·云计算
灰暗世界%1 天前
飞牛bug修复
bug
AAA@峥2 天前
K8s 配置管理实战:ConfigMap 与 Secret 完整使用指南
kubernetes·云计算
zero_70322 天前
第二次作业 实验
网络协议·云计算·ensp
聚搜云——JuSouClouD2 天前
深圳阿里云代理商:OpenTelemetry 统一观测日志指标链路接入实战
阿里云·云计算
workflower3 天前
全球云计算产业发展态势-市场:云计算规模保持稳步增长,产业格局日趋明晰
人工智能·深度学习·机器学习·设计模式·机器人·云计算
皮皮虾❀3 天前
阿里巴巴“千问办公”公测深度解析:企业级Agent如何重塑智能办公
人工智能·阿里云·云计算