Я пытаюсь сделать свою первую Go лямбду на AWS:
Мой код прост:
package main
import (
"bufio"
"context"
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
"github.com/confluentinc/confluent-kafka-go/kafka"
"github.com/droundy/goopt"
"os"
"path/filepath"
)
func badUsage() {
fmt.Println(goopt.Usage())
os.Exit(1)
}
func HandleRequest(ctx context.Context, s3Event events.S3Event) {
for _, record := range s3Event.Records {
s3 := record.S3
fmt.Printf("[%s - %s] Bucket = %s, Key = %s \n", record.EventSource, record.EventTime, s3.Bucket.Name, s3.Object.Key)
}
}
func main() {
lambda.Start(HandleRequest)
}
примечание 1: у меня есть некоторые функции, использующие kafka для создания некоторых сообщений в kafka
Я собираю его на своем компьютере:
GOOS=linux GOARCH=amd64 go build -tags static -o goklog producer.go
Но у меня всегда есть такие проблемы, как (в облаке):
error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
РЕДАКТИРОВАТЬ 2:
Я думал, что static_all было нестабильным. Я попробовал, и у меня есть:
➜ goklog git:(master) ✗ GOOS=linux GOARCH=amd64 go build -tags static_all
# github.com/confluentinc/confluent-kafka-go/kafka
/usr/lib/librdkafka.a(rddl.o): In function `rd_dl_open0':
/home/maathor/dev/librdkafka/src/rddl.c:80: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/librdkafka.a(rdaddr.o): In function `rd_getaddrinfo':
/home/maathor/dev/librdkafka/src/rdaddr.c:168: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
# github.com/confluentinc/confluent-kafka-go/kafka
cannot load imported symbols from ELF file $WORK/github.com/confluentinc/confluent-kafka-go/kafka/_obj/_cgo_.o: no symbol section