المكتبات والعينات والأدوات لمساعدة مطوري Go على تطوير وظائف AWS Lambda.
لمعرفة المزيد حول كتابة وظائف AWS Lambda في Go، انتقل إلى الوثائق الرسمية
// main.gopackage mainimport ("github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Hello lect!", nil}func main() { // Make المعالج المتاح لاستدعاء الإجراء عن بعد بواسطة AWS Lambdalambda.Start(hello) }
يتطلب إعداد ملف ثنائي للنشر على 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 الرمز البريدي lambda-handler.zip bootstrap
في 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 مشكلة في إنتاج ملف مضغوط يضع علامة على الملف الثنائي باعتباره قابلاً للتنفيذ على 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 -o lambda-handler.zip bootstrap
في بوويرشيل:
$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
بالنسبة للتطبيقات التي تتطلب CGO، يجب أن تستخدم بيئة البناء إصدار GNU libc المثبت المتوافق مع وقت تشغيل Lambda المستهدف. وإلا، فقد يفشل التنفيذ مع وجود أخطاء مثل /lib64/libc.so.6: version `GLIBC_X.YZ' not found
.
وقت تشغيل لامدا | نسخة جليبك |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided و go1.x | 2.17 |
وبدلاً من ذلك، يدعم Lambda صور الحاويات كحزمة نشر بديلة لملفات .zip. لمزيد من المعلومات، راجع الوثائق الرسمية للتعامل مع صور الحاوية.
لنشر وظيفتك، راجع الوثائق الرسمية للنشر باستخدام AWS CLI وAWS Cloudformation وAWS SAM.
يمكن استخدام نماذج الأحداث لنمذجة مصادر أحداث AWS. تحتوي الوثائق الرسمية على إرشادات تفصيلية.