alpine で AWS CLI v2 を使おうとしたら地味に嵌り、 結果、有名な(?) glibc 問題だったというオチでした。
結論
公式がイメージを配布しているので、そちらを使いましょう。 (CLI用のentrypointになっているので、必要に応じてオーバーライド)
もしくはサポートしているディストリビューションのイメージへインストールしましょう。
Linux での AWS CLI バージョン 2 のインストール - AWS Command Line Interface
CentOS、Fedora、Ubuntu、Amazon Linux 1、および Amazon Linux 2 の最近のディストリビューションで AWS CLI バージョン 2 がサポートされます。
alpineへ不足ライブラリを入れる事でも実現可能ですが、拘り無いなら上記2点で良いのかなと思います。
経緯
alpine へ公式ドキュメント通りにインストール。
一部略してますが、buildのログは以下のような感じに、
Successfully となってはいます。
Step 1/3 : FROM python:3.8-alpine Step 2/3 : RUN apk --update --no-cache add curl Step 3/3 : RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install Archive: awscliv2.zip creating: aws/ creating: aws/dist/ ・・・略 inflating: aws/dist/botocore/data/comprehendmedical/2018-10-30/paginators-1.json ./aws/install: line 78: /aws/dist/aws: not found You can now run: /usr/local/bin/aws --version Successfully built xxxxxxxxxxxxx
コンテナの中身を見てみると、ファイル自体は存在し、パスも通っているが、実行時に not found
となる。
/ # which aws /usr/local/bin/aws / # aws --version sh: aws: not found / # /usr/local/bin/aws sh: /usr/local/bin/aws: not found / # ls -l /usr/local/bin/aws lrwxrwxrwx 1 root root 37 May 3 05:44 /usr/local/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws / # ls -l /usr/local/aws-cli/v2/current/bin/aws lrwxrwxrwx 1 root root 11 May 3 05:44 /usr/local/aws-cli/v2/current/bin/aws -> ../dist/aws / # ls -l /usr/local/aws-cli/v2/dist/aws -rwxr-xr-x 1 root root 4099736 May 3 05:44 /usr/local/aws-cli/v2/dist/aws / #
原因
AWS CLI v2 は glibc を使用するが、alpine は glibc でなく musl-libc を使っているため、単純にインストールするだけでは動作しない。