やろうとしていたこと
Graviton2インスタンスのLambdaで利用するライブラリをLambda Layerに配置すべく、Lambda (Amazon Linux)のイメージを利用してLayer用のzipを作成。
実行環境はタイトルの通りLima + Docker。
コンテナ上でやろうとしたこと
-
workspace
をマウント - マウントしたディレクトリに
nodejs
ディレクトリを作成して、そこでnpm install
-
nodejs
ディレクトリをzip
├── Dockerfile
├── docker-compose.yml
└── workspace
├── lambda-layer.zip
└── nodejs
└── node_modules
起きたこと
npm install
で権限エラー。 (l)chown
が叩けない旨のメッセージが表示される。
実際、マウントしたディレクトリ以下では chown
ができない。
一方、ファイル作成等はでき、書き込み権限やオーナーは問題ない。
原因
chown/chmod on mounted directory: Permission denied #231
回避策
別の場所でインストールして、 zipだけをマウントしたディレクトリに吐き出す
前述の通り権限・オーナーには問題がないので、必要なzipだけを吐き出す。
グローバルインストール (-g
) して、〃
グローバルインストールで権限等の問題が起きる場合は公式を参照。