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?

demandé il y a 2 ans790 vues
2 réponses
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
répondu il y a 2 ans
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.

répondu il y a 2 ans

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions