Библиотеки, примеры и инструменты, которые помогут разработчикам Go разрабатывать функции AWS Lambda.
Чтобы узнать больше о написании функций AWS Lambda на Go, перейдите в официальную документацию.
// main.gopackage mainimport( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Hello λ!", nil}func main() { // Сделать обработчик, доступный для удаленного вызова процедур с помощью AWS Lambdalambda.Start(привет) }
Для подготовки двоичного файла к развертыванию в AWS Lambda необходимо, чтобы он был скомпилирован для Linux и помещен в ZIP-файл. При использовании среды выполнения provided
, provided.al2
или provided.al2023
исполняемый файл в ZIP-файле должен называться bootstrap
. Архитектура Lambda по умолчанию — x86_64
, поэтому при кросс-компиляции из среды, отличной от x86, исполняемый файл должен быть собран с помощью GOARCH=amd64
. Аналогично, если функция Lambda будет настроена на использование ARM, исполняемый файл должен быть создан с использованием GOARCH=arm64
.
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip-загрузчик лямбда-обработчика.zip
В Linux поведение компилятора Go по умолчанию заключается в связывании выходного исполняемого файла с системной libc для некоторых функций стандартной библиотеки (например, поиска DNS). Если в среде сборки используется дистрибутив Linux с версией GNU libc, более новой, чем среда развертывания, приложение при развертывании в Lambda может завершиться с ошибкой типа /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
Большинство приложений Go не требуют подключения к системной библиотеке libc. Это поведение можно отключить с помощью переменной среды CGO_ENABLED
.
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
См. Использование CGO.
У разработчиков Windows могут возникнуть проблемы с созданием zip-файла, который помечает двоичный файл как исполняемый в Linux. Чтобы создать ZIP-файл, который будет работать на AWS Lambda, может оказаться полезным инструмент build-lambda-zip
.
Получить инструмент
go.exe установить github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
Используйте инструмент из вашего GOPATH
. Если у вас установлена Go по умолчанию, инструмент будет находиться в %USERPROFILE%Gobin
.
в cmd.exe:
set GOOS=linuxset GOARCH=amd64set CGO_ENABLED=0go build -o bootstrap main.go%USERPROFILE%Gobinbuild-lambda-zip.exe -olambda-handler.zip bootstrap
в Powershell:
$env:GOOS = "linux"$env:GOARCH = "amd64"$env:CGO_ENABLED = "0"go build -o bootstrap main.go ~GoBinbuild-lambda-zip.exe -o лямбда-handler.zip загрузочный файл
Для приложений, которым требуется CGO, в среде сборки должна использоваться установленная версия GNU libc, совместимая с целевой средой выполнения Lambda. В противном случае выполнение может завершиться неудачно с ошибками типа /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
Среда выполнения лямбды | Версия GLIBC |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided и go1.x | 2.17 |
Альтернативно, Lambda поддерживает образы контейнеров в качестве альтернативы ZIP-файлам пакета развертывания. Для получения дополнительной информации обратитесь к официальной документации по работе с образами контейнеров.
Чтобы развернуть функцию, обратитесь к официальной документации по развертыванию с использованием AWS CLI, AWS Cloudformation и AWS SAM.
Модели событий можно использовать для моделирования источников событий AWS. В официальной документации есть подробные пошаговые инструкции.