Skip to content

Commit 4b200a2

Browse files
committed
Use net6.0 Lambda hosting
1 parent 1d493d0 commit 4b200a2

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

src/Propulsion.DynamoStore.Lambda/Function.fs

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
namespace Propulsion.DynamoStore.Lambda
1+
module Propulsion.DynamoStore.Lambda.Program
22

3-
open Amazon.Lambda.Core
43
open Amazon.Lambda.DynamoDBEvents
4+
open Amazon.Lambda.RuntimeSupport
55
open Equinox.DynamoStore
66
open Propulsion.DynamoStore
77
open Serilog
@@ -67,5 +67,28 @@ type Function() =
6767
.CreateLogger()
6868
let service = DynamoStoreIndexer(log, conn.Context, cache, epochBytesCutoff = epochCutoffMiB * 1024 * 1024) //
6969

70-
member _.FunctionHandler(dynamoEvent : DynamoDBEvent, _context : ILambdaContext) =
71-
DynamoStreamsLambda.ingest log service dynamoEvent |> Async.StartImmediateAsTask
70+
// Warm up (pending https://github.com/aws/aws-lambda-dotnet/pull/1091)
71+
member _.InitAsync() =
72+
service.IngestWithoutConcurrency(AppendsTrancheId.wellKnownId, Array.empty)
73+
74+
member _.Handle(dynamoEvent : DynamoDBEvent) =
75+
DynamoStreamsLambda.ingest log service dynamoEvent
76+
77+
let adaptInit f () =
78+
async {
79+
do! f ()
80+
return true
81+
} |> Async.StartImmediateAsTask
82+
let adaptHandler h x =
83+
h x
84+
|> Async.StartImmediateAsTask
85+
:> System.Threading.Tasks.Task
86+
87+
[<EntryPoint>]
88+
let main _ =
89+
let f = Function()
90+
let serializer = Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer()
91+
let t = LambdaBootstrapBuilder.Create<_>(adaptHandler f.Handle, serializer)
92+
.UseBootstrapHandler(adaptInit f.InitAsync)
93+
.Build().RunAsync().GetAwaiter()
94+
let () = t.GetResult() in 0

src/Propulsion.DynamoStore.Lambda/Propulsion.DynamoStore.Lambda.fsproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
<PackageReference Include="MinVer" Version="4.0.0" PrivateAssets="All" />
2424

2525
<PackageReference Include="Amazon.Lambda.Core" Version="2.1.0" />
26-
<PackageReference Include="Amazon.Lambda.DynamoDBEvents" Version="2.1.0" />
26+
<PackageReference Include="Amazon.Lambda.DynamoDBEvents" Version="2.1.1" />
27+
<PackageReference Include="Amazon.Lambda.RuntimeSupport" Version="1.8.1" />
2728
<PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.3.0" />
29+
<PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" />
2830
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
2931
<ProjectReference Include="..\Propulsion.DynamoStore\Propulsion.DynamoStore.fsproj" />
3032
</ItemGroup>

src/Propulsion.DynamoStore.Lambda/aws-lambda-tools-defaults.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
"function-memory-size": 128,
1313
"function-timeout": 180,
1414
"function-architecture": "arm64",
15-
"function-handler": "Propulsion.DynamoStore.Lambda::Propulsion.DynamoStore.Lambda.Function::FunctionHandler"
15+
"function-handler": "Propulsion.DynamoStore.Lambda"
1616
}

0 commit comments

Comments
 (0)