AWS Linux 3世代
AWSが独自に提供しているLinux OSが3世代あります。
- Amazon Linux 1 (2023年 EOL)
- Amazon Linux 2 (2025年 EOL)
- Amazon Linux 2023 (latest)
「Amazon Linux 3」のような単純な名称にならず良かった
「Amazon Linux 2」と「Amazon Linux 2023」がどちらが最新かな?と最初は疑問があった。
Amazon Linux 2023
ベースとなるOSがRedHatからFedoraへ変更したため、パッケージ管理ツールもyumからdnfへ変更になりました。
しかし、yumコマンドはそのまま使えます。dnfへのポインターとして生きています。
これからパッケージ管理ツールを勉強することなら、dnfを使いましょう。
AWS Linux 2023 と Fargate for Amazon ECS
AWS ECS
Amazon ECSは、Dockerコンテナを管理するためのフルマネージドサービスです。
EC2起動タイプとFargate起動タイプの2種類があります。
EC2起動タイプ
利用者が自分でサーバリソースを管理するタイプです。
サーバを作成する際に利用可能なAmazon Machine Image (AMI)として、Amazone Linux 2023を選択できます。
Fargate起動タイプ
以下の記事から見ると、AWS Linux 2023がサポートされていないし、今後サポートされる計画もないです。(Bottlerocketを採用する可能性が高い)
[ECS] [request]: Support Amazon Linux 2023 for underlying hosts on Fargate
Fargateタイプ + Amazon Linux 2023
AWS Fargateでは、Amazon Linux 2023をコンテナのベースイメージとして使用できます?
答え:できます。
コンテナのベースイメージとは
Dockerfileに記載される「FROM ...」のことです。
基本的なファイルシステムのテンプレートで、コンテナアプリケーションが依存するOSやライブラリを含んでいます。ホストOSの依存性がないです。
コンテナ構成
① AWS Fargate基盤で利用するOS
② ベースイメージが入っている。AWS Fargate基盤上稼働するコンテナに利用される。
①と②は別々のものです。
①には、Amazon Linux 2023を利用できないが、
②には、自分が作成するアプリケーション次第です。
おまけ
Node.js Docker Imageのベースイメージが有償サポートなしのalpinであり、商用した際に社内のルールに引っ掛かったため、Amazon Linux 2023でベースイメージを作成しました。
Dockerfileの一部が以下の通りです。
FROM amazonlinux:2023.6.20241010.0
RUN yum update -y && \
curl -fsSL https://rpm.nodesource.com/setup_20.x | bash && \
yum install -y nodejs
RUN yum install shadow-utils -y \
&& groupadd -r node -g 1000 \
&& useradd -u 1000 -r -g node -m -d /opt/node -s /bin/sh -c "node user" node