Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kode AWS Lambda fungsi Anda terdiri dari file.rb yang berisi kode handler fungsi Anda, bersama dengan dependensi tambahan (permata) yang bergantung pada kode Anda. Untuk menyebarkan kode fungsi ini ke Lambda, Anda menggunakan paket penerapan. Paket ini dapat berupa arsip file.zip atau gambar kontainer. Untuk informasi selengkapnya tentang penggunaan gambar kontainer dengan Ruby, lihat Menerapkan fungsi Ruby Lambda dengan gambar kontainer.
Untuk membuat paket penyebaran Anda sebagai arsip file.zip, Anda dapat menggunakan utilitas arsip file.zip bawaan alat baris perintah Anda, atau utilitas file.zip lainnya seperti 7zip.zip
alat baris perintah di lingkungan Linux atau macOS. Untuk menggunakan perintah yang sama di Windows, Anda dapat menginstal Windows Subsystem untuk Linux untuk
Perhatikan bahwa Lambda menggunakan izin file POSIX, jadi Anda mungkin perlu mengatur izin untuk folder paket penyebaran
Perintah contoh di bagian berikut menggunakan utilitas Bundler
gem install bundler
Bagian-bagian
Dependensi di Ruby
Untuk fungsi Lambda yang menggunakan runtime Ruby, dependensi dapat berupa permata Ruby apa pun. Ketika Anda menerapkan fungsi Anda menggunakan arsip.zip, Anda dapat menambahkan dependensi ini ke file.zip Anda dengan kode fungsi Anda atau menggunakan lapisan Lambda. Lapisan adalah file.zip terpisah yang dapat berisi kode tambahan dan konten lainnya. Untuk mempelajari lebih lanjut tentang menggunakan layer Lambda, lihat. Mengelola dependensi Lambda dengan lapisan
Runtime Ruby termasuk. AWS SDK untuk Ruby Jika fungsi Anda menggunakan SDK, Anda tidak perlu menggabungkannya dengan kode Anda. Namun, untuk mempertahankan kontrol penuh atas dependensi Anda, atau menggunakan versi SDK tertentu, Anda dapat menambahkannya ke paket penerapan fungsi Anda. Anda dapat menyertakan SDK dalam file.zip Anda, atau menambahkannya menggunakan lapisan Lambda. Dependensi di file.zip Anda atau di lapisan Lambda lebih diutamakan daripada versi yang disertakan dalam runtime. Untuk mengetahui versi SDK for Ruby mana yang disertakan dalam versi runtime Anda, lihat. Versi SDK yang disertakan Runtime
Di bawah model tanggung jawab AWS bersama, Anda bertanggung jawab atas pengelolaan dependensi apa pun dalam paket penerapan fungsi Anda. Ini termasuk menerapkan pembaruan dan patch keamanan. Untuk memperbarui dependensi dalam paket penerapan fungsi Anda, pertama buat file.zip baru dan kemudian unggah ke Lambda. Lihat Membuat paket penerapan.zip dengan dependensi dan Membuat dan memperbarui fungsi Ruby Lambda menggunakan file.zip untuk informasi lebih lanjut.
Membuat paket penerapan.zip tanpa dependensi
Jika kode fungsi Anda tidak memiliki dependensi, file.zip Anda hanya berisi file.rb dengan kode handler fungsi Anda. Gunakan utilitas zip pilihan Anda untuk membuat file.zip dengan file.rb Anda di root. Jika file.rb tidak berada di root file.zip Anda, Lambda tidak akan dapat menjalankan kode Anda.
Untuk mempelajari cara menerapkan file.zip Anda untuk membuat fungsi Lambda baru atau memperbarui yang sudah ada, lihat. Membuat dan memperbarui fungsi Ruby Lambda menggunakan file.zip
Membuat paket penerapan.zip dengan dependensi
Jika kode fungsi Anda bergantung pada permata Ruby tambahan, Anda dapat menambahkan dependensi ini ke file.zip Anda dengan kode fungsi Anda atau menggunakan lapisan Lambda. Petunjuk di bagian ini menunjukkan cara memasukkan dependensi dalam paket penerapan.zip Anda. Untuk petunjuk tentang cara memasukkan dependensi Anda dalam lapisan, lihat. Membuat layer Ruby untuk dependensi Anda
Misalkan kode fungsi Anda disimpan dalam file bernama lambda_function.rb
di direktori proyek Anda. Contoh perintah CLI berikut membuat file.zip bernama my_deployment_package.zip
berisi kode fungsi Anda dan dependensinya.
Untuk membuat paket deployment
-
Di direktori proyek Anda, buat a
Gemfile
untuk menentukan dependensi Anda di.bundle init
-
Menggunakan editor teks pilihan Anda, edit
Gemfile
untuk menentukan dependensi fungsi Anda. Misalnya, untuk menggunakan TZInfo permata, edit AndaGemfile
agar terlihat seperti berikut ini.source "https://rubygems.org" gem "tzinfo"
-
Jalankan perintah berikut untuk menginstal permata yang ditentukan
Gemfile
dalam direktori proyek Anda. Perintah ini ditetapkanvendor/bundle
sebagai jalur default untuk instalasi permata.bundle config set --local path 'vendor/bundle' && bundle install
Anda akan melihat output seperti yang berikut ini.
Fetching gem metadata from https://rubygems.org/........... Resolving dependencies... Using bundler 2.4.13 Fetching tzinfo 2.0.6 Installing tzinfo 2.0.6 ...
catatan
Untuk menginstal permata secara global lagi nanti, jalankan perintah berikut.
bundle config set --local system 'true'
-
Buat arsip file.zip yang berisi
lambda_function.rb
file dengan kode handler fungsi Anda dan dependensi yang Anda instal pada langkah sebelumnya.zip -r my_deployment_package.zip lambda_function.rb vendor
Anda akan melihat output seperti yang berikut ini.
adding: lambda_function.rb (deflated 37%) adding: vendor/ (stored 0%) adding: vendor/bundle/ (stored 0%) adding: vendor/bundle/ruby/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/build_info/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/cache/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/cache/aws-eventstream-1.0.1.gem (deflated 36%) ...
Membuat layer Ruby untuk dependensi Anda
Untuk mempelajari cara mengemas dependensi Ruby Anda ke dalam lapisan Lambda, lihat. Bekerja dengan lapisan untuk fungsi Ruby Lambda
Membuat paket penerapan.zip dengan pustaka asli
Banyak permata Ruby umum sepertinokogiri
,nio4r
, dan mysql
berisi ekstensi asli yang ditulis dalam C. Ketika Anda menambahkan pustaka yang berisi kode C ke paket penyebaran Anda, Anda harus membangun paket Anda dengan benar untuk memastikan bahwa itu kompatibel dengan lingkungan eksekusi Lambda.
Untuk aplikasi produksi, kami sarankan untuk membangun dan menerapkan kode Anda menggunakan AWS Serverless Application Model (AWS SAM). AWS SAM Gunakan sam build --use-container
opsi untuk membangun fungsi Anda di dalam wadah Docker seperti Lambda. Untuk mempelajari lebih lanjut AWS SAM cara menggunakan kode fungsi, lihat Membangun aplikasi di Panduan AWS SAM Pengembang.
Untuk membuat paket penerapan.zip yang berisi permata dengan ekstensi asli tanpa menggunakan AWS SAM, Anda dapat menggunakan container untuk menggabungkan dependensi Anda di lingkungan yang sama dengan lingkungan runtime Lambda Ruby. Untuk menyelesaikan langkah-langkah ini, Anda harus menginstal Docker di mesin build Anda. Untuk mempelajari lebih lanjut tentang menginstal Docker, lihat Menginstal Docker Engine
Untuk membuat paket penyebaran.zip dalam wadah Docker
Buat folder di mesin build lokal Anda untuk menyimpan wadah Anda. Di dalam folder itu, buat file bernama
dockerfile
dan tempel kode berikut ke dalamnya.FROM public.ecr.aws/sam/build-ruby3.2:latest-x86_64 RUN gem update bundler CMD "/bin/bash"
Di dalam folder yang Anda
dockerfile
buat, jalankan perintah berikut untuk membuat wadah Docker.docker build -t awsruby32 .
-
Arahkan ke direktori proyek yang berisi
.rb
file dengan kode handler fungsi Anda danGemfile
menentukan dependensi fungsi Anda. Dari dalam direktori itu, jalankan perintah berikut untuk memulai wadah Lambda Ruby.docker run --rm -it -v $PWD:/var/task -w /var/task awsruby32
catatan
Di macOS, Anda mungkin melihat peringatan yang memberi tahu Anda bahwa platform gambar yang diminta tidak cocok dengan platform host yang terdeteksi. Abaikan peringatan ini.
Saat wadah Anda dimulai, Anda akan melihat prompt bash.
bash-4.2#
-
Konfigurasikan utilitas bundel untuk menginstal permata yang ditentukan
Gemfile
dalamvendor/bundle
direktori lokal Anda dan instal dependensi Anda.bash-4.2#
bundle config set --local path 'vendor/bundle' && bundle install
-
Buat paket deployment .zip dengan kode fungsi Anda dan dependensinya. Dalam contoh ini, file yang berisi kode handler fungsi Anda diberi nama
lambda_function.rb
.bash-4.2#
zip -r my_deployment_package.zip lambda_function.rb vendor
-
Keluar dari wadah dan kembali ke direktori proyek lokal Anda.
bash-4.2#
exit
Anda sekarang dapat menggunakan paket penyebaran file.zip untuk membuat atau memperbarui fungsi Lambda Anda. Lihat Membuat dan memperbarui fungsi Ruby Lambda menggunakan file.zip
Membuat dan memperbarui fungsi Ruby 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, API, AWS Command Line Interface dan Lambda. 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 tidak dapat dieksekusi izin yang benar, jalankan perintah berikut.
chmod 644 <filepath>
Untuk mengubah izin file di Windows, lihat Mengatur, Melihat, Mengubah, atau Menghapus Izin pada Objek
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 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 mengubah jenis paket penerapan (.zip atau image kontainer) untuk fungsi yang ada. Misalnya, Anda tidak dapat mengonversi fungsi gambar kontainer untuk menggunakan arsip file.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 runtime yang ingin Anda gunakan.
-
(Opsional) Untuk Arsitektur, pilih arsitektur set instruksi untuk fungsi Anda. Arsitektur defaultnya adalah x86_64. Pastikan bahwa paket deployment .zip untuk fungsi Anda kompatibel dengan arsitektur set instruksi yang Anda pilih.
-
-
(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 URL tautan Amazon S3 dari file.zip Anda dan pilih Simpan.
Memperbarui fungsi file.zip menggunakan editor kode konsol
Untuk beberapa fungsi dengan paket penyebaran.zip, Anda dapat menggunakan editor kode bawaan konsol Lambda untuk memperbarui kode fungsi Anda secara langsung. Untuk menggunakan fitur ini, fungsi Anda harus memenuhi kriteria berikut:
-
Fungsi Anda harus menggunakan salah satu runtime bahasa yang ditafsirkan (Python, Node.js, atau Ruby)
-
Paket penerapan fungsi Anda harus lebih kecil dari 50 MB (unzip).
Kode fungsi untuk fungsi dengan paket penerapan gambar kontainer tidak dapat diedit langsung di konsol.
Untuk memperbarui kode fungsi menggunakan editor kode konsol
-
Buka halaman Fungsi
konsol Lambda dan pilih fungsi Anda. -
Pilih tab Kode.
-
Di panel Sumber kode, pilih file kode sumber Anda dan edit di editor kode terintegrasi.
-
Di bagian DEPLOY, pilih Deploy untuk memperbarui kode fungsi Anda:
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 -
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 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 ruby3.2 --handler lambda_function.lambda_handler \ --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 ruby3.2 --handler lambda_function.lambda_handler \ --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 parameter. --function-name
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 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
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 template YAMB atau JSON 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 S3 URI, 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 AWS SAM, lihat AWS::Serverless::Functiondi Panduan AWS SAM Pengembang.
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 AWS CloudFormation, lihat AWS::Lambda::Functiondi AWS CloudFormation Panduan Pengguna.