[アップデート]Lambdaのランタイムにカスタムランタイム on Amazon Linux2が利用できるようになりました

2020.08.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

CX事業本部@大阪の岩田です。

これまでLambdaのカスタムランタイムはAmazon Linux上で動作していましたが、追加の選択肢としてAmazon Linux2上でのカスタムランタイムが選択可能になりました。

マネコンから確認するとこんな感じで選択肢が増えています Amazon Linux2が増えました!

カスタムランタイムとは?

Lambdaでは標準のランタイムとして

  • Node.js(10.x, 12.x)
  • Python(2.7, 3.6 ,3.7, 3.8)
  • Java(8, 8 Corret, 11 Correto)
  • Go(1.x)
  • .NET Core(2.1 C#/Power Shell)
  • Ruby(2.5)

といったランタイムが選択可能ですが、カスタムランタイムという機能を利用することで上記意外の言語もLambdaの基盤上で動作させることができます。

こちらのブログでも紹介されているように、カスタムランタイムを利用すると、COBOLを始めとしてLamdba上で様々なプログラミング言語を動作させることが可能です(使い物になるかは別として...)。

これまでカスタムランタイムの実行基盤はAmazon Linux一択だったのですが、今回のアップデートによりAmazon Linux2の上で任意のコードが実行可能になりました。

何が嬉しいの?

Amazon Linux2はEC2上でのパフォーマンスが最適化されるようにカーネルが調整されています。Lambdaの基盤はベアメタルのEC2とFirecrackerが基本になるので、Lambda環境でもパフォーマンス向上の恩恵が期待できそうです。また、Amazon Linux の EOL は2020年12月31日までとなっていますので、今後新しくカスタムランタイムによるLambdaを実装する場合はAmazon Linux2を選択するべきでしょう。

やってみる

では、実際にカスタムランタイム on Amazon Linux2を利用してみましょう。こちらのブログを参考にカスタムランタイム on Amazon Linux2でシェルスクリプトを実行してみます。

bootstrapの中身はそのまま流用し、function.shの中身を色々と変更しながら実行してみます。

uname -a

function.shの中身をuname -aに変更して実行してみました。

Linux 169.254.160.133 4.14.177-104.253.amzn2.x86_64 #1 SMP Fri May 1 02:01:13 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Amazon Linuxの場合はこちら

Linux 169.254.129.229 4.14.177-104.253.amzn2.x86_64 #1 SMP Fri May 1 02:01:13 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

あれ?なぜか4.14.177-104.253.amzn2.x86_64になりますね。ドキュメントに記載されているAmazon Linux2のカーネルバージョン4.14.165-102.205.amzn2.x86_64とも異なります。Firecrackerより下のレイヤで動いているベアメタルEC2インスタンすのカーネルバージョンが表示されているとかでしょうか?また今度深堀りして調べてみたいと思います。

https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html

cat /etc/os-release

今度はcat /etc/os-releaseを試してみました。

Amazon Linux2の場合の結果です

NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
VARIANT_ID="202006241417-al2.409.0"

Amazon Linuxの場合はこちら

NAME="Amazon Linux AMI"
VERSION="2018.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2018.03"
PRETTY_NAME="Amazon Linux AMI 2018.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2018.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
VARIANT_ID="202006241410-al2018.03.363.0"

rpm -qa | sort

今度はrpm -qa | sortを実行してみました。

Amazon Linux2の場合はこちら

basesystem-10.0-7.amzn2.0.1.noarch
bash-4.2.46-33.amzn2.x86_64
bzip2-libs-1.0.6-13.amzn2.0.2.x86_64
ca-certificates-2019.2.32-76.amzn2.0.2.noarch
chkconfig-1.7.4-1.amzn2.0.2.x86_64
coreutils-8.22-24.amzn2.x86_64
curl-7.61.1-12.amzn2.0.1.x86_64
cyrus-sasl-lib-2.1.26-23.amzn2.x86_64
elfutils-libelf-0.176-2.amzn2.x86_64
expat-2.1.0-10.amzn2.0.2.x86_64
filesystem-3.2-25.amzn2.0.4.x86_64
findutils-4.5.11-6.amzn2.x86_64
gawk-4.0.2-4.amzn2.1.2.x86_64
glibc-2.26-34.amzn2.x86_64
glibc-all-langpacks-2.26-34.amzn2.x86_64
glibc-common-2.26-34.amzn2.x86_64
glibc-minimal-langpack-2.26-34.amzn2.x86_64
gmp-6.0.0-15.amzn2.0.2.x86_64
gpg-pubkey-c87f5b1a-593863f8
grep-2.20-3.amzn2.0.2.x86_64
info-5.1-5.amzn2.x86_64
keyutils-libs-1.5.8-3.amzn2.0.2.x86_64
krb5-libs-1.15.1-37.amzn2.2.2.x86_64
libacl-2.2.51-14.amzn2.x86_64
libattr-2.4.46-12.amzn2.0.2.x86_64
libcap-2.22-9.amzn2.0.2.x86_64
libcom_err-1.42.9-12.amzn2.0.2.x86_64
libcrypt-2.26-34.amzn2.x86_64
libcurl-7.61.1-12.amzn2.0.1.x86_64
libdb-5.3.21-24.amzn2.0.3.x86_64
libdb-utils-5.3.21-24.amzn2.0.3.x86_64
libffi-3.0.13-18.amzn2.0.2.x86_64
libgcc-7.3.1-6.amzn2.0.4.x86_64
libicu-50.2-4.amzn2.x86_64
libidn2-2.3.0-1.amzn2.x86_64
libmetalink-0.1.2-7.amzn2.0.2.x86_64
libnghttp2-1.39.2-1.amzn2.x86_64
libselinux-2.5-12.amzn2.0.2.x86_64
libsepol-2.5-8.1.amzn2.0.2.x86_64
libssh2-1.4.3-12.amzn2.2.2.x86_64
libstdc++-7.3.1-6.amzn2.0.4.x86_64
libtasn1-4.10-1.amzn2.0.2.x86_64
libunistring-0.9.3-9.amzn2.0.2.x86_64
libverto-0.2.5-4.amzn2.0.2.x86_64
lua-5.1.4-15.amzn2.0.2.x86_64
ncurses-6.0-8.20170212.amzn2.1.3.x86_64
ncurses-base-6.0-8.20170212.amzn2.1.3.noarch
ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64
nspr-4.21.0-1.amzn2.0.2.x86_64
nss-3.44.0-7.amzn2.x86_64
nss-pem-1.0.3-5.amzn2.x86_64
nss-softokn-3.44.0-8.amzn2.x86_64
nss-softokn-freebl-3.44.0-8.amzn2.x86_64
nss-sysinit-3.44.0-7.amzn2.x86_64
nss-tools-3.44.0-7.amzn2.x86_64
nss-util-3.44.0-4.amzn2.x86_64
openldap-2.4.44-15.amzn2.x86_64
openssl-libs-1.0.2k-19.amzn2.0.3.x86_64
p11-kit-0.23.5-3.amzn2.0.2.x86_64
p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64
pcre-8.32-17.amzn2.0.2.x86_64
popt-1.13-16.amzn2.0.2.x86_64
readline-6.2-10.amzn2.0.2.x86_64
rpm-4.11.3-40.amzn2.0.4.x86_64
rpm-libs-4.11.3-40.amzn2.0.4.x86_64
sed-4.2.2-5.amzn2.0.2.x86_64
setup-2.8.71-10.amzn2.0.1.noarch
sqlite-3.7.17-8.amzn2.1.1.x86_64
system-release-2-11.amzn2.x86_64
tzdata-2019c-1.amzn2.noarch
xz-libs-5.2.2-1.amzn2.0.2.x86_64
zlib-1.2.7-18.amzn2.x86_64

導入済のパケージはかなり少ない印象です。

Amazon Linuxの場合はこちら

alsa-lib-1.0.22-3.9.amzn1.x86_64
audit-libs-2.6.5-3.28.amzn1.x86_64
avahi-libs-0.6.25-12.17.amzn1.x86_64
basesystem-10.0-4.9.amzn1.noarch
bash-4.2.46-28.37.amzn1.x86_64
binutils-2.25.1-31.base.66.amzn1.x86_64
bzip2-1.0.6-8.12.amzn1.x86_64
bzip2-libs-1.0.6-8.12.amzn1.x86_64
ca-certificates-2018.2.22-65.1.22.amzn1.noarch
cairo-1.12.14-6.8.amzn1.x86_64
chkconfig-1.3.49.3-2.14.amzn1.x86_64
compat-gmp4-4.3.2-1.14.amzn1.x86_64
copy-jdk-configs-3.3-10.3.amzn1.noarch
coreutils-8.22-15.52.amzn1.x86_64
cpio-2.10-12.12.amzn1.x86_64
cracklib-2.8.16-4.14.amzn1.x86_64
cracklib-dicts-2.8.16-4.14.amzn1.x86_64
cups-libs-1.4.2-67.21.amzn1.x86_64
curl-7.61.1-12.93.amzn1.x86_64
cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64
db4-4.7.25-18.11.amzn1.x86_64
db4-utils-4.7.25-18.11.amzn1.x86_64
dbus-libs-1.6.12-14.29.amzn1.x86_64
dejavu-fonts-common-2.33-6.6.amzn1.noarch
dejavu-sans-fonts-2.33-6.6.amzn1.noarch
dejavu-serif-fonts-2.33-6.6.amzn1.noarch
diffutils-3.3-4.15.amzn1.x86_64
elfutils-libelf-0.168-8.19.amzn1.x86_64
expat-2.1.0-11.22.amzn1.x86_64
file-5.37-8.49.amzn1.x86_64
file-libs-5.37-8.49.amzn1.x86_64
filesystem-2.4.30-3.8.amzn1.x86_64
findutils-4.4.2-6.9.amzn1.x86_64
fontconfig-2.8.0-5.8.amzn1.x86_64
fontpackages-filesystem-1.41-1.1.2.amzn1.noarch
freetype-2.3.11-19.15.amzn1.x86_64
gawk-3.1.7-10.10.amzn1.x86_64
gdbm-1.8.0-36.6.amzn1.x86_64
ghostscript-fonts-5.50-23.2.7.amzn1.noarch
giflib-4.1.6-3.1.6.amzn1.x86_64
glib2-2.36.3-5.21.amzn1.x86_64
glibc-2.17-292.180.amzn1.x86_64
glibc-common-2.17-292.180.amzn1.x86_64
gmp-6.0.0-11.16.amzn1.x86_64
gnupg2-2.0.28-2.33.amzn1.x86_64
gnutls-2.12.23-21.18.amzn1.x86_64
gpgme-1.4.3-5.15.amzn1.x86_64
gpg-pubkey-21c0f39f-56d0e29a
grep-2.20-3.18.amzn1.x86_64
groff-base-1.22.2-8.11.amzn1.x86_64
gzip-1.5-9.19.amzn1.x86_64
hwdata-0.233-14.1.19.amzn1.noarch
ImageMagick-6.7.8.9-15.21.amzn1.x86_64
info-5.1-4.10.amzn1.x86_64
jasper-libs-1.900.1-21.9.amzn1.x86_64
java-1.8.0-openjdk-1.8.0.201.b09-0.43.amzn1.x86_64
java-1.8.0-openjdk-headless-1.8.0.201.b09-0.43.amzn1.x86_64
javapackages-tools-0.9.1-1.5.amzn1.noarch
jbigkit-libs-2.0-11.4.amzn1.x86_64
jpackage-utils-1.7.5-27.17.amzn1.noarch
keyutils-libs-1.5.8-3.12.amzn1.x86_64
kmod-14-10.10.amzn1.x86_64
kmod-libs-14-10.10.amzn1.x86_64
krb5-libs-1.15.1-46.48.amzn1.x86_64
lcms2-2.6-2.5.amzn1.x86_64
libacl-2.2.49-6.11.amzn1.x86_64
libassuan-2.0.3-3.3.amzn1.x86_64
libattr-2.4.46-12.10.amzn1.x86_64
libblkid-2.23.2-59.29.amzn1.x86_64
libcap-2.16-5.5.8.amzn1.x86_64
libcap-ng-0.7.5-4.15.amzn1.x86_64
libcom_err-1.43.5-2.43.amzn1.x86_64
libcurl-7.61.1-12.93.amzn1.x86_64
libdrm-2.4.82-1.14.amzn1.x86_64
libffi-3.0.13-16.5.amzn1.x86_64
libfontenc-1.0.5-2.6.amzn1.x86_64
libgcc72-7.2.1-2.59.amzn1.x86_64
libgcrypt-1.5.3-12.19.amzn1.x86_64
libglvnd-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64
libglvnd-glx-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64
libgomp-6.4.1-1.45.amzn1.x86_64
libgpg-error-1.11-1.12.amzn1.x86_64
libICE-1.0.6-1.4.amzn1.x86_64
libicu-50.2-4.0.amzn1.x86_64
libidn2-2.3.0-1.4.amzn1.x86_64
libjpeg-turbo-1.2.90-8.16.amzn1.x86_64
libmount-2.23.2-59.29.amzn1.x86_64
libnghttp2-1.31.1-2.5.amzn1.x86_64
libpciaccess-0.13.1-4.1.11.amzn1.x86_64
libpng-1.2.49-2.14.amzn1.x86_64
libpsl-0.6.2-1.2.amzn1.x86_64
libpwquality-1.2.3-4.8.amzn1.x86_64
libselinux-2.1.10-3.22.amzn1.x86_64
libsepol-2.1.7-3.12.amzn1.x86_64
libSM-1.2.1-2.6.amzn1.x86_64
libsmartcols-2.23.2-59.29.amzn1.x86_64
libssh2-1.4.2-3.12.amzn1.x86_64
libstdc++72-7.2.1-2.59.amzn1.x86_64
libtasn1-2.3-6.6.amzn1.x86_64
libtiff-4.0.3-32.34.amzn1.x86_64
libtool-ltdl-2.4.2-20.4.8.5.32.amzn1.x86_64
libudev-173-4.13.amzn1.x86_64
libunistring-0.9.3-6.1.amzn1.x86_64
libuser-0.60-7.23.amzn1.x86_64
libutempter-1.1.5-4.1.6.amzn1.x86_64
libuuid-2.23.2-59.29.amzn1.x86_64
libverto-0.2.5-4.9.amzn1.x86_64
libwmf-lite-0.2.8.4-41.13.amzn1.x86_64
libX11-1.6.0-2.2.12.amzn1.x86_64
libX11-common-1.6.0-2.2.12.amzn1.x86_64
libXau-1.0.6-4.9.amzn1.x86_64
libxcb-1.11-2.21.amzn1.x86_64
libXcomposite-0.4.3-4.6.amzn1.x86_64
libXdamage-1.1.3-4.7.amzn1.x86_64
libXext-1.3.2-2.1.10.amzn1.x86_64
libXfixes-5.0.1-2.1.8.amzn1.x86_64
libXfont-1.4.5-5.12.amzn1.x86_64
libXi-1.7.2-2.2.9.amzn1.x86_64
libxml2-2.9.1-6.3.52.amzn1.x86_64
libXrender-0.9.8-2.1.9.amzn1.x86_64
libxshmfence-1.2-1.4.amzn1.x86_64
libxslt-1.1.28-5.13.amzn1.x86_64
libXt-1.1.4-6.1.9.amzn1.x86_64
libXtst-1.2.2-2.1.9.amzn1.x86_64
libXxf86vm-1.1.3-2.1.9.amzn1.x86_64
lksctp-tools-1.0.10-7.7.amzn1.x86_64
lua-5.1.4-4.1.9.amzn1.x86_64
make-3.82-21.10.amzn1.x86_64
mesa-dri-drivers-17.1.5-2.41.amzn1.x86_64
mesa-filesystem-17.1.5-2.41.amzn1.x86_64
mesa-libGL-17.1.5-2.41.amzn1.x86_64
mesa-libglapi-17.1.5-2.41.amzn1.x86_64
ncurses-5.7-4.20090207.14.amzn1.x86_64
ncurses-base-5.7-4.20090207.14.amzn1.x86_64
ncurses-libs-5.7-4.20090207.14.amzn1.x86_64
nspr-4.21.0-1.43.amzn1.x86_64
nss-3.44.0-7.84.amzn1.x86_64
nss-pem-1.0.3-4.3.amzn1.x86_64
nss-softokn-3.44.0-8.44.amzn1.x86_64
nss-softokn-freebl-3.44.0-8.44.amzn1.x86_64
nss-sysinit-3.44.0-7.84.amzn1.x86_64
nss-tools-3.44.0-7.84.amzn1.x86_64
nss-util-3.44.0-4.56.amzn1.x86_64
openldap-2.4.40-16.31.amzn1.x86_64
openssl-1.0.2k-16.151.amzn1.x86_64
p11-kit-0.18.5-2.3.amzn1.x86_64
p11-kit-trust-0.18.5-2.3.amzn1.x86_64
pam-1.1.8-12.33.amzn1.x86_64
patch-2.7.1-12.14.amzn1.x86_64
pcre-8.21-7.8.amzn1.x86_64
perl-5.16.3-294.43.amzn1.x86_64
perl-Carp-1.26-244.5.amzn1.noarch
perl-constant-1.27-2.5.amzn1.noarch
perl-Encode-2.51-7.5.amzn1.x86_64
perl-Exporter-5.68-3.5.amzn1.noarch
perl-File-Path-2.09-2.5.amzn1.noarch
perl-File-Temp-0.23.01-3.5.amzn1.noarch
perl-Filter-1.49-3.5.amzn1.x86_64
perl-Getopt-Long-2.40-3.6.amzn1.noarch
perl-HTTP-Tiny-0.033-3.6.amzn1.noarch
perl-libs-5.16.3-294.43.amzn1.x86_64
perl-macros-5.16.3-294.43.amzn1.x86_64
perl-parent-0.225-244.5.amzn1.noarch
perl-PathTools-3.40-5.5.amzn1.x86_64
perl-Pod-Escapes-1.04-294.43.amzn1.noarch
perl-podlators-2.5.1-3.8.amzn1.noarch
perl-Pod-Perldoc-3.20-4.7.amzn1.noarch
perl-Pod-Simple-3.28-4.6.amzn1.noarch
perl-Pod-Usage-1.63-3.5.amzn1.noarch
perl-Scalar-List-Utils-1.27-248.5.amzn1.x86_64
perl-Socket-2.010-3.5.amzn1.x86_64
perl-Storable-2.45-3.5.amzn1.x86_64
perl-Text-ParseWords-3.29-4.5.amzn1.noarch
perl-threads-1.87-4.5.amzn1.x86_64
perl-threads-shared-1.43-6.5.amzn1.x86_64
perl-Time-HiRes-1.9725-272.5.amzn1.x86_64
perl-Time-Local-1.2300-2.5.amzn1.noarch
pinentry-0.7.6-6.11.amzn1.x86_64
pixman-0.32.4-4.11.amzn1.x86_64
pkgconfig-0.27.1-2.7.amzn1.x86_64
popt-1.13-7.7.amzn1.x86_64
procps-3.2.8-45.16.amzn1.x86_64
psmisc-22.20-8.12.amzn1.x86_64
pth-2.0.7-9.3.7.amzn1.x86_64
python27-2.7.18-1.137.amzn1.x86_64
python27-iniparse-0.3.1-2.1.9.amzn1.noarch
python27-libs-2.7.18-1.137.amzn1.x86_64
python27-pycurl-7.19.0-17.12.amzn1.x86_64
python27-pygpgme-0.3-9.12.amzn1.x86_64
python27-pyliblzma-0.5.3-11.6.amzn1.x86_64
python27-pyxattr-0.5.0-1.6.amzn1.x86_64
python27-urlgrabber-3.10-8.16.amzn1.noarch
python36-3.6.10-1.16.amzn1.x86_64
python36-libs-3.6.10-1.16.amzn1.x86_64
python36-pip-9.0.3-1.27.amzn1.noarch
python36-setuptools-36.2.7-1.33.amzn1.noarch
readline-6.2-9.14.amzn1.x86_64
rpm-4.11.3-40.76.amzn1.x86_64
rpm-build-libs-4.11.3-40.76.amzn1.x86_64
rpm-libs-4.11.3-40.76.amzn1.x86_64
rpm-python27-4.11.3-40.76.amzn1.x86_64
sed-4.2.1-10.10.amzn1.x86_64
setup-2.8.14-20.12.amzn1.noarch
shadow-utils-4.1.4.2-13.10.amzn1.x86_64
shared-mime-info-1.1-9.8.amzn1.x86_64
sqlite-3.7.17-8.14.amzn1.x86_64
sysctl-defaults-1.0-1.1.amzn1.noarch
system-release-2018.03-0.0.noarch
tar-1.26-31.22.amzn1.x86_64
ttmkfdir-3.0.9-32.1.5.amzn1.x86_64
tzdata-2019c-1.73.amzn1.noarch
tzdata-java-2019c-1.73.amzn1.noarch
unzip-6.0-4.10.amzn1.x86_64
urw-fonts-2.4-10.7.amzn1.noarch
util-linux-2.23.2-59.29.amzn1.x86_64
which-2.19-6.10.amzn1.x86_64
xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch
xorg-x11-font-utils-7.2-11.5.amzn1.x86_64
xz-5.2.2-1.13.amzn1.x86_64
xz-libs-5.2.2-1.13.amzn1.x86_64
yum-3.4.3-150.71.amzn1.noarch
yum-metadata-parser-1.1.4-10.20.amzn1.x86_64
yum-plugin-ovl-1.1.31-46.30.amzn1.noarch
yum-plugin-priorities-1.1.31-46.30.amzn1.noarch
zlib-1.2.8-7.18.amzn1.x86_64

ls /bin | sort

続いてls /bin | sortの実行結果です。まずAmazon Linux2

alias
arch
awk
base64
basename
bash
bashbug
bashbug-64
bg
ca-legacy
captoinfo
cat
catchsegv
cd
certutil
chcon
chgrp
chmod
chown
cksum
clear
cmsutil
comm
command
cp
crlutil
csplit
curl
cut
date
db_archive
db_checkpoint
db_deadlock
db_dump
db_dump185
db_hotbackup
db_load
db_log_verify
db_printlog
db_recover
db_replicate
db_stat
db_tuner
db_upgrade
db_verify
dd
df
dgawk
dir
dircolors
dirname
du
echo
egrep
env
expand
expr
factor
false
fc
fg
fgrep
find
fmt
fold
gawk
gencat
getconf
getent
getopts
grep
groups
head
hostid
iconv
id
igawk
info
infocmp
infokey
infotocap
install
jobs
join
ldd
link
ln
locale
localedef
logname
ls
lua
luac
makedb
md5sum
mkdir
mkfifo
mknod
mktemp
modutil
mv
nice
nl
nohup
nproc
nss-policy-check
numfmt
od
oldfind
p11-kit
paste
pathchk
pgawk
pinky
pk12util
pldd
pr
printenv
printf
ptx
pwd
read
readlink
realpath
reset
rm
rmdir
rpcgen
rpm
rpm2cpio
rpmdb
rpmkeys
rpmquery
rpmverify
runcon
sed
seq
setup-nsssysinit
setup-nsssysinit.sh
sh
sha1sum
sha224sum
sha256sum
sha384sum
sha512sum
shred
shuf
signver
sleep
sort
sotruss
split
sprof
sqlite3
ssltap
stat
stdbuf
stty
sum
sync
tabs
tac
tail
tee
test
tic
timeout
toe
touch
tput
tr
true
truncate
trust
tset
tsort
tty
tzselect
umask
unalias
uname
unexpand
uniq
unlink
update-ca-trust
users
vdir
wait
wc
who
whoami
xargs
xmlwf
yes

続いてAmazon Linux

arch
awk
basename
bash
cat
chgrp
chmod
chown
cp
cpio
cut
date
dd
df
dmesg
echo
egrep
env
false
fgrep
find
findmnt
gawk
grep
gtar
gunzip
gzip
kill
link
ln
login
ls
lsblk
mkdir
mknod
mktemp
more
mv
nice
ps
pwd
raw
readlink
rm
rmdir
rpm
sed
sh
sleep
sort
stty
sync
tar
taskset
touch
true
uname
unlink
zcat

結構差異がありますね。カスタムランタイムを使ってシェルスクリプトを実行しているようなケースでは注意が必要そうです。

ls /sbin | sort

最後にls /sbin | sortの実行結果です。Amazon Linux2の場合

alternatives
build-locale-archive
capsh
chkconfig
chroot
getcap
getpcaps
glibc_post_upgrade.x86_64
iconvconfig
iconvconfig.x86_64
install-info
ldconfig
sasldblistusers2
saslpasswd2
sefcontext_compile
setcap
sln
update-alternatives
zdump
zic

Amazon Linuxの場合

addpart
agetty
blkdiscard
blkid
blockdev
cfdisk
chcpu
chkconfig
clock
ctrlaltdel
delpart
depmod
faillock
fdisk
findfs
fsck
fsck.cramfs
fsfreeze
fstrim
fuser
hwclock
insmod
install-info
ldconfig
losetup
lsmod
mkfs
mkfs.cramfs
mkhomedir_helper
mkswap
modinfo
modprobe
nologin
pam_console_apply
pam_tally2
partx
pivot_root
pwhistory_helper
rmmod
runuser
sfdisk
sln
swapoff
swapon
switch_root
sysctl
unix_update
weak-modules
wipefs

こちらも結構差異があるので、注意が必要そうですね。

まとめ

カスタムランタイムに関するアップデートのご紹介でした。/binや/sbinの配下が結構変わっていたりと、Lambdaの実装次第では単純に移行できないケースがあるかもしれません。Amazon Linux2だとデフォルトで利用できないOSコマンドを使ってLambdaを実装しているケースなどは、実行ファイルを自前で用意してレイヤーに組み込む等の工夫が必要になりますので、Amazon Linux2に移行する影響を評価しつつ、計画的に移行を進めていきましょう。