Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan kode Fungsi Web dari Amazon S3
Anda memberikan kode Fungsi Web Lambda sebagai paket penyebaran.zip di bucket Amazon S3. Ini adalah satu-satunya cara untuk menyediakan kode untuk Fungsi Web. Saat Anda membuat Fungsi Web atau revisi, tentukan objek di s3Object bidang, yang bersarang codeConfig di bawah permintaan. buildConfig Dis3Object, sertakan bucket, key, dan versionID opsional. Lambda mereferensikan kode Anda langsung dari ember Anda. Karena Lambda menyematkan setiap revisi ke versi objek tertentu, penerapan Anda dapat direproduksi. Anda dapat menggunakan kembali satu paket penerapan di seluruh akun dan AWS Wilayah.
Topik
Prasyarat
Sebelum menerapkan kode Fungsi Web dari Amazon S3, pastikan paket bucket dan deployment memenuhi persyaratan berikut:
- Versi S3
-
Bucket harus mengaktifkan versi S3. Lambda menggunakan versi objek untuk melacak versi kode Anda yang digunakan revisi.
- ID Versi
-
versionIdParameternya opsional dalam permintaan. Jika Anda menghilangkannya, Lambda menggunakan versi terbaru dari objek pada waktu pembuatan. Either way, Lambda menyematkan revisi ke versi objek tertentu. - Ukuran paket penyebaran maksimum
-
512 MB (dibuka ritsleting).
- Berkas entri
-
Paket deployment harus berisi file entri aplikasi Anda. Secara default, runtime dimuat
index.jsdi root paket. Untuk menggunakan file entri yang berbeda, atur variabelAWS_LAMBDA_NODEJS_ENTRYPOINTlingkungan pada revisi ke jalur file relatif terhadap root paket. Setelah memuat file entri, runtime menunggu server HTTP Anda mulai mendengarkan di host dan port dari variabelAWS_LAMBDA_HTTP_ENDPOINTlingkungan. Jika runtime tidak dapat menyelesaikan file entri, atau server tidak pernah mulai mendengarkan, inisialisasi gagal dan permintaan ke titik akhir gagal.Lambda tidak memverifikasi bahwa server Anda mulai mendengarkan saat membuat atau memperbarui titik akhir untuk menggunakan revisi. Revisi dan titik akhir masih dapat ditampilkan
Activedalam kasus ini. Setelah setiap penerapan, kirim permintaan pengujian dan periksa log aplikasi Anda. - Lokasi ember
-
Bucket dapat berada di AWS akun yang berbeda dan di AWS Wilayah yang berbeda dari Fungsi Web. Bucket harus berada di AWS partisi yang sama dengan Fungsi Web. Bucket tidak dapat berada di Wilayah keikutsertaan (Wilayah yang tidak diaktifkan secara default). Jika salah satu kondisi tidak terpenuhi, Lambda menolak permintaan tersebut. Cross-Region pengambilan objek menimbulkan biaya transfer data Amazon S3 tambahan. Untuk informasi selengkapnya tentang harga, lihat Harga Amazon S3
.
Izin yang diperlukan
Untuk menerapkan kode Fungsi Web dari Amazon S3, Anda harus mengonfigurasi izin untuk identitas panggilan dan prinsip layanan Lambda.
Izin penelepon
Untuk membuat Fungsi Web atau revisi, identitas IAM Anda memerlukan izin berikut pada objek S3:
-
s3:GetObject -
s3:GetObjectVersion
Untuk bucket lintas akun, kebijakan bucket juga harus memberikan akses identitas panggilan ke objek.
Kebijakan bucket untuk Lambda
Kebijakan bucket harus memberikan Lambda service principal (lambda.amazonaws.com) s3:GetObject dan s3:GetObjectVersion izin. Lingkup kebijakan dengan aws:SourceArn kondisi yang sesuai dengan pola ARN revisi. Gunakan ArnLike dengan wildcard untuk ID revisi, karena Lambda menghasilkan ID revisi saat Anda membuat revisi.
Jika objek dienkripsi dengan AWS KMS key (SSE-KMS), kebijakan kunci juga harus mengizinkan lambda.amazonaws.com untuk memanggil kms:Decrypt kunci itu. Lambda memeriksa akses kepala layanan saat Anda membuat revisi dan menolak permintaan jika akses tidak ada.
Contoh kebijakan bucket berikut memberi Lambda akses untuk membaca paket penerapan Anda untuk setiap revisi Fungsi Web yang ditentukan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLambdaWebFunctionCodeAccess", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::my-bucket/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*" } } } ] }
Untuk membatasi akses ke key prefix yang menyimpan paket deployment Anda, ubah Resource nilainya menjadi, di mana nama bucket Andaarn:aws:s3:::, dan my-bucket/my-prefix/*my-bucket my-prefix merupakan key prefix. Simpan /* di akhir awalan. Jangan ubah revision/* wildcard diaws:SourceArn.
Membuat Fungsi Web dengan kode dari Amazon S3
Anda menentukan paket penyebaran S3 Anda di codeConfig bagian. buildConfig Prosedur berikut menunjukkan cara membuat Fungsi Web dan cara membuat revisi baru menggunakan. AWS CLI
Untuk membuat Fungsi Web dengan kode dari Amazon S3 (AWS CLI)
-
Jalankan perintah berikut untuk membuat Fungsi Web yang mereferensikan paket deployment .zip Anda di Amazon S3.
aws lambda-web create-web-function \ --function-namemy-web-app\ --revision-config '{ "buildConfig": { "codeConfig": { "s3Object": { "bucket": "my-bucket", "key": "my-app.zip" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }, "serviceConfig": { "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role" } }' \ --endpoint-config '{ "endpointName": "my-endpoint", "endpointType": "HomeRegion", "authType": "ApplicationManaged" }'Ketika Anda menghilangkan
versionId, Lambda menggunakan versi terbaru dari objek pada waktu pembuatan.
Untuk membuat revisi baru dengan versi objek tertentu (AWS CLI)
-
Jalankan perintah berikut untuk membuat revisi baru yang menggunakan versi tertentu dari paket penyebaran Anda.
aws lambda-web create-web-function-revision \ --function-namemy-web-app\ --build-config '{ "codeConfig": { "s3Object": { "bucket": "my-bucket", "key": "my-app.zip", "versionId": "abc123def456" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }' \ --service-config '{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role" }'Dengan menentukan
versionId, Anda menyematkan revisi ke versi objek yang tepat daripada versi terbaru.
Siklus hidup objek
Jangan hapus objek S3 atau hapus akses Lambda untuk revisi aktif
Lambda mereferensikan kode Anda dari bucket Amazon S3 Anda. Jika Anda menghapus objek S3 yang digunakan revisi, atau versi objek tertentu yang digunakan revisi, revisi akan berpindah ke status Failed saat Lambda selanjutnya memverifikasi akses ke objek, dan kemudian tidak dapat lagi melayani lalu lintas. Simpan versi objek untuk semua revisi yang masih Anda gunakan.
Menghapus akses kepala layanan Lambda ke bucket memiliki efek yang sama. Jika Anda mengubah kebijakan bucket untuk menolak atau menghapus s3:GetObject dan s3:GetObjectVersion izin untuklambda.amazonaws.com, revisi yang ada yang mereferensikan objek dalam bucket tersebut akan dipindahkan ke status. Failed Pertahankan objek dan akses baca kepala layanan Lambda selama revisi apa pun mereferensikan objek tersebut.
FailedNegara adalah permanen. Memulihkan objek yang dihapus atau izin bucket tidak mengembalikan revisi ke status. Active Untuk memulihkan, buat revisi baru yang mereferensikan versi objek yang tersedia, lalu perbarui bobot revisi titik akhir Anda untuk mengarahkan lalu lintas ke sana. Untuk pola penerapan, lihatPola deployment.
Lambda tidak secara otomatis mengalihkan lalu lintas dari revisi. Failed Permintaan bahwa rute titik akhir ke Failed revisi ditolak dengan kode status HTTP 409 dan header lambda-web-error-type respons dari. Platform.RevisionNotActive Jika titik akhir membebani lalu lintas di beberapa revisi, hanya bagian permintaan yang diarahkan ke revisi yang terpengaruh; permintaan yang diarahkan ke Failed revisi sehat disajikan secara normal. Untuk menghentikan kegagalan, perbarui bobot revisi titik akhir untuk menghapus revisi. Failed
Menimpa objek dengan unggahan baru membuat versi S3 baru. Ini tidak memengaruhi revisi yang ada: saat Anda membuat revisi, Lambda menyelesaikan dan menyematkan versi objek yang tepat, bahkan ketika Anda menghilangkannya. versionId Namun, jika Anda menghapus versi objek lama yang direferensikan revisi, revisi tersebut Failed pindah ke status. Mengunggah objek pengganti tidak membantu, karena penggantian adalah versi baru dengan ID versi yang berbeda.
Multi-Region penyebaran
Untuk Fungsi Web dengan MultiRegion atau PerRegion titik akhir, Lambda membaca objek sumber Anda dari bucket yang Anda tentukan, di Wilayah mana pun bucket berada. Lambda kemudian mereplikasi artefak kode yang disiapkan yang diturunkan dari objek itu ke Wilayah lain. Anda tidak perlu menyalin paket penerapan Anda ke bucket di Wilayah lain. Untuk informasi lebih lanjut tentang apa yang direplikasi Lambda, lihat. Apa yang direplikasi Lambda