Pustaka, sampel, dan alat untuk membantu pengembang Go mengembangkan fungsi AWS Lambda.
Untuk mempelajari lebih lanjut tentang penulisan fungsi AWS Lambda di Go, buka dokumentasi resmi
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Halo λ!", nil}func main() { // Buat pengendali yang tersedia untuk Panggilan Prosedur Jarak Jauh oleh AWS Lambdalambda.Start(halo) }
Mempersiapkan biner untuk diterapkan ke AWS Lambda mengharuskan biner tersebut dikompilasi untuk Linux dan ditempatkan ke dalam file .zip. Saat menggunakan runtime provided
, provided.al2
, atau provided.al2023
, file yang dapat dieksekusi dalam file .zip harus diberi nama bootstrap
. Arsitektur default Lambda adalah x86_64
, jadi ketika kompilasi silang dari lingkungan non-x86, executable harus dibuat dengan GOARCH=amd64
. Demikian pula, jika fungsi Lambda akan dikonfigurasi untuk menggunakan ARM, fungsi yang dapat dieksekusi harus dibuat dengan GOARCH=arm64
.
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
Di Linux, perilaku default kompiler Go adalah menghubungkan output yang dapat dieksekusi ke libc sistem untuk beberapa fungsi perpustakaan standar (misalnya, pencarian DNS). Jika lingkungan build menggunakan distribusi Linux dengan versi GNU libc yang lebih baru dari lingkungan penerapan, aplikasi saat diterapkan ke Lambda mungkin gagal dengan kesalahan seperti /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
Sebagian besar aplikasi Go tidak memerlukan tautan ke libc sistem. Perilaku ini dapat dinonaktifkan dengan menggunakan variabel lingkungan CGO_ENABLED
.
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
Lihat Menggunakan CGO
Pengembang Windows mungkin mengalami kesulitan menghasilkan file zip yang menandai biner sebagai dapat dieksekusi di Linux. Untuk membuat .zip yang akan berfungsi di AWS Lambda, alat build-lambda-zip
mungkin berguna.
Dapatkan alatnya
go.exe instal github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
Gunakan alat dari GOPATH
Anda. Jika Anda memiliki instalasi default Go, alat tersebut akan ada di %USERPROFILE%Gobin
.
di cmd.exe:
set GOOS=linuxset GOARCH=amd64set CGO_ENABLED=0go build -o bootstrap main.go%USERPROFILE%Gobinbuild-lambda-zip.exe -o lambda-handler.zip bootstrap
di Powershell:
$env:GOOS = "linux"$env:GOARCH = "amd64"$env:CGO_ENABLED = "0"go build -o bootstrap main.go ~GoBinbuild-lambda-zip.exe -o lambda-handler.zip bootstrap
Untuk aplikasi yang memerlukan CGO, lingkungan build harus menggunakan versi libc GNU yang terinstal dan kompatibel dengan runtime target Lambda. Jika tidak, eksekusi mungkin gagal dengan kesalahan seperti /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
Waktu proses Lambda | versi GLIBC |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided dan go1.x | 2.17 |
Alternatifnya, Lambda mendukung gambar kontainer sebagai alternatif paket penerapan untuk file .zip. Untuk informasi lebih lanjut, lihat dokumentasi resmi untuk bekerja dengan gambar kontainer.
Untuk menerapkan fungsi Anda, lihat dokumentasi resmi untuk penerapan menggunakan AWS CLI, AWS Cloudformation, dan AWS SAM.
Model peristiwa dapat digunakan untuk memodelkan sumber peristiwa AWS. Dokumentasi resmi memiliki panduan terperinci.