Template for publishing F# projects to AWS Lambda. Source code originally from this blog post http://lukemerrett.com/fsharp-on-aws-lambda/
The template at the root of this Git repository uses just dotnet core and AWS Lambda Tools.
If you prefer to use Serverless (and simplify the process of deploying & invoking the function) please use the template in the Serverless folder.
- .NET Core SDK Installer
- This contains runtimes v1.0.4 and v1.1.1
- 1.1 isn't currently supported by AWS Lambda
- An AWS Account
The template is already set up as a working, albeit basic, Lambda function. The tool defined in the project.json
file allows us to package the project so it can be used by AWS.
CD into the root directory of the project and run:
dotnet restore
dotnet build
dotnet lambda package --configuration Release --framework netcoreapp1.0
This will output the package zip to bin\Release\netcoreapp1.0\FSharpLambdaTemplate.zip
. When creating the AWS Lambda this is the zip file you will provide.
Log in to AWS Console and choose your region.
Go to Services -> Lambda -> Get Started Now. Here select the Blank Function blueprint, then select no triggers (we'll trigger it ourselves) and click "Next".
The function can then be set up like this, note the selected zip file is the one packaged above:
From here we tell AWS where to find our handler function is. The format of the handler declarion is Assembly::Namespace.ClassName::MethodName
so in our case it is: FSharpLambdaTemplate::AwsLambdaTemplate.Program::handler
Leave everything else as default and click "Next" to go to the Review stage then "Create function".
Once created you can click "Test" on the UI; this will invoke the function.
You should see "Execution result: succeeded(logs)" on the bottom panel.
Clicking "logs" will take you to CloudWatch, then clicking on the latest event you should see tracking of the requests starting and ending, with the output "Hello World!" in the middle.