By using AWS re:Post, you agree to the Terms of Use

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?

asked 8 months ago175 views
2 Answers
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.

answered 7 months ago
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.

answered 7 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions