Repository: floci-io/floci (2026-03-24T06:47:04Z)

Issue:
[BUG] Lambda Ruby runtimes not supported
 ## Service

  Lambda

  ## AWS API Action

  CreateFunction, UpdateFunctionConfiguration

  ## Expected behavior

  Lambda functions with Ruby runtimes are created and invoked successfully, using
  the `public.ecr.aws/lambda/ruby:{version}` container image.

  ## Actual behavior

  Function creation or invocation fails because no container image is resolved for
  the Ruby runtime identifier. The error is typically:

  Unable to find image for runtime: ruby3.2

  ## Reproduction

  ```bash
  aws --endpoint-url http://localhost:4566 lambda create-function \
    --function-name my-ruby-fn \
    --runtime ruby3.3 \
    --role arn:aws:iam::000000000000:role/lambda-role \
    --handler lambda_function.lambda_handler \
    --zip-file fileb://function.zip

  Environment

  - Floci version / image tag: latest
  - How you're running Floci (Docker / native / mvn quarkus:dev): Docker


Discussion:
 Hi @tomhall-inst! The fix is in — ImageResolver now maps ruby3.2 and ruby3.3 to their ECR images.

Could you give it a try against your setup and let me know if it resolves the issue? A PR is on its way. Thanks for the report!




Patch:
diff --git a/src/main/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolver.java b/src/main/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolver.java
index 20506ec8..5f7e1cfc 100644
--- a/src/main/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolver.java
+++ b/src/main/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolver.java
@@ -24,6 +24,8 @@ public class ImageResolver {
             Map.entry("nodejs22.x", "public.ecr.aws/lambda/nodejs:22"),
             Map.entry("nodejs20.x", "public.ecr.aws/lambda/nodejs:20"),
             Map.entry("nodejs18.x", "public.ecr.aws/lambda/nodejs:18"),
+            Map.entry("ruby3.3", "public.ecr.aws/lambda/ruby:3.3"),
+            Map.entry("ruby3.2", "public.ecr.aws/lambda/ruby:3.2"),
             Map.entry("provided.al2023", "public.ecr.aws/lambda/provided:al2023"),
             Map.entry("provided.al2", "public.ecr.aws/lambda/provided:al2")
     );


Test patch:
diff --git a/src/test/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolverTest.java b/src/test/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolverTest.java
index 6d771485..d0a02dcb 100644
--- a/src/test/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolverTest.java
+++ b/src/test/java/io/github/hectorvent/floci/services/lambda/launcher/ImageResolverTest.java
@@ -24,6 +24,8 @@ class ImageResolverTest {
             "nodejs22.x, public.ecr.aws/lambda/nodejs:22",
             "nodejs20.x, public.ecr.aws/lambda/nodejs:20",
             "nodejs18.x, public.ecr.aws/lambda/nodejs:18",
+            "ruby3.3, public.ecr.aws/lambda/ruby:3.3",
+            "ruby3.2, public.ecr.aws/lambda/ruby:3.2",
             "provided.al2023, public.ecr.aws/lambda/provided:al2023",
             "provided.al2, public.ecr.aws/lambda/provided:al2"
     })