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 dalam penyimpanan. Lambda-managed Setiap AWS akun memiliki kuota 300 GB untuk Lambda-managed penyimpanan 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.zip deployment maksimum, yang tetap pada 250 MB (unzip).

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. Aktifkan versi S3 untuk bucket. Lambda memerlukan versi S3 untuk melacak versi objek sumber Anda 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 Mengonfigurasi izin.

  5. Buat atau perbarui fungsi atau lapisan Anda, tentukan objek S3, tombol S3, versi objek S3, dan pengaturan ke. S3ObjectStorageMode REFERENCE

Mengonfigurasi izin

Untuk menggunakan penyimpanan kode S3 yang dikelola sendiri, berikan izin Lambda service principal (lambda.amazonaws.com) 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 atau. AWS CLI AWS CloudFormation

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, defaultnya dan COPY Lambda menyimpan kode Anda dalam penyimpanan. Lambda-managed

Penggunaan AWS CloudFormation

Dalam CloudFormation template Anda, atur S3ObjectStorageMode ke REFERENCE dalam Code properti AWS::Lambda::Function sumber 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 penyimpanan yang Lambda-managed dikelola sendiri untuk kode fungsi dan kode lapisan.

Beralih di antara mode penyimpanan

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

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

  • REFERENCE— Lambda 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 ulang 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 transisi ke status. Inactive Untuk mengembalikan fungsi, kembalikan akses ke objek sumber dan perbarui fungsinya.

  • Jika Lambda kehilangan akses ke objek sumber untuk lapisan, fungsinya tetap ada. Active 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.zip deployment maksimum (250 MB unzip) tidak berubah.

  • Anda membayar tarif penyimpanan Amazon S3 standar untuk kode yang disimpan dalam 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.