Amazon Linux 2027 Is Now in Public Preview, So I Launched It on EC2 to Check It Out
ちょっと話題の記事

Amazon Linux 2027 Is Now in Public Preview, So I Launched It on EC2 to Check It Out

Amazon Linux 2027, successor to Amazon Linux 2023, entered public preview on September 3, 2026. I launched the preview AMI as an EC2 instance in the Tokyo Region and inspected the OS via Session Manager.
2026.09.04

This page has been translated by machine translation. View original

Introduction

On September 3, 2026, the public preview of Amazon Linux 2027 (AL2027) began. AL2027 is the successor to Amazon Linux 2023 (AL2023), and according to the user guide, support will continue until 2032.

https://aws.amazon.com/about-aws/whats-new/2026/09/announcing-amazon-linux-2027/

In this article, I launched an EC2 instance from the AL2027 preview AMI in the Tokyo Region and checked the state of the OS using Session Manager and Run Command. I will look at how the SELinux operating mode, the kernel, and package management appear on a real machine right after launch.

Verification

All measured values in this article were confirmed with the AMI of the 2027.0.20260903.0 generation released as the public preview.

Checking the AMI

First, I searched from the Management Console. When I displayed public images in the AMI list of the EC2 console and filtered by owner and AMI name, four AL2027 preview AMIs were listed.

The EC2 console AMI list shows four al2027 public images

With the AWS CLI describe-images as well, filtering public images by the name al2027-preview-ami-* returned the same four. The standard and minimal editions are each provided for arm64 and x86_64.

Name ImageId Arch BootMode
al2027-preview-ami-2027.0.20260903.0-kernel-7.1-arm64 ami-0905bb8a006ab0c19 arm64 uefi
al2027-preview-ami-2027.0.20260903.0-kernel-7.1-x86_64 ami-0f5feb3d6c72d5f47 x86_64 uefi-preferred
al2027-preview-ami-minimal-2027.0.20260903.0-kernel-7.1-arm64 ami-0d2f76b7d2121f993 arm64 uefi
al2027-preview-ami-minimal-2027.0.20260903.0-kernel-7.1-x86_64 ami-06aea6df44d334ce7 x86_64 uefi-preferred

The creation date and time of all four was 2026-09-02T22:42:20.000Z. The AMI IDs displayed in the console also matched this CLI result.

The AMI IDs can also be obtained from SSM public parameters.

aws ssm get-parameters-by-path \
  --path /aws/service/ami-amazon-linux-latest \
  --query "Parameters[?contains(Name,'al2027')].[Name,Value]" --output text
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-kernel-7.1-arm64	ami-0905bb8a006ab0c19
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-kernel-7.1-x86_64	ami-0f5feb3d6c72d5f47
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-kernel-default-arm64	ami-0905bb8a006ab0c19
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-kernel-default-x86_64	ami-0f5feb3d6c72d5f47
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-minimal-kernel-7.1-arm64	ami-0d2f76b7d2121f993
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-minimal-kernel-7.1-x86_64	ami-06aea6df44d334ce7
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-minimal-kernel-default-arm64	ami-0d2f76b7d2121f993
/aws/service/ami-amazon-linux-latest/al2027-preview-ami-minimal-kernel-default-x86_64	ami-06aea6df44d334ce7

The parameter names have a series that includes the kernel version and a kernel-default series. At present, as long as the architecture and edition (standard/minimal) are the same, both series returned the same AMI ID.

Launch and SSM connection

Specifying the AMI ID obtained from the parameters above, I launched one arm64 standard edition instance. The instance type is t4g.small, and the network is a public subnet in the default VPC. The security group has no inbound rules open. To connect with Session Manager, I specified an existing role with AmazonSSMManagedInstanceCore as the IAM instance profile.

aws ec2 run-instances \
  --image-id ami-0905bb8a006ab0c19 \
  --instance-type t4g.small \
  --iam-instance-profile Name=ec2-ssm-core \
  --subnet-id subnet-xxxxxxxxxxxxxxxxx \
  --security-group-ids sg-xxxxxxxxxxxxxxxxx \
  --metadata-options 'HttpTokens=required' \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=al2027-preview-check}]'

After launch, I polled until it was registered as an SSM managed instance.

2026-09-03T17:31:23Z	None
2026-09-03T17:31:38Z	None
2026-09-03T17:31:54Z	None
2026-09-03T17:32:09Z	Online	Amazon Linux	2027	3.3.5226.0

Registration took 52 seconds. The starting point is the launch time of 17:31:17Z, and the end point is 17:32:09Z, when PingStatus was first observed as Online. Since it was not yet registered at the previous poll at 17:31:54Z, the switch to Online happened after 17:31:54Z and no later than 17:32:09Z. The platform reported by SSM was Amazon Linux 2027, and the SSM Agent version was 3.3.5226.0.

After confirming registration, I used both interactive connection and non-interactive execution. All OS-side output shown in this article was obtained via Run Command.

# 対話接続
aws ssm start-session --target i-xxxxxxxxxxxxxxxxx

# 非対話実行(本記事の出力はこの方法で取得)
aws ssm send-command --instance-ids i-xxxxxxxxxxxxxxxxx \
  --document-name AWS-RunShellScript \
  --parameters commands='["cat /etc/os-release"]'

OS information and SELinux

The OS identity appears in os-release.

NAME="Amazon Linux"
VERSION="2027"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2027"
VARIANT="Public Preview"
VARIANT_ID="preview"
PLATFORM_ID="platform:al2027"
PRETTY_NAME="Amazon Linux 2027.0.20260903"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2027:2027.0.20260903"
HOME_URL="https://aws.amazon.com/linux/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2027"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2026-12-31"

VARIANT and VARIANT_ID indicate that the launched image is the preview version.

The system release string and kernel are as follows.

$ cat /etc/system-release
Amazon Linux release 2027.0.20260903 (Amazon Linux)

$ uname -r
7.1.0-88.111.amzn2027.aarch64

The kernel package name is kernel7.1, not kernel. Searching the installed packages returns kernel7.1-7.1.0-88.111.amzn2027.aarch64, and kernel7.1-tools is also installed.

SELinux was running in enforcing mode by default.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      35

The configuration file side was also enforcing, and there were 426 loaded policy modules. Searching the audit log for recent AVCs found no matches, and the result was the same when I rechecked after adding gcc and compiling, described later.

Package management

Let's start with the parts that seem to have changed from AL2023. The versions of the main components right after launch are as follows.

Component Measured value
kernel kernel7.1-7.1.0-88.111.amzn2027.aarch64
glibc glibc-2.44-2.amzn2027.0.2 (ldd shows GNU libc 2.44)
systemd systemd 260 (260.1-11.amzn2027.0.6)
RPM RPM version 6.0.0
DNF dnf5 5.4.2.1 (libdnf5 5.4.2.1)
Python Python 3.14.7 (/usr/bin/python3 is a link to python3.14)
OpenSSL OpenSSL 3.5.7 9 Jun 2026
AWS-LC aws-lc-libs-5.2.0-2.amzn2027
zlib zlib-ng-compat-2.3.3-1.amzn2027 (zlib itself is absent)
PCRE pcre2-10.47-1.amzn2027.0.1 (PCRE1 is absent)
cloud-init cloud-init-26.1-250.amzn2027.0.5
SSM Agent amazon-ssm-agent-3.3.5226.0-1.amzn2027
AWS CLI awscli-2-2.36.2-1.amzn2027.0.1
bash bash-5.3.0-2.amzn2027
curl curl 8.18.0 (linked with OpenSSL 3.5.7 and zlib-ng)

There were 335 installed packages. The standard edition AMI does not include a build environment, and no language runtimes other than Python were installed. gcc, binutils, git, perl, ruby, node, java, go, rustc, php, and dotnet were all not installed.

Package management has moved to DNF5. dnf and yum are symbolic links to dnf5.

$ ls -l /usr/bin/dnf /usr/bin/yum /usr/bin/dnf5
lrwxrwxrwx. 1 root root       4 Aug 31 00:00 /usr/bin/dnf -> dnf5
-rwxr-xr-x. 1 root root 1541400 Aug 31 00:00 /usr/bin/dnf5
lrwxrwxrwx. 1 root root       4 Aug 31 00:00 /usr/bin/yum -> dnf5

$ python3 -c "import dnf"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import dnf
ModuleNotFoundError: No module named 'dnf'

Because python3-dnf, the Python API for DNF4, is not installed, importing dnf from Python fails. python3-libdnf5 on the DNF5 side was also not installed by default.

The scope of support during the preview period can be checked with a dnf subcommand.

$ dnf supportinfo --pkg glibc
Name                         : glibc
Version                      : 2.44-2.amzn2027.0.2
State                        : installed
Current Status               : Supported
Patch Priority               : Full Support
Support Level Description    : Full security and bug fix support for all severities
Covered Severities           : Low, Medium, Important, Critical
Origin                       : Amazon Linux 2027 Core
Support Timeline             : from 2026-09-03     : supported (Low, Medium, Important, Critical)
                             : from 2027-03-31     : unsupported
Package Note                 : Amazon Linux will support this package until the end of the AL2027 public preview period

The output shows unsupported from 2027-03-31 onward, and the package note also states the condition of lasting until the end of the public preview period. The kernel also becomes unsupported on the same date, and in the list of installed packages, all rows had the same date and note.

There was only one enabled repository, and all auto-update timers were disabled.

Repository definition and auto-update status
[amazonlinux]
name=Amazon Linux 2027 repository
mirrorlist=https://al2027-repos-$awsregion-7f9a3b4e.s3$dualstack.$awsregion.$awsdomain/core/mirrors/$releasever/$basearch/$mirrorlist
priority=10
enabled=1
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2027
report_instanceid=1

The source and debuginfo repositories are disabled. Version locking is handled by the amazon-linux-repo-s3-2027.0.20260903-0.amzn2027 package, and no releasever variable file is placed.

When I checked for updates right after launch, not a single candidate was returned. The AMI and the repository are at the same version. The auto-update-related dnf-makecache.timer, systemd-sysupdate.timer, and update-motd.timer were all disabled.

Since no build environment is included, you also have to install the compiler yourself. The gcc I additionally installed was 16.1.1, and the default C standard was C23.

Additional installation of gcc and GCC 16 defaults

Looking at the package information while it was not yet installed, gcc was 16.1.1-1.amzn2027.0.1 and binutils was 2.46-3.amzn2027.0.1. The installation downloaded 10 packages totaling 62.1 MiB, and in this run it finished in 10.126 seconds.

$ gcc --version
gcc (GCC) 16.1.1 20260501 (Red Hat 16.1.1-1)

$ echo | gcc -dM -E -x c - | grep -E "__STDC_VERSION__|__GNUC__ "
#define __GNUC__ 16
#define __STDC_VERSION__ 202311L

On the arm64 environment, the target defaults were -mabi=lp64 and -march=armv8.2-a+crypto. Compiling and running hello world also worked, and the output was hello AL2027 16.1.1 20260501 (Red Hat 16.1.1-1).

systemd and SSH

The SysV compatibility mechanism was gone without a trace. There was no systemd-sysv-generator in the list of systemd generators; only the cloud-init generator, the SELinux automatic relabel, the standard systemd generators, and the zram generator were present. The /etc/rc.d directory for runlevels, chkconfig, and service were all not found. For network management, systemd-networkd is enabled, and NetworkManager was not-found.

The default SSH configuration is composed via drop-ins. Four files were placed in /etc/ssh/sshd_config.d/. 10-amazon-hardening.conf is hardening by Amazon, and 40-redhat-crypto-policies.conf is the integration with the Red Hat-derived crypto policies. 50-cloud-init.conf is for cloud-init, and 50-redhat.conf is Red Hat's default configuration.

# /etc/ssh/sshd_config.d/10-amazon-hardening.conf(コメント行を除く)
PermitRootLogin no
X11Forwarding no
GSSAPIAuthentication no
KerberosAuthentication no
IgnoreRhosts yes
HostbasedAuthentication no
RekeyLimit 512M 1h

The comments in 10-amazon-hardening.conf give the AL-PDR "AL2027: Harden SSH and login security defaults" as a reference name. They also include an explanation that the design takes advantage of sshd adopting the first value it obtains, so that it takes precedence over subsequent drop-ins.

In the effective values, the only enabled authentication method was public key authentication. Root login, password authentication, and keyboard-interactive authentication were all disabled. Reverse lookup is not performed, and the login grace time was 120 seconds. The first three key exchange algorithms are hybrid methods with post-quantum cryptography: mlkem768x25519-sha256, mlkem768nistp256-sha256, and mlkem1024nistp384-sha384.

Note that the update-crypto-policies command itself, which switches the crypto policy, is not installed. However, 40-redhat-crypto-policies.conf does Include /etc/crypto-policies/back-ends/opensshserver.config.

I also checked the default target.

$ systemctl get-default
graphical.target

It was graphical.target. The table of differences from AL2023 in the AL2027 documentation does not mention the default target, and I did not measure the AL2023 side in this article.

The total boot time was 43.442 seconds, broken down into firmware 1.578 seconds, loader 2.990 seconds, kernel 247 milliseconds, initrd 6.840 seconds, and userspace 31.787 seconds. The unit that took the longest on a per-unit basis was the device unit for the EBS volume, at 20.170 seconds. There were no errors at boot, and the error-priority journal entries and failed units were both 0.

cloud-init reached done, but its state was degraded.

$ cloud-init status --long
status: done
extended_status: degraded done
boot_status_code: enabled-by-generator
last_update: Thu, 01 Jan 1970 00:00:33 +0000
detail: DataSourceEc2
errors: []
recoverable_errors:
WARNING:
	- Failed loading yaml blob. Invalid format at line 7 column 2: "while scanning for the next token found character '%' that cannot start any token   in "<unicode string>", line 7, column 2:     {% set meta_data = (ds | default( ...       ^"

There were no fatal errors, and four WARNINGs with the same content were recorded as recoverable warnings (the output above is an excerpt of one of the four). The last update time is displayed as January 1, 1970. Totaling cloud-init's processing time gave 2.438 seconds in total for one boot record.

Since the checks were finished, I deleted the instance.

aws ec2 terminate-instances --instance-ids i-xxxxxxxxxxxxxxxxx

I confirmed terminated about 80 seconds later, after running and shutting-down. The root EBS volume was gone because the delete-on-termination option was enabled, and a search for volumes attached to the instance returned 0. I used an existing IAM role, VPC, and security group, so I left them as they are.

Summary

AL2027, the first major version in four years, has been released as a public preview. It can be launched as an EC2 instance in the Tokyo Region as well, and I was able to confirm, in a development environment and the like, the absence of SysV compatibility and the updates to major packages such as GCC and the kernel.

Because it is currently a public preview, it is not suitable for production use, but I would like to keep an eye on the future developments of AL2027, the successor to AL2023.

Share this article

AWSのお困り事はクラスメソッドへ