MCPcopy Create free account
hub / github.com/aws-samples/aws-lambda-extensions / main

Function main

go-example-telemetry-api-extension/main.go:34–106  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

32var l = log.WithFields(log.Fields{"pkg": "main"})
33
34func main() {
35 l.Info("[main] Starting the Telemetry API extension")
36 extensionName := path.Base(os.Args[0])
37
38 ctx, cancel := context.WithCancel(context.Background())
39 sigs := make(chan os.Signal, 1)
40 signal.Notify(sigs, syscall.SIGTERM, syscall.SIGINT)
41 go func() {
42 s := <-sigs
43 cancel()
44 l.Info("[main] Received", s)
45 l.Info("[main] Exiting")
46 }()
47
48 // Step 1 - Register the extension with Extensions API
49 l.Info("[main] Registering extension")
50 extensionApiClient := extensionApi.NewClient()
51 extensionId, err := extensionApiClient.Register(ctx, extensionName)
52 if err != nil {
53 panic(err)
54 }
55 l.Info("[main] Registation success with extensionId", extensionId)
56
57 // Step 2 - Start the local http listener which will receive data from Telemetry API
58 l.Info("[main] Starting the Telemetry listener")
59 telemetryListener := telemetryApi.NewTelemetryApiListener()
60 telemetryListenerUri, err := telemetryListener.Start()
61 if err != nil {
62 panic(err)
63 }
64
65 // Step 3 - Subscribe the listener to Telemetry API
66 l.Info("[main] Subscribing to the Telemetry API")
67 telemetryApiClient := telemetryApi.NewClient()
68 _, err = telemetryApiClient.Subscribe(ctx, extensionId, telemetryListenerUri)
69 if err != nil {
70 panic(err)
71 }
72 l.Info("[main] Subscription success")
73
74 dispatcher := telemetryApi.NewDispatcher()
75
76 // Will block until invoke or shutdown event is received or cancelled via the context.
77 for {
78 select {
79 case <-ctx.Done():
80 return
81 default:
82 l.Info("[main] Waiting for next event...")
83
84 // This is a blocking action
85 res, err := extensionApiClient.NextEvent(ctx)
86 if err != nil {
87 l.Error("[main] Exiting. Error:", err)
88 return
89 }
90
91 // Dispatching log events from previous invocations

Callers

nothing calls this directly

Calls 7

RegisterMethod · 0.95
StartMethod · 0.95
SubscribeMethod · 0.95
NextEventMethod · 0.95
DispatchMethod · 0.95
handleInvokeFunction · 0.70
handleShutdownFunction · 0.70

Tested by

no test coverage detected