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).
Topik
Menyiapkan penyimpanan kode S3 yang dikelola sendiri
Untuk menggunakan penyimpanan kode S3 yang dikelola sendiri, selesaikan langkah-langkah berikut:
-
Buat bucket S3 atau gunakan bucket yang ada di akun Anda.
-
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.
-
Unggah paket penerapan.zip Anda ke bucket S3.
-
Berikan prinsip layanan Lambda
s3:GetObjectdans3:GetObjectVersionizin untuk objek sumber. Lihat Meng onfigurasi izin. -
Buat atau perbarui fungsi atau lapisan Anda, tentukan objek S3, kunci S3, versi objek S3, dan setel
S3ObjectStorageModekeREFERENCE.
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)
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi untuk memperbarui dan pilih tab Kode.
-
Di bawah Kode sumber, pilih Perbarui, lalu pilih Per barui dari file di Amazon S3.
-
Untuk URL tautan Amazon S3, masukkan URL tautan S3 dari file.zip Anda.
-
Di bawah Mode penyimpanan kode, pilih Mode referensi.
-
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-bucketmy-bucket\ --s3-keymy-function.zip\ --s3-object-versionabc123def456\ --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-bucketS3Key:my-function.zipS3ObjectVersion:abc123def456S3ObjectStorageMode: 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
Inactivestatus. Untuk mengembalikan fungsi, kembalikan akses ke objek sumber dan perbarui fungsinya. -
Jika Lambda kehilangan akses ke objek sumber untuk sebuah layer, fungsi tetap
Activeada. 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
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.