Lambda function from container - Missing Parent Directory

0

I've a built a container image that I'm able to execute locally. The container works well with aws-lambda-rie.

However, when trying to create lambda function in the console with it, I encounter:

"Failed to create the function xxxxxx : MissingParentDirectory: Parent directory does not exist for file: ./usr/share/doc/ca-certificates/copyright"

The folder exists on the container. What could be causing this error? Are there other undocumented requirements for containers to be lambda compatible?

已提問 2 年前檢視次數 791 次
2 個答案
0

In our case the same error was seemingly caused by the missing directory entries in the image filesystem. You can verify their presence by first doing docker export to tar file:

docker image ls
# find out the image you need
docker create --name="image-export" <your-image-here>
docker export "image-export" > "image-export.tar"
docker rm "image-export"

and then listing its contents via tar tf image-export.tar. The example ouput below contains directory entries (lines ending with "/")

app/
app/app.bin
bin/
bin/bash
bin/cat

The image having those lines in tar tf output was working properly on Lambda while the image that haven't had them failed with error message similar to what you've encountered.

vz
已回答 2 年前
0

We tracked down the issue to distroless - https://github.com/GoogleContainerTools/distroless/blob/3cfaaa01d9e53c2cd17b9fba8e3877981f5b4349/cacerts/cacerts.bzl#L31

Tar layer created with a file under /usr/share/doc/ca-certificates/copyright but without including empty folders for the tree structure leading up to it /usr, /usr/share, ... etc was causing the issue.

已回答 2 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南