To deploy a Julia program on AWS Lambda currently involves making a custom Docker Image. Recently, Amazon announced the ability to create a Custom Runtime, which lowers the barrier to entry. However, their tutorial is quite lacking and they mostly seem to be partnering with companies?
Does anyone know how difficult it is to make a Custom Runtime? Alternatively, are there any plans to partner with AWS Lambda?
I’ve looked into this a bit; I don’t think it will be too bad to create a julia-based custom runtime, along with “layers” for popular packages. I’ll probably be playing around with creating the julia runtime this week a bit.
I am currently at the AWS London User Group - a report back on re:Invent
The speaker is discussign these custom runtime - GO, Rust, cobol(!) C++
But no mention of Julia. Its a high level overview, so no mention of how hard it is to create a specific one for Julia.
the talk is by Danilo Poccia, Principal Evangelist Serverless, AWS
I will ask if the slides are available.
I talked with Danilo after the meeting, he thinks it should be easy to create a custom runtime for Julia. Not much time to talk, but mentioned a bootstrap process.
I dont know how this would fit in with Julias package structure - maybe we woudl need a different runtime for each mix of packages we need - to be seen when the rubber hits the road of course.
I would be relly interested in hearing more about your (and others’) experiences. I understand you weren’t quite successful in the end @Seanny123? What were the remaining problems? How did it work apart from these?
We got Hello World going, but communication was impossible due to being unable to import Http.jl. It existed. It seemed to be in the expected place, however Julia could not find it.
I’ve been working on this a bit using your code as a start @Seanny123. The main problem I’ve run into is the AWS limit on the size of the zip. The runtime zipped is ~70MB, but AWS requires a max of 50MB. Were you able to shrink the size down any further?
aws lambda publish-layer-version --layer-name julia-runtime --zip-file fileb://packaging/julia-v1.zip
An error occurred (RequestEntityTooLargeException) when calling the PublishLayerVersion operation: Request must be smaller than 69905067 bytes for the PublishLayerVersion operation