aws-samples / aws-samples/aws-lambda-elixir-runtime

Runtime.ExitError: Cannot create directory ‘/var/task/var’: Read-only file system

Open
#7 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Elixir
Stars
129
Forks
31
PR merge metrics
No merged PRs in 30d

Description

I've deployed this to Lambda, but I get an error when invoking the function.
It looks like the issue is `mkdir`. How can I change the path.

CloudWatch
```
START RequestId: aa29cf83-7b5f-47a4-947d-4f3db5fdf179 Version: $LATEST
++ dirname /var/task/bootstrap
+ BASE=/var/task
+ EXE=/var/task/bin/hello_world_lambda
+ HOME=/tmp
+ export HOME
+ export RELEASE_READ_ONLY=true
+ RELEASE_READ_ONLY=true
+ export LD_LIBRARY_PATH=/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib:/var/task/lib/elixir_runtime-0.1.0/priv
+ LD_LIBRARY_PATH=/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib:/var/task/lib/elixir_runtime-0.1.0/priv
+ /var/task/bin/hello_world_lambda foreground
mkdir: cannot create directory ‘/var/task/var’: Read-only file system
END RequestId: aa29cf83-7b5f-47a4-947d-4f3db5fdf179
REPORT RequestId: aa29cf83-7b5f-47a4-947d-4f3db5fdf179 Duration: 315.32 ms Billed Duration: 400 ms Memory Size: 128 MB Max Memory Used: 13 MB
RequestId: aa29cf83-7b5f-47a4-947d-4f3db5fdf179 Error: Runtime exited with error: exit status 1
Runtime.ExitError
```

Invoking from CLI
```
aws lambda invoke \
--function-name HelloWorld \
--region eu-north-1 \
--log-type Tail \
--payload '{"msg": "a fake request"}' \
outputfile.txt
```

output.txt
```
> cat outputfile.txt

{"errorType":"Runtime.ExitError","errorMessage":"RequestId: 403e99d9-896d-4541-a913-0c45ac7debac Error: Runtime exited with error: exit status 1"}%
```

hello_world_lambda.ex
```elixir
defmodule HelloWorldLambda do
@moduledoc """
Documentation for HelloWorldLambda.
"""

@doc """
Hello world.

## Examples

iex> HelloWorldLambda.hello()
:world

"""
def hello(request, context) do
"""
Hello World!
Request: #{Kernel.inspect(request)}
Context: #{Kernel.inspect(context)}
"""
|> IO.puts()

:ok
end
end
```

Contributor guide

Open the contributing guide

Research direction

Start with the /var/task/bootstrap entry point and the hello_world_lambda.ex example, then reproduce the aws lambda invoke command while reviewing the logged startup commands. Trace which startup step attempts to create /var/task/var; done means the runtime can be invoked without the read-only filesystem error and the function reaches its normal response path.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, elixir
Domain
backend, cloud
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.