Categorygithub.com/fujiwara/lambda-extensions
repositorypackage
0.0.7
Repository: https://github.com/fujiwara/lambda-extensions.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

lambda-extensions

lambda-extensions is a library for AWS Lambda Extensions API.

Usage

Register an external extension

package main

import (
    "context"
    "log"

    extensions "github.com/fujiwara/lambda-extensions"
)

func main() {
    ctx, cancel := context.WithCancel(context.Background())
    defer cancel()
    client, _ := extensions.NewClient()
    client.CallbackInvoke = func (ctx context.Context, event *extensions.InvokeEvent) error {
        log.Printf("invoke event: %v", event)
        // do something on invoke event
        return nil
    }
    client.CallbackShutdown = func (ctx context.Context, event *extensions.ShutdownEvent) error {
        log.Printf("shutdown event: %v", event)
        // do something on shutdown event
        cancel()
        return nil
    }
    if err := client.Register(ctx); err != nil {
        log.Fatal(err)
    }
    if err := client.Run(ctx); err != nil {
        log.Fatal(err)
    }
}

Subscribe to Telemetry API

package main

import (
    "context"
    "log"

    extensions "github.com/fujiwara/lambda-extensions"
)

func main() {
    ctx, cancel := context.WithCancel(context.Background())
    defer cancel()

    go func () {
       // run http server listening on 9999 for receiving telemetry data
    }()

    client, _ := extensions.NewClient()
    client.CallbackShutdown = func (ctx context.Context, event *extensions.ShutdownEvent) error {
        log.Printf("shutdown event: %v", event)
        // do something
        stopHttpServer() // stop your http server
        return nil
    }
    if err := client.Register(ctx); err != nil {
        log.Fatal(err)
    }
    sub := &extensions.TelemetrySubscription{
		SchemaVersion: "2022-12-13",
		Types:         []string{"function", "platform"},
		Buffering: extensions.TelemetryBuffering{
			MaxItems:  500,
			MaxBytes:  1024 * 1024,
			TimeoutMs: 1000,
		},
		Destination: extensions.TelemetryDestination{
			Protocol: "HTTP",
			URI:      "http://sandbox.localdomain:9999",
		},
	}
    if err := client.SubscribeTelemetry(ctx, sub); err != nil {
        log.Fatal(err)
    }
    if err := client.Run(ctx); err != nil {
        log.Fatal(err)
    }
}

LICENSE

MIT

Author

fujiwara