目的
AWS Lambda 用のイメージから作成されたコンテナにVSCodeの「Remote - Containers」拡張機能からAttachする際、以下のようなエラーが発生し、接続できませんでした。
tar: command not found
tar (grandchild): gzip: Cannot exec: No such file or directory
その解決方法の備忘録です。
問題
以下のようなDockerfileがあります。
イメージにはAWS公式のリポジトリから取得したpublic.ecr.aws/lambda/python:3.11を使用します。
FROM public.ecr.aws/lambda/python:3.11 as dev
# requirements.txtを使用して関数の依存関係をインストールする。
COPY requirements.txt .
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
# AWS ベースイメージには、環境変数「LAMBDA_TASK_ROOT=/var/task」が含まれています。
COPY app.py ${LAMBDA_TASK_ROOT}
# Dockerイメージ内の実行時のデフォルトコマンドを設定します。
CMD [ "app.handler" ]
このイメージによって作成されたコンテナにVSCodeからAttachする際、冒頭のエラーが発生します。
エラー内容は以下の2つ
・tar コマンドが Docker コンテナ内に存在しない
・tarがgzipを実行できない
解決方法
VSCodeの「Remote - Containers」拡張機能は、コンテナ内部で tar コマンドを使っていくつかの操作を実行します。したがって、このコマンドが利用可能であることが前提となります。
なので、エラー内容に従って不足しているパッケージをインストールすればOK
# tar と gzip パッケージのインストール (VSCodeでの開発に利用します。)
RUN yum install -y tar gzip
まとめ
エラーはよく読みましょう(戒め)