View a markdown version of this page

Deploy fungsi Go Lambda dengan arsip file .zip - AWS Lambda

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 menerapkan kode fungsi Anda AWS Lambda menggunakan Konsol Manajemen AWS, AWS Command Line Interface (AWS CLI), dan AWS Serverless Application Model (AWS SAM).

Perhatikan bahwa Lambda menggunakan izin berkas POSIX, jadi Anda mungkin perlu mengatur izin untuk folder paket penerapan sebelum membuat arsip berkas.zip.

Membuat file .zip pada macOS dan Linux

Langkah-langkah berikut menunjukkan cara mengkompilasi file yang dapat dieksekusi menggunakan go build perintah dan membuat paket penerapan file.zip untuk Lambda. Sebelum mengkompilasi kode Anda, pastikan Anda telah menginstal paket lambda dari. GitHub Modul ini menyediakan implementasi antarmuka runtime, yang mengelola interaksi antara Lambda dan kode fungsi Anda. Untuk mengunduh perpustakaan ini, jalankan perintah berikut.

go get github.com/aws/aws-lambda-go/lambda

Jika fungsi Anda menggunakan AWS SDK untuk Go, unduh set standar modul SDK, bersama dengan klien API AWS layanan yang diperlukan oleh aplikasi Anda. Untuk mempelajari cara menginstal SDK for Go, lihat Memulai dengan AWS SDK untuk Go V2.

Menggunakan keluarga runtime yang disediakan

Go diimplementasikan secara berbeda dari runtime terkelola lainnya. Karena Go mengkompilasi secara asli ke biner yang dapat dieksekusi, itu tidak memerlukan runtime bahasa khusus. Gunakan OS-only runtime (keluarga provided runtime) untuk menerapkan fungsi Go ke Lambda.

Untuk membuat paket penerapan.zip () macOS/Linux
  1. Di direktori proyek yang berisi main.go file aplikasi Anda, kompilasi yang dapat dieksekusi. Perhatikan hal-hal berikut:

    • Yang dapat dieksekusi harus diberi namabootstrap. Untuk informasi selengkapnya, lihat Konvensi penamaan handler.

    • Tetapkan arsitektur set instruksi target Anda. OS-only runtime mendukung arm64 dan x86_64.

    • Anda dapat menggunakan lambda.norpc tag opsional untuk mengecualikan komponen Remote Procedure Call (RPC) dari perpustakaan lambda. Komponen RPC hanya diperlukan jika Anda menggunakan runtime Go 1.x yang tidak digunakan lagi. Mengecualikan RPC mengurangi ukuran paket penerapan.

    Untuk arsitektur arm64:

    GOOS=linux GOARCH=arm64 go build -tags lambda.norpc -o bootstrap main.go

    Untuk arsitektur x86_64:

    GOOS=linux GOARCH=amd64 go build -tags lambda.norpc -o bootstrap main.go
  2. (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.go

    Perintah ini membuat paket biner stabil untuk versi pustaka C standar (libc), yang mungkin berbeda di Lambda dan perangkat lainnya.

  3. Buat paket deployment dengan mengemas executable dalam file .zip.

    zip myFunction.zip bootstrap
    catatan

    bootstrapFile harus berada di root file.zip.

  4. Buat fungsi . Perhatikan hal-hal berikut:

    • Biner harus diberi namabootstrap, tetapi nama handler bisa apa saja. Untuk informasi selengkapnya, lihat Konvensi penamaan handler.

    • --architecturesOpsi ini hanya diperlukan jika Anda menggunakan arm64. Nilai defaultnya adalah x86_64.

    • Untuk--role, tentukan Nama Sumber Daya Amazon (ARN) dari peran eksekusi.

    aws lambda create-function --function-name myFunction \ --runtime provided.al2023 --handler bootstrap \ --architectures arm64 \ --role arn:aws:iam::111122223333:role/lambda-ex \ --zip-file fileb://myFunction.zip

Membuat file .zip pada Windows

Langkah-langkah berikut menunjukkan cara mengunduh alat build-lambda-zip untuk Windows dari GitHub, mengkompilasi file yang dapat dieksekusi, dan membuat paket penerapan.zip.

catatan

Jika Anda belum melakukannya, Anda harus menginstal git, lalu tambahkan executable git ke variabel lingkungan Windows %PATH% Anda.

Sebelum mengkompilasi kode Anda, pastikan Anda telah menginstal per pustakaan lambda dari. GitHub Untuk mengunduh perpustakaan ini, jalankan perintah berikut.

go get github.com/aws/aws-lambda-go/lambda

Jika fungsi Anda menggunakan AWS SDK untuk Go, unduh set standar modul SDK, bersama dengan klien API AWS layanan yang diperlukan oleh aplikasi Anda. Untuk mempelajari cara menginstal SDK for Go, lihat Memulai dengan AWS SDK untuk Go V2.

Menggunakan keluarga runtime yang disediakan

Go diimplementasikan secara berbeda dari runtime terkelola lainnya. Karena Go mengkompilasi secara asli ke biner yang dapat dieksekusi, itu tidak memerlukan runtime bahasa khusus. Gunakan OS-only runtime (keluarga provided runtime) untuk menerapkan fungsi Go ke Lambda.

Untuk membuat paket penyebaran.zip (Windows)
  1. Unduh alat build-lambd a-zip dari. GitHub

    go install github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
  2. 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:

    cmd.exe

    Di cmd.exe, jalankan salah satu dari berikut ini, tergantung pada arsitektur set instruksi target Anda. OS-only runtime mendukung arm64 dan x86_64.

    Anda dapat menggunakan lambda.norpc tag opsional untuk mengecualikan komponen Remote Procedure Call (RPC) dari perpustakaan lambda. Komponen RPC hanya diperlukan jika Anda menggunakan runtime Go 1.x yang tidak digunakan lagi. Mengecualikan RPC mengurangi ukuran paket penerapan.

    contoh— Untuk arsitektur x86_64
    set GOOS=linux set GOARCH=amd64 set CGO_ENABLED=0 go build -tags lambda.norpc -o bootstrap main.go %USERPROFILE%\Go\bin\build-lambda-zip.exe -o myFunction.zip bootstrap
    contoh— Untuk arsitektur arm64
    set GOOS=linux set GOARCH=arm64 set CGO_ENABLED=0 go build -tags lambda.norpc -o bootstrap main.go %USERPROFILE%\Go\bin\build-lambda-zip.exe -o myFunction.zip bootstrap
    PowerShell

    Di PowerShell, jalankan salah satu dari yang berikut ini, tergantung pada arsitektur set instruksi target Anda. OS-only runtime mendukung arm64 dan x86_64.

    Anda dapat menggunakan lambda.norpc tag opsional untuk mengecualikan komponen Remote Procedure Call (RPC) dari perpustakaan lambda. Komponen RPC hanya diperlukan jika Anda menggunakan runtime Go 1.x yang tidak digunakan lagi. Mengecualikan RPC mengurangi ukuran paket penerapan.

    Untuk arsitektur x86_64:

    $env:GOOS = "linux" $env:GOARCH = "amd64" $env:CGO_ENABLED = "0" go build -tags lambda.norpc -o bootstrap main.go ~\Go\Bin\build-lambda-zip.exe -o myFunction.zip bootstrap

    Untuk arsitektur arm64:

    $env:GOOS = "linux" $env:GOARCH = "arm64" $env:CGO_ENABLED = "0" go build -tags lambda.norpc -o bootstrap main.go ~\Go\Bin\build-lambda-zip.exe -o myFunction.zip bootstrap
  3. Buat fungsi . Perhatikan hal-hal berikut:

    • Biner harus diberi namabootstrap, tetapi nama handler bisa apa saja. Untuk informasi selengkapnya, lihat Konvensi penamaan handler.

    • --architecturesOpsi ini hanya diperlukan jika Anda menggunakan arm64. Nilai defaultnya adalah x86_64.

    • Untuk--role, tentukan Nama Sumber Daya Amazon (ARN) dari peran eksekusi.

    aws lambda create-function --function-name myFunction \ --runtime provided.al2023 --handler bootstrap \ --architectures arm64 \ --role arn:aws:iam::111122223333:role/lambda-ex \ --zip-file fileb://myFunction.zip

Membuat dan memperbarui fungsi Go Lambda menggunakan file.zip

Setelah membuat paket penerapan.zip, Anda dapat menggunakannya untuk membuat fungsi Lambda baru atau memperbarui yang sudah ada. Anda dapat menerapkan paket.zip Anda menggunakan konsol Lambda, AWS Command Line Interface, dan Lambda API. Anda juga dapat membuat dan memperbarui fungsi Lambda menggunakan AWS Serverless Application Model (AWS SAM) dan CloudFormation.

Ukuran maksimum untuk paket penerapan.zip 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 memerlukan 644 izin untuk file yang tidak dapat dieksekusi (rw-r--r--) dan 755 izin (rwxr-xr-x) untuk direktori dan file yang dapat dieksekusi.

Di Linux dan macOS, gunakan chmod perintah untuk mengubah izin file pada file dan direktori dalam paket penerapan Anda. Misalnya, untuk memberikan file yang tidak dapat dieksekusi izin yang benar, jalankan perintah berikut.

chmod 644 <filepath>

Untuk mengubah izin file di Windows, lihat Meng atur, Melihat, Mengubah, atau Menghapus Izin pada Objek dalam dokumentasi Microsoft Windows.

catatan

Jika Anda tidak memberikan Lambda izin yang diperlukan untuk mengakses direktori dalam paket penerapan Anda, Lambda menetapkan izin untuk direktori tersebut ke 755 (rwxr-xr-x).

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 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 Konsol Manajemen AWS, lihat Memulai dengan 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)
  1. Buka halaman Functions pada konsol Lambda dan pilih Create Func tion.

  2. Pilih Tulis dari awal.

  3. Di bagian Informasi dasar, lakukan hal berikut:

    1. Untuk Nama fungsi, masukkan nama untuk fungsi Anda.

    2. Untuk Runtime, pilihprovided.al2023.

  4. (Opsional) Di bagian Izin, luaskan Ubah peran eksekusi default. Anda dapat membuat peran Ek sekusi baru atau menggunakan yang sudah ada.

  5. Pilih Buat fungsi. Lambda membuat fungsi dasar 'Hello world' menggunakan runtime pilihan Anda.

Untuk mengunggah arsip.zip dari mesin lokal Anda (konsol)
  1. Di halaman Functions pada konsol Lambda, pilih fungsi yang ingin Anda unggah file.zip.

  2. Pilih tab Kode.

  3. Di panel sumber kode, pilih Unggah dari.

  4. Pilih fil e.zip.

  5. Untuk mengunggah file.zip, lakukan hal berikut:

    1. Pilih Unggah, lalu pilih file.zip Anda di pemilih file.

    2. Pilih Buka.

    3. Pilih Simpan.

Untuk mengunggah arsip.zip dari bucket Amazon S3 (konsol)
  1. Di halaman Functions pada konsol Lambda, pilih fungsi yang ingin Anda unggah file.zip baru.

  2. Pilih tab Kode.

  3. Di panel sumber kode, pilih Unggah dari.

  4. Pilih lokasi Amazon S3.

  5. Rekatkan URL tautan Amazon S3 dari file.zip Anda dan pilih S impan.

Membuat dan memperbarui fungsi dengan file.zip menggunakan AWS CLI

Anda dapat menggunakan AWS CLI untuk membuat fungsi baru atau memperbarui yang sudah ada menggunakan file.zip. Gunakan perintah create-function dan update-function-code untuk menerapkan 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 Mem indahkan objek di Panduan AWS CLI Pengguna.

catatan

Jika Anda mengunggah file.zip dari bucket Amazon S3 menggunakan AWS CLI, bucket harus ditempatkan di tempat yang Wilayah AWS 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 fungsi Anda (--runtime)

  • Nama Sumber Daya Amazon (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 pada mesin build lokal Anda, gunakan --zip-file opsi untuk menentukan jalur file, seperti yang ditunjukkan pada contoh perintah 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 dalam bucket Amazon S3, gunakan --code opsi seperti yang ditunjukkan pada contoh perintah 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 menggunakan CLI, 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 pada mesin build lokal Anda, gunakan --zip-file opsi untuk menentukan jalur file, seperti yang ditunjukkan pada contoh perintah berikut.

aws lambda update-function-code --function-name myFunction \ --zip-file fileb://myFunction.zip

Untuk menentukan lokasi file.zip dalam bucket Amazon S3, gunakan --s3-key opsi --s3-bucket dan seperti 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 API Lambda

Untuk membuat dan memperbarui fungsi menggunakan arsip file.zip, gunakan operasi API berikut:

Membuat dan memperbarui fungsi dengan file.zip menggunakan AWS SAM

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 templat YAML atau JSON dan menggunakan antarmuka baris AWS SAM perintah (AWS SAM CLI) untuk membangun, mengemas, dan menyebarkan aplikasi Anda. Saat Anda membangun fungsi Lambda dari AWS SAM template, AWS SAM secara otomatis membuat paket penerapan.zip atau image wadah dengan kode fungsi Anda dan dependensi apa pun yang Anda tentukan. Untuk mempelajari selengkapnya tentang menggunakan AWS SAM untuk membangun dan menerapkan fungsi Lambda, lihat Memulai dengan AWS SAM di Panduan Peng AWS Serverless Application Model embang.

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 Anda 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 Mem indahkan objek di Panduan AWS CLI Pengguna.

Dalam AWS SAM template Anda, AWS::Serverless::Function sumber daya menentukan fungsi Lambda Anda. Di sumber daya ini, atur properti berikut untuk membuat fungsi menggunakan arsip file.zip:

  • PackageType- diatur ke Zip

  • CodeUri- diatur ke kode fungsi Amazon S3 URI, jalur ke folder lokal, atau FunctionCode objek

  • Runtime- Atur ke runtime pilihan Anda

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 menerapkan fungsi menggunakan file.zip di AWS SAM, lihat AWS::Serverless: :Fungsi di Panduan Peng AWS SAM embang.

Contoh: Menggunakan AWS SAM untuk membangun fungsi Go dengan provided.al2023
  1. Buat AWS SAM template dengan properti berikut:

    • BuildMethod: Menentukan kompiler untuk aplikasi Anda. Gunakan go1.x.

    • Runtime: Gunakanprovided.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]
  2. Gunakan perintah sam build untuk mengkompilasi yang dapat dieksekusi.

    sam build
  3. Gunakan perintah sam deploy untuk menyebarkan fungsi ke Lambda.

    sam deploy --guided

Membuat dan memperbarui fungsi dengan file.zip menggunakan CloudFormation

Anda dapat menggunakan 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 Mem indahkan objek di Panduan AWS CLI Pengguna.

Dalam CloudFormation template Anda, AWS::Lambda::Function sumber daya menentukan fungsi Lambda Anda. Di sumber daya ini, atur properti berikut untuk membuat fungsi menggunakan arsip file.zip:

  • PackageType- Setel ke Zip

  • Code- Masukkan nama bucket Amazon S3 dan nama file.zip di bidang S3Bucket dan S3Key

  • Runtime- Atur ke runtime pilihan Anda

File.zip yang CloudFormation menghasilkan tidak boleh melebihi 4MB. Untuk mempelajari selengkapnya tentang menerapkan fungsi menggunakan file.zip di CloudFormation, lihat AWS::Lambda: :Fungsi di Panduan Pengguna. CloudFormation