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?

preguntada hace 2 años790 visualizaciones
2 Respuestas
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
respondido hace 2 años
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.

respondido hace 2 años

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas