Does Lambda not support multi-architecture container images / manifests?

1

I have utilised docker buildx and CodeBuild to build my docker image with multiple architectures. However if I try to use the parent manifest image, which should select the correct architecture based on the host OS, I cannot create my Lambda. I get the error stating

The image manifest or layer media type for the source image <imageECRdetailsHere> is not supported.

However, if I specifically chose the image created for said architecture it will work. I feel that this is a failing of Lambda Container images as one of the key points of having a manifest with multiple architectures is that I do not need to be specific about the image / platform when pulling the image.

Am I missing something here, or is this currently completely unsupported by AWS Lambda?

The image manifest matches the docker v2 specification, and works when pulling the image locally, and both work by forcing the --platform option. Is this a bug, a missing feature or just blatantly not supported? The Lambda documentation states images that meet the manifest specifications are supported, but it appears that does not extend to manifest lists which are supported by the Docker image manifest V2, schema 2, which is supposed to be supported.

1 Answer
2

As of this writing, AWS Lambda does not yet support multi-arch container images. It only supports single-image manifests, and the image architecture must match the compute architecture:

You create each container image to be compatible with one of the instruction set architectures that Lambda supports. Lambda provides base images for each of the instruction set architectures and Lambda also provides base images that support both architectures.

The image that you build for your function must target only one of the architectures.

See the documentation for details.

AWS
EXPERT
answered 2 years ago
  • Hi Michael,

    Don't you know if there are any plans to add support for multi-architecture container images/manifest to Lambda?

    I've been searching in https://github.com/aws/containers-roadmap, but Lambda features are unfortunately not included there.

    We have quite a nice use case for multi-arch image deployment: Our Lambda image is pulled-through-cache from public ECR repository. But as actual (latest) image in this public repository is only multi-architecture, we have to use single-architecture images, which are tied to specific commits and consequently, we are losing automatic updates of the image via pulling with pull-through-cache AWS feature.

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