Нет такого файла или каталога, загружающего libssl.so.1.0.0 - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь сделать свою первую 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

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Я предлагаю собирать ваш лямбда-пакет на одном из лямбда-подобных образов докера, например, https://github.com/lambci/docker-lambda.

Таким образом, ваша встроенная librdkafka будет зависеть от тех же библиотек, которые доступны на целевом хосте lambda.

0 голосов
/ 24 августа 2018

Это потому, что вы используете пакет "github.com/confluentinc/confluent-kafka-go/kafka". Для этого требуются библиотеки librdkafka C, которые на месте предполагают, что у вас есть определенные библиотеки - например, библиотека libssl - доступные на вашем компьютере (см. Страницу в ссылке в разделе «Требования»).

...