Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Deploy fungsi Go Lambda dengan arsip file .zip
Kode AWS Lambda fungsi Anda terdiri dari skrip atau program yang dikompilasi dan dependensinya. Gunakan paket deployment untuk men-deploy fungsi kode Anda ke Lambda. Lambda mendukung dua tipe paket deployment: gambar kontainer dan arsip file .zip.
Halaman ini menjelaskan cara membuat file.zip sebagai paket penerapan Anda untuk runtime Go, dan kemudian menggunakan file.zip untuk menyebarkan kode fungsi Anda AWS Lambda menggunakan, () AWS Management Console, dan AWS Command Line Interface (AWS CLI). AWS Serverless Application Model AWS SAM
Perhatikan bahwa Lambda menggunakan izin POSIX file, jadi Anda mungkin perlu mengatur izin untuk folder paket penyebaran
Bagian-bagian
Membuat file .zip pada macOS dan Linux
Langkah-langkah berikut menunjukkan cara mengkompilasi executable Anda menggunakan go build
perintah dan membuat paket penyebaran file.zip untuk Lambda. Sebelum mengkompilasi kode Anda, pastikan Anda telah menginstal paket lambda
go get github.com/aws/aws-lambda-go/lambda
Jika fungsi Anda menggunakan AWS SDK for Go, unduh set SDK modul standar, bersama dengan API klien AWS layanan apa pun yang diperlukan oleh aplikasi Anda. Untuk mempelajari cara menginstal SDK for Go, lihat Memulai dengan AWS SDK for Go V2
Menggunakan keluarga runtime yang disediakan
Go diimplementasikan secara berbeda dari runtime terkelola lainnya. Karena Go mengkompilasi secara native ke biner yang dapat dieksekusi, itu tidak memerlukan runtime bahasa khusus. Gunakan runtime khusus OS (keluarga runtime) untuk menerapkan provided
fungsi Go ke Lambda.
Untuk membuat paket penyebaran.zip (macOS/Linux)
-
Dalam direktori proyek yang berisi
main.go
file aplikasi Anda, kompilasi executable Anda. Perhatikan hal berikut:-
Executable harus diberi nama.
bootstrap
Untuk informasi selengkapnya, lihat Penamaan. -
Tetapkan arsitektur set instruksi target Anda. Runtime khusus OS mendukung arm64 dan x86_64.
-
Anda dapat menggunakan
lambda.norpc
tag opsional untuk mengecualikan komponen Remote Procedure Call (RPC) dari pustaka lambda. RPCKomponen hanya diperlukan jika Anda menggunakan runtime Go 1.x yang tidak digunakan lagi. Tidak termasuk RPC mengurangi ukuran paket penyebaran.
Untuk arsitektur arm64:
GOOS=linux GOARCH=
arm64
go build -tags lambda.norpc -o bootstrap main.goUntuk arsitektur x86_64:
GOOS=linux GOARCH=
amd64
go build -tags lambda.norpc -o bootstrap main.go -
-
(Opsional) Anda mungkin perlu mengompilasi paket dengan
CGO_ENABLED=0
yang diatur di Linux:GOOS=linux GOARCH=
arm64
CGO_ENABLED=0 go build -o bootstrap -tags lambda.norpc main.goPerintah ini membuat paket biner stabil untuk versi pustaka C standar (
libc
), yang mungkin berbeda di Lambda dan perangkat lainnya. -
Buat paket deployment dengan mengemas executable dalam file .zip.
zip myFunction.zip bootstrap
catatan
bootstrap
File harus berada di root file.zip. -
Buat fungsi . Perhatikan hal berikut:
-
Biner harus diberi nama
bootstrap
, tetapi nama handler bisa apa saja. Untuk informasi selengkapnya, lihat Penamaan. -
--architectures
Opsi ini hanya diperlukan jika Anda menggunakan arm64. Nilai defaultnya adalah x86_64. -
Untuk
--role
, tentukan Amazon Resource Name (ARN) dari peran eksekusi.
aws lambda create-function --function-name myFunction \ --runtime provided.al2023 --handler
bootstrap
\ --architecturesarm64
\ --rolearn:aws:iam::111122223333:role/lambda-ex
\ --zip-file fileb://myFunction.zip -
Membuat file .zip pada Windows
Langkah-langkah berikut menunjukkan cara mengunduh build-lambda-zip
catatan
Jika Anda belum melakukannya, Anda harus menginstal gitgit
ke variabel lingkungan Windows %PATH%
Anda.
Sebelum mengkompilasi kode Anda, pastikan Anda telah menginstal pustaka lambda
go get github.com/aws/aws-lambda-go/lambda
Jika fungsi Anda menggunakan AWS SDK for Go, unduh set SDK modul standar, bersama dengan API klien AWS layanan apa pun yang diperlukan oleh aplikasi Anda. Untuk mempelajari cara menginstal SDK for Go, lihat Memulai dengan AWS SDK for Go V2
Menggunakan keluarga runtime yang disediakan
Go diimplementasikan secara berbeda dari runtime terkelola lainnya. Karena Go mengkompilasi secara native ke biner yang dapat dieksekusi, itu tidak memerlukan runtime bahasa khusus. Gunakan runtime khusus OS (keluarga runtime) untuk menerapkan provided
fungsi Go ke Lambda.
Untuk membuat paket penyebaran.zip (Windows)
-
Unduh build-lambda-zipalat dari GitHub.
go install github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
-
Gunakan alat dari
GOPATH
Anda untuk membuat file .zip. Jika Anda memiliki penginstalan default Go, alat ini biasanya di%USERPROFILE%\Go\bin
. Jika tidak, arahkan ke tempat Anda menginstal runtime Go dan lakukan salah satu hal berikut: -
Buat fungsi . Perhatikan hal berikut:
-
Biner harus diberi nama
bootstrap
, tetapi nama handler bisa apa saja. Untuk informasi selengkapnya, lihat Penamaan. -
--architectures
Opsi ini hanya diperlukan jika Anda menggunakan arm64. Nilai defaultnya adalah x86_64. -
Untuk
--role
, tentukan Amazon Resource Name (ARN) dari peran eksekusi.
aws lambda create-function --function-name myFunction \ --runtime provided.al2023 --handler
bootstrap
\ --architecturesarm64
\ --rolearn:aws:iam::111122223333:role/lambda-ex
\ --zip-file fileb://myFunction.zip -
Membuat dan memperbarui fungsi Go Lambda menggunakan file.zip
Setelah Anda membuat paket.zip deployment, Anda dapat menggunakannya untuk membuat fungsi Lambda baru atau memperbarui yang sudah ada. Anda dapat menerapkan paket.zip Anda menggunakan konsol Lambda, the, AWS Command Line Interface dan Lambda. API Anda juga dapat membuat dan memperbarui fungsi Lambda menggunakan AWS Serverless Application Model (AWS SAM) dan. AWS CloudFormation
Ukuran maksimum untuk paket.zip deployment untuk Lambda adalah 250 MB (unzip). Perhatikan bahwa batas ini berlaku untuk ukuran gabungan semua file yang Anda unggah, termasuk lapisan Lambda apa pun.
Runtime Lambda membutuhkan izin untuk membaca file dalam paket deployment Anda. Dalam notasi oktal izin Linux, Lambda membutuhkan 644 izin untuk file yang tidak dapat dieksekusi (rw-r - r--) dan 755 izin () untuk direktori dan file yang dapat dieksekusi. rwxr-xr-x
Di Linux dan macOS, gunakan chmod
perintah untuk mengubah izin file pada file dan direktori dalam paket penyebaran Anda. Misalnya, untuk memberikan file yang dapat dieksekusi izin yang benar, jalankan perintah berikut.
chmod 755 <filepath>
Untuk mengubah izin file di Windows, lihat Mengatur, Melihat, Mengubah, atau Menghapus Izin pada Objek
Membuat dan memperbarui fungsi dengan file.zip menggunakan konsol
Untuk membuat fungsi baru, Anda harus terlebih dahulu membuat fungsi di konsol, lalu mengunggah arsip.zip Anda. Untuk memperbarui fungsi yang ada, buka halaman untuk fungsi Anda, lalu ikuti prosedur yang sama untuk menambahkan file.zip Anda yang diperbarui.
Jika file.zip Anda kurang dari 50MB, Anda dapat membuat atau memperbarui fungsi dengan mengunggah file langsung dari mesin lokal Anda. Untuk file.zip yang lebih besar dari 50MB, Anda harus mengunggah paket Anda ke bucket Amazon S3 terlebih dahulu. Untuk petunjuk tentang cara mengunggah file ke bucket Amazon S3 menggunakan AWS Management Console, lihat Memulai Amazon S3. Untuk mengunggah file menggunakan AWS CLI, lihat Memindahkan objek di Panduan AWS CLI Pengguna.
catatan
Anda tidak dapat mengonversi fungsi gambar kontainer yang ada untuk menggunakan arsip.zip. Anda harus membuat fungsi baru.
Untuk membuat fungsi baru (konsol)
-
Buka halaman Fungsi
konsol Lambda dan pilih Buat Fungsi. -
Pilih Tulis dari awal.
-
Di bagian Informasi dasar, lakukan hal berikut:
-
Untuk nama Fungsi, masukkan nama untuk fungsi Anda.
-
Untuk Runtime, pilih
provided.al2023
.
-
-
(Opsional) Di bagian Izin, luaskan Ubah peran eksekusi default. Anda dapat membuat peran Eksekusi baru atau menggunakan yang sudah ada.
-
Pilih Buat fungsi. Lambda menciptakan fungsi dasar 'Hello world' menggunakan runtime yang Anda pilih.
Untuk mengunggah arsip.zip dari mesin lokal Anda (konsol)
-
Di halaman Fungsi
konsol Lambda, pilih fungsi yang ingin Anda unggah file.zip. -
Pilih tab Kode.
-
Di panel Sumber kode, pilih Unggah dari.
-
Pilih file.zip.
-
Untuk mengunggah file.zip, lakukan hal berikut:
-
Pilih Unggah, lalu pilih file.zip Anda di pemilih file.
-
Pilih Buka.
-
Pilih Simpan.
-
Untuk mengunggah arsip.zip dari bucket Amazon S3 (konsol)
-
Di halaman Fungsi
konsol Lambda, pilih fungsi yang ingin Anda unggah file.zip baru. -
Pilih tab Kode.
-
Di panel Sumber kode, pilih Unggah dari.
-
Pilih lokasi Amazon S3.
-
Rekatkan tautan Amazon S3 URL dari file.zip Anda dan pilih Simpan.
Membuat dan memperbarui fungsi dengan file.zip menggunakan AWS CLI
Anda dapat menggunakan AWS CLIuntuk membuat fungsi baru atau memperbarui yang sudah ada menggunakan file.zip. Gunakan create-function dan update-function-codeperintah untuk menyebarkan paket.zip Anda. Jika file.zip Anda lebih kecil dari 50MB, Anda dapat mengunggah paket.zip dari lokasi file di mesin build lokal Anda. Untuk file yang lebih besar, Anda harus mengunggah paket.zip Anda dari bucket Amazon S3. Untuk petunjuk tentang cara mengunggah file ke bucket Amazon S3 menggunakan AWS CLI, lihat Memindahkan objek di AWS CLI Panduan Pengguna.
catatan
Jika Anda mengunggah file.zip dari bucket Amazon S3 menggunakan AWS CLI bucket, bucket harus berada di lokasi Wilayah AWS yang sama dengan fungsi Anda.
Untuk membuat fungsi baru menggunakan file.zip dengan AWS CLI, Anda harus menentukan yang berikut:
-
Nama fungsi Anda (
--function-name
) -
Runtime ()
--runtime
fungsi Anda -
Amazon Resource Name (ARN) dari peran eksekusi fungsi Anda (
--role
) -
Nama metode handler dalam kode fungsi Anda ()
--handler
Anda juga harus menentukan lokasi file.zip Anda. Jika file.zip Anda terletak di folder di mesin build lokal Anda, gunakan --zip-file
opsi untuk menentukan jalur file, seperti yang ditunjukkan pada perintah contoh berikut.
aws lambda create-function --function-name myFunction \ --runtime provided.al2023 --handler bootstrap \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --zip-file fileb://myFunction.zip
Untuk menentukan lokasi file.zip di bucket Amazon S3, gunakan opsi seperti --code
yang ditunjukkan pada perintah contoh berikut. Anda hanya perlu menggunakan S3ObjectVersion
parameter untuk objek berversi.
aws lambda create-function --function-name myFunction \ --runtime provided.al2023 --handler bootstrap \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion
Untuk memperbarui fungsi yang ada menggunakanCLI, Anda menentukan nama fungsi Anda menggunakan --function-name
parameter. Anda juga harus menentukan lokasi file.zip yang ingin Anda gunakan untuk memperbarui kode fungsi Anda. Jika file.zip Anda terletak di folder di mesin build lokal Anda, gunakan --zip-file
opsi untuk menentukan jalur file, seperti yang ditunjukkan pada perintah contoh berikut.
aws lambda update-function-code --function-name myFunction \ --zip-file fileb://myFunction.zip
Untuk menentukan lokasi file.zip di bucket Amazon S3, gunakan opsi --s3-key
dan seperti --s3-bucket
yang ditunjukkan pada perintah contoh berikut. Anda hanya perlu menggunakan --s3-object-version
parameter untuk objek berversi.
aws lambda update-function-code --function-name myFunction \ --s3-bucket amzn-s3-demo-bucket --s3-key myFileName.zip --s3-object-version myObject Version
Membuat dan memperbarui fungsi dengan file.zip menggunakan Lambda API
Untuk membuat dan memperbarui fungsi menggunakan arsip file.zip, gunakan API operasi berikut:
Membuat dan memperbarui fungsi dengan file.zip menggunakan AWS SAM
The AWS Serverless Application Model (AWS SAM) adalah toolkit yang membantu merampingkan proses membangun dan menjalankan aplikasi tanpa server. AWS Anda menentukan sumber daya untuk aplikasi Anda dalam JSON template YAML atau dan menggunakan antarmuka baris AWS SAM perintah (AWS SAM CLI) untuk membangun, mengemas, dan menyebarkan aplikasi Anda. Saat Anda membuat fungsi Lambda dari AWS SAM template, AWS SAM secara otomatis membuat paket penerapan .zip atau gambar kontainer dengan kode fungsi Anda dan dependensi apa pun yang Anda tentukan. Untuk mempelajari lebih lanjut cara menggunakan AWS SAM untuk membangun dan menerapkan fungsi Lambda, lihat Memulai di Panduan AWS SAMAWS Serverless Application Model Pengembang.
Anda juga dapat menggunakan AWS SAM untuk membuat fungsi Lambda menggunakan arsip file.zip yang ada. Untuk membuat fungsi Lambda menggunakan AWS SAM, Anda dapat menyimpan file.zip di bucket Amazon S3 atau di folder lokal di mesin build Anda. Untuk petunjuk tentang cara mengunggah file ke bucket Amazon S3 menggunakan AWS CLI, lihat Memindahkan objek di AWS CLI Panduan Pengguna.
Dalam AWS SAM template Anda, AWS::Serverless::Function
sumber daya menentukan fungsi Lambda Anda. Dalam sumber daya ini, atur properti berikut untuk membuat fungsi menggunakan arsip file.zip:
-
PackageType
- diatur keZip
-
CodeUri
- diatur ke kode fungsi Amazon S3URI, jalur ke folder lokal, atau objek FunctionCode -
Runtime
- Setel ke runtime yang Anda pilih
Dengan AWS SAM, jika file.zip Anda lebih besar dari 50MB, Anda tidak perlu mengunggahnya ke bucket Amazon S3 terlebih dahulu. AWS SAM dapat mengunggah paket.zip hingga ukuran maksimum yang diizinkan 250MB (unzip) dari lokasi di mesin build lokal Anda.
Untuk mempelajari selengkapnya tentang penerapan fungsi menggunakan file.zip di AWS SAM, lihat AWS: :Serverless: :Function dalam Panduan Pengembang.AWS SAM
Contoh: Menggunakan AWS SAM untuk membangun fungsi Go dengan provided.al2023
-
Buat AWS SAM template dengan properti berikut:
-
BuildMethod: Menentukan compiler untuk aplikasi Anda. Gunakan
go1.x
. -
Runtime: Gunakan
provided.al2023
. -
CodeUri: Masukkan jalur ke kode Anda.
-
Arsitektur: Gunakan
[arm64]
untuk arsitektur arm64. Untuk arsitektur set instruksi x86_64, gunakan[amd64]
atau hapus properti.Architectures
contoh template.yaml
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: HelloWorldFunction: Type: AWS::Serverless::Function Metadata: BuildMethod:
go1.x
Properties: CodeUri:hello-world/
# folder where your main program resides Handler: bootstrap Runtime:provided.al2023
Architectures:[arm64]
-
-
Gunakan perintah sam build untuk mengkompilasi executable.
sam build
-
Gunakan perintah sam deploy untuk menyebarkan fungsi ke Lambda.
sam deploy --guided
Membuat dan memperbarui fungsi dengan file.zip menggunakan AWS CloudFormation
Anda dapat menggunakan AWS CloudFormation untuk membuat fungsi Lambda menggunakan arsip file.zip. Untuk membuat fungsi Lambda dari file.zip, Anda harus terlebih dahulu mengunggah file Anda ke bucket Amazon S3. Untuk petunjuk tentang cara mengunggah file ke bucket Amazon S3 menggunakan AWS CLI, lihat Memindahkan objek di AWS CLI Panduan Pengguna.
Dalam AWS CloudFormation template Anda, AWS::Lambda::Function
sumber daya menentukan fungsi Lambda Anda. Dalam sumber daya ini, atur properti berikut untuk membuat fungsi menggunakan arsip file.zip:
-
PackageType
- Setel keZip
-
Code
- Masukkan nama bucket Amazon S3 dan nama file.zip di dan bidangS3Bucket
S3Key
-
Runtime
- Setel ke runtime yang Anda pilih
File.zip yang AWS CloudFormation menghasilkan tidak boleh melebihi 4MB. Untuk mempelajari selengkapnya tentang penerapan fungsi menggunakan file.zip di AWS CloudFormation, lihat AWS: :Lambda: :Function di Panduan Pengguna.AWS CloudFormation