View a markdown version of this page

Self-managed Penyimpanan kode S3 - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Self-managed Penyimpanan kode S3

Secara default, saat Anda membuat atau memperbarui fungsi atau lapisan Lambda dari arsip file.zip, Lambda menyimpan salinan kode Anda di penyimpanan. Lambda-managed Setiap AWS akun memiliki kuota Lambda-managed penyimpanan 300 GB per Wilayah.

Dengan penyimpanan kode S3 yang dikelola sendiri, Anda dapat mengonfigurasi Lambda untuk mereferensikan kode Anda langsung dari bucket S3 di akun Anda. Lambda tidak menyimpan salinan kode Anda, sehingga kode tidak dihitung terhadap kuota Lambda-managed penyimpanan Anda. Lambda mengakses kode Anda langsung dari bucket S3 Anda.

Self-managed Penyimpanan kode S3 tersedia untuk semua fungsi dan lapisan yang dibuat dan diperbarui menggunakan arsip file.zip. Ini kompatibel dengan semua kelas penyimpanan S3 kecuali kelas penyimpanan Glacier.

catatan

Self-managed Penyimpanan kode S3 tidak mengubah ukuran paket penerapan.zip maksimum, yang tetap pada 250 MB (tidak di-zip).

Menyiapkan penyimpanan kode S3 yang dikelola sendiri

Untuk menggunakan penyimpanan kode S3 yang dikelola sendiri, selesaikan langkah-langkah berikut:

  1. Buat bucket S3 atau gunakan bucket yang ada di akun Anda.

  2. Akti fkan versi S3 untuk bucket. Lambda memerlukan versi S3 untuk melacak versi objek sumber yang akan digunakan. Setiap kali Anda mengunggah paket.zip baru, S3 membuat versi baru sehingga Lambda dapat membedakan pembaruan.

  3. Unggah paket penerapan.zip Anda ke bucket S3.

  4. Berikan prinsip layanan Lambda s3:GetObject dan s3:GetObjectVersion izin untuk objek sumber. Lihat Meng onfigurasi izin.

  5. Buat atau perbarui fungsi atau lapisan Anda, tentukan objek S3, kunci S3, versi objek S3, dan setel S3ObjectStorageMode keREFERENCE.

Mengonfigurasi izin

Untuk menggunakan penyimpanan kode S3 yang dikelola sendiri, berikan izin Principal (lambda.amazonaws.com) layanan Lambda untuk mengakses objek sumber Anda. Tambahkan kebijakan bucket S3 berikut:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaSelfManagedCodeAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::my-bucket/my-function.zip" ], "Principal": { "Service": "lambda.amazonaws.com" }, "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:my-function" } } } ] }

Membuat fungsi dengan penyimpanan S3 yang dikelola sendiri

Anda dapat membuat fungsi dengan penyimpanan kode S3 yang dikelola sendiri menggunakan konsol, AWS CLI, atau AWS CloudFormation.

catatan

Editor kode konsol Lambda tidak tersedia untuk fungsi yang menggunakan mode Referensi. Untuk mengedit kode fungsi, perbarui file.zip di bucket S3 Anda dan perbarui fungsinya.

Menggunakan konsol

Saat Anda memperbarui fungsi dari lokasi S3 di konsol Lambda, Anda dapat memilih mode penyimpanan kode.

Untuk memperbarui fungsi untuk menggunakan mode Referensi (konsol)
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi untuk memperbarui dan pilih tab Kode.

  3. Di bawah Kode sumber, pilih Perbarui, lalu pilih Per barui dari file di Amazon S3.

  4. Untuk URL tautan Amazon S3, masukkan URL tautan S3 dari file.zip Anda.

  5. Di bawah Mode penyimpanan kode, pilih Mode referensi.

  6. Pilih Simpan.

Setelah Anda mengonfigurasi mode Referensi, bagian Properti Kode pada tab Kode fungsi menampilkan Mode penyimpanan Kode: Referensi dan lokasi S3 yang menunjuk ke bucket S3 Anda.

Menggunakan AWS CLI

Gunakan create-function perintah dengan S3ObjectStorageMode=REFERENCE parameter:

aws lambda create-function \ --function-name my-function \ --runtime python3.12 \ --role arn:aws:iam::111122223333:role/lambda-execution-role \ --handler lambda_function.lambda_handler \ --code S3Bucket=my-bucket,\ S3Key=my-function.zip,\ S3ObjectVersion=abc123def456,\ S3ObjectStorageMode=REFERENCE

Untuk memperbarui fungsi yang ada untuk menggunakan penyimpanan S3 yang dikelola sendiri:

aws lambda update-function-code \ --function-name my-function \ --s3-bucket my-bucket \ --s3-key my-function.zip \ --s3-object-version abc123def456 \ --s3-object-storage-mode REFERENCE
penting

Anda harus menentukan S3ObjectStorageMode=REFERENCE pada setiap panggilan keupdate-function-code. Jika Anda menghilangkanS3ObjectStorageMode, default ke COPY dan Lambda menyimpan kode Anda di penyimpanan. Lambda-managed

Penggunaan AWS CloudFormation

Di CloudFormation template Anda, atur S3ObjectStorageMode ke REFERENCE dalam Code properti sumber AWS::Lambda::Function daya:

Resources: MyFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-function Runtime: python3.12 Handler: lambda_function.lambda_handler Role: !GetAtt LambdaExecutionRole.Arn Code: S3Bucket: my-bucket S3Key: my-function.zip S3ObjectVersion: abc123def456 S3ObjectStorageMode: REFERENCE

Menggunakan penyimpanan S3 yang dikelola sendiri dengan lapisan

Anda juga dapat menggunakan penyimpanan kode S3 yang dikelola sendiri untuk versi lapisan. Gunakan publish-layer-version perintah denganS3ObjectStorageMode=REFERENCE:

aws lambda publish-layer-version \ --layer-name my-layer \ --content S3Bucket=my-bucket,S3Key=my-layer.zip,S3ObjectStorageMode=REFERENCE \ --compatible-runtimes python3.12

Anda dapat menggunakan kombinasi Lambda-managed dan penyimpanan yang dikelola sendiri untuk kode fungsi dan kode lapisan.

Beralih antar mode penyimpanan

Anda dapat beralih di antara Lambda-managed penyimpanan kode S3 yang dikelola sendiri saat memperbarui kode fungsi atau menerbitkan versi lapisan baru. Setel S3ObjectStorageMode ke salah COPY satu atauREFERENCE:

  • COPY(default) — Lambda menyalin kode sumber Anda ke Lambda-managed penyimpanan.

  • REFERENCELambda mereferensikan kode sumber Anda langsung dari bucket S3 Anda tanpa menyimpan salinannya.

Saat Anda beralih dari COPY keREFERENCE, Lambda menghapus Lambda-managed salinan kode sumber Anda. Saat Anda beralih dari REFERENCE keCOPY, Lambda membuat salinan kode sumber Anda di Lambda-managed penyimpanan. Beralih ke COPY gagal jika Anda melebihi batas penyimpanan Lambda-managed kode.

Siklus hidup fungsi dengan penyimpanan yang dikelola sendiri

Lambda secara berkala mengakses objek sumber dari bucket S3 Anda untuk mengoptimalkan kembali kode fungsi Anda. Anda harus mempertahankan akses ke objek sumber agar fungsi Anda tetap aktif.

  • Jika Lambda kehilangan akses ke objek sumber untuk suatu fungsi, fungsi beralih ke Inactive status. Untuk mengembalikan fungsi, kembalikan akses ke objek sumber dan perbarui fungsinya.

  • Jika Lambda kehilangan akses ke objek sumber untuk sebuah layer, fungsi tetap Active ada. Anda dapat memperbarui konfigurasi fungsi (tanpa memperbarui lapisan), memperbarui kode fungsi, atau memperbarui konfigurasi fungsi dengan lapisan baru. Namun, memperbarui konfigurasi fungsi dengan lapisan yang tidak dapat diakses gagal.

Cross-account dan penggunaan lintas wilayah

Anda dapat membuat fungsi dan lapisan dari kode sumber di bucket S3 di akun yang berbeda dan di Wilayah yang berbeda. Cross-Region pengambilan objek menimbulkan biaya transfer data S3 tambahan. Lihat harga S3 untuk detailnya.

Pertimbangan-pertimbangan

  • Self-managed Penyimpanan kode S3 tersedia untuk fungsi dan lapisan arsip file.zip saja. Fungsi gambar kontainer terus menggunakan Amazon ECR.

  • Ukuran paket penerapan.zip maksimum (250 MB dibuka ritsleting) tidak berubah.

  • Anda membayar tarif penyimpanan Amazon S3 standar untuk kode yang disimpan di bucket yang dikelola sendiri. Lambda tidak mengenakan biaya untuk pengambilan objek S3 dalam Wilayah yang sama.

  • Self-managed Penyimpanan kode S3 kompatibel dengan semua kelas penyimpanan S3 kecuali kelas penyimpanan Glacier.

  • Anda dapat menggunakan fitur S3 seperti Cross-Region Replikasi S3 untuk berbagi artefak di seluruh Wilayah dan kebijakan siklus hidup S3 untuk mengelola objek.