Amazon Web Services 한국 블로그
Amazon Linux 2023 – 클라우드에 최적화된 Linux 배포판 출시 (장기 지원 제공)
Amazon Linux 2023(AL2023)의 상용 출시를 발표하게 되어 기쁩니다. AWS는 2010년부터 클라우드에 최적화된 Linux 배포판을 제공해왔습니다. 이 배포판은 3세대 Amazon Linux 배포판입니다.
모든 세대의 Amazon Linux 배포판은 보안이 적용되고 클라우드에 최적화되며 장기적인 AWS 지원을 받습니다. 이러한 원칙에 따라 Amazon Linux 2023을 구축했으며 기능을 더욱 개선하고 있습니다. Amazon Linux 2023에 워크로드를 배포하면 세 가지 주요 이점, 즉 엄격한 보안 표준, 예측 가능한 수명 주기 및 일관된 업데이트 경험을 얻을 수 있습니다.
먼저 보안에 대해 살펴보겠습니다. Amazon Linux 2023에는 일반적인 업계 지침을 손쉽게 구현할 수 있도록 사전 구성된 보안 정책이 포함되어 있습니다. 시작 시 또는 런타임에 이러한 정책을 구성할 수 있습니다.
예를 들어 시스템 전체에서 특정 암호화 스위트 세트, TLS 버전 또는 인증서와 키 교환에서 허용되는 파라미터를 사용하도록 시스템 암호화 정책을 구성할 수 있습니다. 또한 Linux 커널에는 기본적으로 많은 강화 기능이 활성화되어 있습니다.
Amazon Linux 2023을 사용하면 운영 체제 수명 주기를 더 쉽게 계획하고 관리할 수 있습니다. 새로운 Amazon Linux 메이저 버전은 2년마다 출시될 예정입니다. 주요 릴리스에는 스택 전반의 보안 및 성능을 강화하는 새로운 기능과 개선 사항이 포함됩니다. 개선 사항에는 커널, 도구 체인, GLib C, OpenSSL 및 기타 시스템 라이브러리와 유틸리티에 대한 주요 변경 사항이 포함될 수 있습니다.
2년의 수명 주기 동안 메이저 릴리스에는 3개월마다 업데이트가 적용됩니다. 이러한 업데이트에는 보안 업데이트, 버그 수정, 새로운 기능 및 패키지가 포함됩니다. 각 마이너 버전은 새로운 기능 및 패키지 외에 보안 및 버그 수정도 포함된 누적 업데이트 목록입니다. 이러한 릴리스에는 Python 또는 Java와 같은 최신 언어 런타임이 포함될 수 있습니다. 여기에는 Ansible 및 도커와 같은 다른 인기 소프트웨어 패키지도 포함될 수 있습니다. 이러한 분기별 업데이트 외에, 보안 업데이트도 릴리스되는 즉시 제공됩니다.
2023을 비롯한 각 메이저 버전에는 5년간의 장기 지원이 제공됩니다. 각 메이저 버전의 경우 처음 2년이 지나면 3년의 유지 관리 기간이 시작됩니다. 유지 관리 기간 동안에는 계속 보안 버그 수정 및 패치가 릴리스되는 즉시 제공됩니다. 이러한 지원 약속은 긴 프로젝트 수명 주기를 관리하는 데 요구되는 안정성을 제공합니다.
다음 다이어그램은 Amazon Linux 배포판의 수명 주기를 보여줍니다.
마지막으로, 제가 개인적으로 가장 좋아하는 정책인데, Amazon Linux는 유연하고 일관된 업데이트 메커니즘인 버전이 지정된 리포지토리를 통해 결정적 업데이트를 제공합니다. 이 배포판은 Amazon Linux 패키지 리포지토리의 특정 버전에 고정되므로 업데이트를 적용하는 방법과 시기를 제어할 수 있습니다.
Amazon Linux 2와 달리, 기본적으로 dnf update
명령은 설치된 패키지를 업데이트하지 않습니다(dnf
는 yum
을 대체하는 명령). 따라서 플릿 전체에서 항상 동일한 패키지 버전이 사용됩니다. Amazon Machine Image(AMI)에서 실행되는 모든 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에는 동일한 버전의 패키지가 있습니다. 또한 결정적 업데이트는 배포 후 인프라가 업데이트되지 않는 변경 불가능한 인프라의 사용을 지원합니다.
업데이트가 필요한 경우 코드형 인프라 스크립트로 업데이트하고 새 인프라를 재배포합니다. 물론 배포판을 업데이트하려는 경우 dnf
에서 업데이트된 패키지 리포지토리를 지정하고 종전처럼 컴퓨터를 업데이트할 수 있습니다. 하지만 이는 프로덕션 워크로드에 적합한 방법이 아닙니다. 자세한 기술 정보는 이 블로그 게시물의 뒷부분에서 설명하겠습니다.
시작하기
Amazon Linux 2023을 시작하는 방법은 다른 Linux 배포판과 다르지 않습니다. EC2 run-instances
API, AWS Command Line Interface(AWS CLI) 또는 AWS Management Console과 저희가 제공하는 네 가지 Amazon Linux 2023 AMI 중 하나를 사용할 수 있습니다. 두 가지 시스템 아키텍처(x86_64 및 Arm)와 두 가지 크기(표준 및 최소)를 지원합니다. 최소 AMI에는 OS를 시작하는 데 필요한 가장 기본적인 도구와 유틸리티가 포함되어 있습니다. 표준 버전에는 가장 일반적으로 사용되는 애플리케이션과 도구가 설치되어 있습니다.
특정 리전의 최신 AMI ID를 검색하려면 AWS Systems Manager get-parameter
API를 사용하여 /aws/service/ami-amazon-linux-latest/<alias>
파라미터를 쿼리하면 됩니다.
이때 반드시 <alias>
를 사용 가능한 다음 네 가지 별칭 중 하나로 바꾸어야 합니다.
- arm64 아키텍처(표준 AMI)의 경우:
al2023-ami-kernel-default-arm64
- arm64 아키텍처(최소 AMI)의 경우:
al2023-ami-minimal-kernel-default-arm64
- x86_64 아키텍처(표준 AMI)의 경우:
al2023-ami-kernel-default-x86_64
- x86_64 아키텍처(최소 AMI)의 경우:
al2023-ami-minimal-kernel-default-x86_64
예를 들어 최신 Arm64 정식 배포판 AMI ID를 검색하려면 터미널을 열고 다음을 입력합니다.
~ aws ssm get-parameters --region us-east-2 --names /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64
{
"Parameters": [
{
"Name": "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64",
"Type": "String",
"Value": "ami-02f9b41a7af31dded",
"Version": 1,
"LastModifiedDate": "2023-02-24T22:54:56.940000+01:00",
"ARN": "arn:aws:ssm:us-east-2::parameter/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64",
"DataType": "text"
}
],
"InvalidParameters": []
}
인스턴스를 시작하려면 run-instances
API를 사용합니다. Systems Manager 확인 기능을 사용하여 CLI에서 AMI ID를 동적으로 조회하는 방법을 여기서 살펴볼 수 있습니다.
➜ aws ec2 run-instances \
--image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64 \
--key-name my_ssh_key_name \
--instance-type c6g.medium \
--region us-east-2
{
"Groups": [],
"Instances": [
{
"AmiLaunchIndex": 0,
"ImageId": "ami-02f9b41a7af31dded",
"InstanceId": "i-0740fe8e23f903bd2",
"InstanceType": "c6g.medium",
"KeyName": "my_ssh_key_name",
"LaunchTime": "2023-02-28T14:12:34+00:00",
...(redacted for brevity)
}
인스턴스가 시작되고 연결된 보안 그룹이 SSH(TCP 22) 연결을 허용할 경우 시스템에 연결할 수 있습니다.
~ ssh ec2-user@3.145.19.213
경고: 알려진 호스트 목록에 '3.145.19.213'(ED25519)을 영구적으로 추가했습니다.
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\ Preview
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Tue Feb 28 14:14:44 2023 from 81.49.148.9
[ec2-user@ip-172-31-9-76 ~]$ uname -a
Linux ip-172-31-9-76.us-east-2.compute.internal 6.1.12-19.43.amzn2023.aarch64 #1 SMP Thu Feb 23 23:37:18 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
또한 Amazon Linux 2023을 도커 이미지로 배포합니다. Amazon Linux 2023 컨테이너 이미지는 Amazon Linux 2023 AMI에 포함된 것과 동일한 소프트웨어 구성 요소로 구축되었습니다. 이 컨테이너 이미지는 어떤 환경에서든 도커 워크로드의 기본 이미지로 사용할 수 있습니다. EC2의 애플리케이션에서 Amazon Linux를 사용하는 경우 Amazon Linux 컨테이너 이미지를 사용하여 애플리케이션을 컨테이너화할 수 있습니다.
이러한 이미지는 Amazon Elastic Container Registry(Amazon ECR) 및 Docker Hub에서 사용할 수 있습니다. 다음은 Elastic Container Registry에서 Amazon Linux 2023을 사용하여 도커 컨테이너를 시작하는 간단한 데모입니다.
$ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Login Succeeded
~ docker run --rm -it public.ecr.aws/amazonlinux/amazonlinux:2023 /bin/bash
Unable to find image 'public.ecr.aws/amazonlinux/amazonlinux:2023' locally
2023: Pulling from amazonlinux/amazonlinux
b4265814d5cf: Pull complete
Digest: sha256:bbd7a578cff9d2aeaaedf75eb66d99176311b8e3930c0430a22e0a2d6c47d823
Status: Downloaded newer image for public.ecr.aws/amazonlinux/amazonlinux:2023
bash-5.2# uname -a
Linux 9d5b45e9f895 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
bash-5.2# exit
Docker Hub에서 가져올 때는 docker pull amazonlinux:2023
명령을 사용하여 이미지를 가져올 수 있습니다.
Amazon Linux 2와 비교했을 때 가장 큰 차이점은 무엇입니까?
Amazon Linux 2023은 Amazon Linux 2와 몇 가지 차이점이 있습니다. 이러한 차이점은 설명서에 자세히 설명되어 있습니다. 여기서 주목해야 할 두 가지 차이점은 dnf
와 패키지 관리 정책입니다.
AL2023에는 yum
의 후속 버전인 Fedora’s dnf
가 함께 제공됩니다. 하지만 dnf
는 패키지를 검색, 설치 또는 제거할 수 있는 yum
과 유사한 명령을 제공하므로 쉽게 사용할 수 있습니다. 종전에 yum list
또는 yum install httpd
명령을 실행하던 위치에서 이제 dnf list
또는 dnf install httpd
명령을 실행하면 됩니다. 여기서는 편의상, 스크립트를 수정하지 않고 실행할 수 있도록 /usr/bin/yum
에 대한 심볼릭 링크를 생성해보겠습니다.
$ which yum
/usr/bin/yum
$ ls -al /usr/bin/yum
lrwxrwxrwx. 1 root root 5 Jun 19 18:06 /usr/bin/yum -> dnf-3
제 생각에 가장 큰 차이점은 버전이 지정된 리포지토리를 통한 결정적 업데이트입니다. 기본적으로 소프트웨어 리포지토리는 AMI 버전으로 고정됩니다. 즉, dnf update
명령은 설치할 새 패키지를 반환하지 않습니다. 버전이 지정된 리포지토리를 사용하면 동일한 AMI ID에서 시작한 모든 시스템이 항상 동일하게 됩니다. 즉, 인프라가 기준선에서 벗어나지 않습니다.
$ sudo dnf update
Last metadata expiration check: 0:14:10 ago on Tue Feb 28 14:12:50 2023.
Dependencies resolved.
Nothing to do.
Complete!
그런데 시스템을 업데이트하려면 어떻게 해야 할까요? 기존 시스템을 업데이트하는 두 가지 옵션이 있습니다. 프로덕션 환경에 가장 적합한 방법은 새 AMI를 기반으로 중복 인프라를 생성하는 것입니다. 앞서 말씀드린 것처럼 저희는 최초 릴리스 이후 2년 동안 3개월마다 모든 보안 수정 사항에 대한 업데이트와 통합 업데이트를 게시합니다. 각 업데이트는 AMI 세트와 해당 소프트웨어 리포지토리로 제공됩니다.
테스트 또는 개발 시스템과 같은 소규모 인프라의 경우 운영 체제 또는 개별 패키지도 업데이트하도록 선택할 수 있습니다. 이 프로세스는 3단계로 진행됩니다.
- 먼저 사용 가능한 업데이트 소프트웨어 리포지토리를 나열합니다.
- 다음으로,
dnf
에서 특정 소프트웨어 리포지토리를 지정합니다. - 마지막으로, 패키지를 업데이트합니다.
작동 방식을 보여드리기 위해, 저는 의도적으로 2023년 2월부터 Amazon Linux 2023의 ‘이전’ 버전을 사용하는 EC2 인스턴스를 시작했습니다. 먼저 dnf check-release-update
를 실행하여 사용 가능한 업데이트 소프트웨어 리포지토리를 나열합니다.
$ dnf check-release-update
WARNING:
A newer release of "Amazon Linux" is available.
Available Versions:
Version 2023.0.20230308:
Run the following command to upgrade to 2023.0.20230308:
dnf upgrade --releasever=2023.0.20230308
Release notes:
https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html
그런 다음 dnf upgrade --releasever=2023.0.20230308
을 사용하여 전체 배포판을 업데이트하거나 dnf
에서 업데이트된 리포지토리를 지정하여 개별 패키지를 선택할 수 있습니다.
$ dnf check-update --releasever=2023.0.20230308
Amazon Linux 2023 repository 28 MB/s | 11 MB 00:00
Amazon Linux 2023 Kernel Livepatch repository 1.2 kB/s | 243 B 00:00
amazon-linux-repo-s3.noarch 2023.0.20230308-0.amzn2023 amazonlinux
binutils.aarch64 2.39-6.amzn2023.0.5 amazonlinux
ca-certificates.noarch 2023.2.60-1.0.amzn2023.0.1 amazonlinux
(redacted for brevity)
util-linux-core.aarch64 2.37.4-1.amzn2022.0.1 amazonlinux
마지막으로, dnf update <package_name>
명령을 실행하여 특정 패키지를 업데이트할 수 있습니다.
단순한 시스템의 경우에는 과한 것처럼 보일 수 있지만, 엔터프라이즈 인프라 또는 대규모 인스턴스 플릿을 관리할 때는 모든 인스턴스에서 동일한 버전의 소프트웨어 패키지를 실행하도록 해야 플릿을 관리하기가 쉽습니다. 또한 이제 배포를 위해 CI/CD 파이프라인을 통해 AMI ID를 완전히 실행할 수 있으며 일정에 따라 AMI 버전을 롤백하거나 롤포워드할 수 있습니다.
Fedora는 어디에 있나요?
Amazon Linux 2023의 출발점이 될 기반을 찾고 있었던 당시, Fedora가 최선의 선택이었습니다. Fedora의 핵심 원칙(자유, 친구, 특징, 최초)이 Amazon Linux에 대한 우리의 비전에 잘 부합한다는 것을 알게 되었습니다. 하지만 Amazon Linux는 장기적이고 안정적인 클라우드용 OS를 제공하는 데 초점을 맞추고 있으며, Amazon Linux의 릴리스 주기 및 수명 주기는 Fedora와 큰 차이가 있습니다. Amazon Linux 2023은 오픈 소스 소프트웨어의 업데이트된 버전을 통해, 훨씬 다양한 패키지와 빈번한 릴리스를 제공합니다.
Amazon Linux 2023은 특정 Fedora 릴리스와 직접 비교할 수 없습니다. Amazon Linux 2023 GA 버전에는 Fedora 34, 35, 36 구성 요소가 포함되어 있습니다. 일부 구성 요소는 Fedora의 구성 요소와 동일하고 일부는 수정되었습니다. 다른 구성 요소는 CentOS Stream 9 구성 요소와 더 유사하거나 독립적으로 개발되었습니다. Amazon Linux 커널은 the long-term support options that are on kernel.org에서 소싱된 것으로, Fedora에서 제공하는 커널과는 별개로 선택되었습니다.
오픈 소스 커뮤니티의 선량한 다른 구성원과 마찬가지로, 저희는 전체 커뮤니티의 이익을 위해 업스트림 배포판과 소스에 대한 변경 사항을 다시 제공하고 오픈 소스의 발전에 기여합니다. Amazon Linux 2023 자체는 오픈 소스입니다. 우리가 제공하는 바이너리를 빌드하는 데 사용되는 모든 RPM 패키지의 소스 코드는 SRPM yum 리포지토리를 통해 사용할 수 있습니다(sudo dnf install -y 'dnf-command(download)' && dnf download --source bash
).
추가 정보: Amazon EBS Gp3 볼륨
Amazon Linux 2023 AMI는 기본적으로 gp3 볼륨을 사용합니다.
Gp3는 Amazon Elastic Block Store(Amazon EBS)에 사용되는 최신 범용 솔리드 스테이트 드라이브(SSD) 볼륨입니다. Gp3는 gp2에 비해 스토리지 비용이 20% 더 낮습니다. Gp3 볼륨은 모든 볼륨 크기에서 3,000 IOPS와 초당 125MB의 기준 성능을 제공합니다. gp3 볼륨의 특히 마음에 드는 점은 이제 용량과 관계없이 성능을 프로비저닝할 수 있다는 것입니다. gp3 볼륨을 사용하면 이제 실제로 필요하지 않은 추가 용량에 대해 요금을 지불하지 않고도 IOPS와 처리량을 늘릴 수 있습니다.
gp3 기반 AL2023 AMI를 사용할 수 있게 되면서, 이제 처음으로 gp3 기반 Amazon Linux AMI를 사용할 수 있게 되었습니다. GP3 기반 AMI는 2020년에 gp3가 출시된 이래로 고객이 자주 요청해왔습니다. 이제 이 AMI를 기본적으로 사용할 수 있습니다.
요금 및 가용성
Amazon Linux 2023은 추가 요금 없이 제공됩니다. EC2 인스턴스 및 기타 서비스를 실행하는 경우 표준 Amazon EC2 및 AWS 요금이 적용됩니다. 이 배포판에는 5년간의 정식 지원이 포함되어 있습니다. AWS에서 배포하면 지원 엔지니어가 AWS Support 플랜의 약관에 따라 기술 지원을 제공합니다. AMI는 모든 AWS 리전에서 사용할 수 있습니다.
Amazon Linux는 AWS에서 가장 많이 사용되는 Linux 배포판으로, 수십만 고객이 Amazon Linux 2를 사용하고 있습니다. 현재 수십 개의 독립 소프트웨어 개발 판매 회사(ISV)와 하드웨어 파트너가 Amazon Linux 2023을 지원하고 있습니다. 따라서 신뢰할 수 있는 파트너 도구가 지원될 가능성이 높다는 확신을 가지고 이 새 버전을 도입할 수 있습니다. 더욱 강화된 보안, 예측 가능한 릴리스 수명 주기, 일관된 업데이트 경험을 제공하는 이번 릴리스를 자랑스럽게 여러분께 소개합니다.