View a markdown version of this page

Deploy fungsi Lambda Go dengan gambar kontainer - AWS Lambda

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

Deploy fungsi Lambda Go dengan gambar kontainer

Ada dua cara untuk membangun image wadah untuk fungsi Go Lambda:

  • Menggunakan sebuah AWS OS-only gambar dasar

    Go diimplementasikan secara berbeda dari runtime terkelola lainnya. Karena Go mengkompilasi secara asli ke biner yang dapat dieksekusi, itu tidak memerlukan runtime bahasa khusus. Gunakan gambar OS-only dasar untuk membuat gambar Go untuk Lambda. Untuk membuat gambar kompatibel dengan Lambda, Anda harus menyertakan aws-lambda-go/lambda paket dalam gambar.

  • Menggunakan non-AWS gambar dasar

    Anda dapat menggunakan gambar dasar alternatif dari registri kontainer lain, seperti Alpine Linux atau Debian. Anda juga dapat menggunakan gambar khusus yang dibuat oleh organisasi Anda. Untuk membuat gambar kompatibel dengan Lambda, Anda harus menyertakan aws-lambda-go/lambda paket dalam gambar.

Tip

Untuk mengurangi waktu yang dibutuhkan fungsi penampung Lambda untuk menjadi aktif, lihat Menggunakan build multi-tahap dalam dokumentasi Docker. Untuk membangun image kontainer yang efisien, ikuti Praktik terbaik untuk menulis Dockerfiles.

Halaman ini menjelaskan cara membuat, menguji, dan menerapkan gambar kontainer untuk Lambda.

AWS gambar dasar untuk menerapkan fungsi Go

Go diimplementasikan secara berbeda dari runtime terkelola lainnya. Karena Go mengkompilasi secara asli ke biner yang dapat dieksekusi, itu tidak memerlukan runtime bahasa khusus. Gunakan image OS-only dasar untuk menerapkan fungsi Go ke Lambda.

Nama Pengidentifikasi Sistem operasi Tanggal pengusangan Blokir fungsi buat Pembaruan fungsi blok

OS-only Waktu pelaksanaan

provided.al2023

Amazon Linux 2023

30 Juni 2029

31 Juli 2029

31 Agu 2029

Galeri Publik Registri Kontainer Elastis Amazon: gallery.cr. aws/lambda/disediakan

Klien antarmuka Go runtime

Paket aws-lambda-go/lambda termasuk implementasi dari antarmuka runtime. Untuk contoh cara menggunakan aws-lambda-go/lambda dalam gambar Anda, lihat Menggunakan sebuah AWS OS-only gambar dasar atauMenggunakan non-AWS gambar dasar.

Menggunakan sebuah AWS OS-only gambar dasar

Go diimplementasikan secara berbeda dari runtime terkelola lainnya. Karena Go mengkompilasi secara asli ke biner yang dapat dieksekusi, itu tidak memerlukan runtime bahasa khusus. Gunakan gambar OS-only dasar untuk membuat gambar kontainer untuk fungsi Go.

Tag Waktu berjalan Sistem operasi Dockerfile Penghentian

al2023

OS-only Waktu pelaksanaan Amazon Linux 2023 Dockerfile untuk Runtime aktif OS-only GitHub

30 Juni 2029

Untuk informasi lebih lanjut tentang gambar dasar ini, lihat disediakan di galeri publik Amazon ECR.

Anda harus menyertakan go/lambda paket aws-lambda- dengan handler Go Anda. Paket ini mengimplementasikan model pemrograman untuk Go, termasuk antarmuka runtime.

Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki hal-hal berikut:

Untuk membangun dan menerapkan fungsi Go dengan gambar dasar. al2023 yang disediakan
  1. Buat direktori untuk proyek, dan kemudian beralih ke direktori itu.

    mkdir hello cd hello
  2. Inisialisasi modul Go baru.

    go mod init example.com/hello-world
  3. Tambahkan per pustakaan lambda sebagai ketergantungan modul baru Anda.

    go get github.com/aws/aws-lambda-go/lambda
  4. Buat file bernama main.go dan kemudian buka di editor teks. Ini adalah kode untuk fungsi Lambda. Anda dapat menggunakan kode sampel berikut untuk pengujian, atau menggantinya dengan milik Anda sendiri.

    package main import ( "context" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) func handler(ctx context.Context, event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { response := events.APIGatewayProxyResponse{ StatusCode: 200, Body: "\"Hello from Lambda!\"", } return response, nil } func main() { lambda.Start(handler) }
  5. Gunakan editor teks untuk membuat Dockerfile di direktori proyek Anda.

    • Contoh berikut Dockerfile menggunakan build multi-tahap di situs web dokumentasi Docker. Dengan build multi-tahap, Anda dapat menggunakan gambar dasar yang berbeda di setiap langkah. Anda dapat menggunakan satu gambar, seperti gambar dasar Go di Docker Hub, untuk mengkompilasi kode Anda dan membangun biner yang dapat dieksekusi. Anda kemudian dapat menggunakan gambar yang berbeda, sepertiprovided.al2023, dalam FROM pernyataan akhir untuk menentukan gambar yang Anda terapkan ke Lambda. Pembuatan multi-tahap memisahkan proses build dari image penerapan akhir, sehingga gambar akhir hanya berisi file yang diperlukan untuk menjalankan aplikasi.

    • Anda dapat menggunakan lambda.norpc tag opsional untuk mengecualikan komponen Remote Procedure Call (RPC) dari perpustakaan lambda. Komponen RPC hanya diperlukan jika Anda menggunakan runtime Go 1.x yang tidak digunakan lagi. Mengecualikan RPC mengurangi ukuran paket penerapan.

    • Perhatikan bahwa contoh Dockerfile tidak menyertakan instruksi USER. Saat Anda menerapkan image kontainer ke Lambda, Lambda secara otomatis mendefinisikan pengguna Linux default dengan izin yang paling tidak memiliki hak istimewa. Ini berbeda dari perilaku Docker standar yang default ke root pengguna ketika tidak ada USER instruksi yang diberikan.

    contoh- Multi-stage membangun Dockerfile
    catatan

    Pastikan bahwa versi Go yang Anda tentukan di Dockerfile Anda (misalnya,golang:1.20) adalah versi Go yang sama yang Anda gunakan untuk membuat aplikasi Anda.

    FROM golang:1.20 as build WORKDIR /helloworld # Copy dependencies list COPY go.mod go.sum ./ # Build with optional lambda.norpc tag COPY main.go . RUN go build -tags lambda.norpc -o main main.go # Copy artifacts to a clean image FROM public.ecr.aws/lambda/provided:al2023 COPY --from=build /helloworld/main ./main ENTRYPOINT [ "./main" ]
  6. Bangun image Docker dengan perintah docker build. Contoh berikut memberi nama gambar docker-image dan memberinya test tag. Untuk membuat gambar Anda kompatibel dengan Lambda, Anda harus menggunakan --provenance=false opsi.

    docker buildx build --platform linux/amd64 --provenance=false -t docker-image:test .
    catatan

    Perintah menentukan --platform linux/amd64 opsi untuk memastikan bahwa wadah Anda kompatibel dengan lingkungan eksekusi Lambda terlepas dari arsitektur mesin build Anda. Jika Anda bermaksud membuat fungsi Lambda menggunakan arsitektur set instruksi ARM64, pastikan untuk mengubah perintah untuk menggunakan --platform linux/arm64 opsi sebagai gantinya.

Gunakan emulator antarmuka runtime untuk menguji gambar Anda secara lokal. Emulator antarmuka runtime disertakan dalam gambar provided.al2023 dasar.

Untuk menjalankan emulator antarmuka runtime di mesin lokal Anda
  1. Mulai gambar Docker dengan perintah docker run. Perhatikan hal-hal berikut:

    • docker-imageadalah nama gambar dan test merupakan tag.

    • ./mainadalah ENTRYPOINT dari Dockerfile Anda.

    docker run -d -p 9000:8080 \ --entrypoint /usr/local/bin/aws-lambda-rie \ docker-image:test ./main

    Perintah ini menjalankan gambar sebagai wadah dan membuat titik akhir lokal dilocalhost:9000/2015-03-31/functions/function/invocations.

  2. Dari jendela terminal baru, posting peristiwa ke titik akhir berikut menggunakan perintah curl:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Perintah ini memanggil fungsi dengan peristiwa kosong dan mengembalikan respons. Beberapa fungsi mungkin memerlukan muatan JSON. Contoh:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
  3. Dapatkan ID kontainer.

    docker ps
  4. Gunakan perintah docker kill untuk menghentikan wadah. Dalam perintah ini, ganti 3766c4ab331c dengan ID kontainer dari langkah sebelumnya.

    docker kill 3766c4ab331c
Untuk mengunggah gambar ke Amazon ECR dan membuat fungsi Lambda
  1. Jalankan perintah get-login-password untuk mengotentikasi Docker CLI ke registri Amazon ECR Anda.

    • Tetapkan --region nilai ke Wilayah AWS tempat Anda ingin membuat repositori Amazon ECR.

    • Ganti 111122223333 dengan Akun AWS ID Anda.

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
  2. Buat repositori di Amazon ECR menggunakan perintah create-repository.

    aws ecr create-repository --repository-name hello-world --region us-east-1 --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    catatan

    Repositori Amazon ECR harus Wilayah AWS sama dengan fungsi Lambda.

    Jika berhasil, Anda melihat respons seperti ini:

    { "repository": { "repositoryArn": "arn:aws:ecr:us-east-1:111122223333:repository/hello-world", "registryId": "111122223333", "repositoryName": "hello-world", "repositoryUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world", "createdAt": "2023-03-09T10:39:01+00:00", "imageTagMutability": "MUTABLE", "imageScanningConfiguration": { "scanOnPush": true }, "encryptionConfiguration": { "encryptionType": "AES256" } } }
  3. Salin repositoryUri dari output pada langkah sebelumnya.

  4. Jalankan perintah tag docker untuk menandai gambar lokal Anda ke repositori Amazon ECR Anda sebagai versi terbaru. Dalam perintah ini:

    • docker-image:testadalah nama dan tag gambar Docker Anda. Ini adalah nama gambar dan tag yang Anda tentukan dalam docker build perintah.

    • Ganti <ECRrepositoryUri> dengan repositoryUri yang Anda salin. Pastikan untuk menyertakan :latest di akhir URI.

    docker tag docker-image:test <ECRrepositoryUri>:latest

    Contoh:

    docker tag docker-image:test 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  5. Jalankan perintah docker push untuk menyebarkan gambar lokal Anda ke repositori Amazon ECR. Pastikan untuk menyertakan :latest di akhir URI repositori.

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  6. Buat peran eksekusi untuk fungsi, jika Anda belum memilikinya. Anda memerlukan Nama Sumber Daya Amazon (ARN) dari peran di langkah berikutnya.

  7. Buat fungsi Lambda. UntukImageUri, tentukan URI repositori dari sebelumnya. Pastikan untuk menyertakan :latest di akhir URI.

    aws lambda create-function \ --function-name hello-world \ --package-type Image \ --code ImageUri=111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --role arn:aws:iam::111122223333:role/lambda-ex
    catatan

    Anda dapat membuat fungsi menggunakan gambar di AWS akun yang berbeda, selama gambar berada di Wilayah yang sama dengan fungsi Lambda. Untuk informasi selengkapnya, lihat Izin lintas akun Amazon ECR.

  8. Memanggil fungsi.

    aws lambda invoke --function-name hello-world response.json

    Anda akan melihat respons seperti ini:

    { "ExecutedVersion": "$LATEST", "StatusCode": 200 }
  9. Untuk melihat output fungsi, periksa response.json file.

Untuk memperbarui kode fungsi, Anda harus membuat gambar lagi, mengunggah gambar baru ke repositori Amazon ECR, dan kemudian menggunakan perintah update-function-code untuk menyebarkan gambar ke fungsi Lambda.

Lambda menyelesaikan tag gambar ke intisari gambar tertentu. Ini berarti bahwa jika Anda mengarahkan tag gambar yang digunakan untuk menerapkan fungsi ke gambar baru di Amazon ECR, Lambda tidak secara otomatis memperbarui fungsi untuk menggunakan gambar baru.

Untuk menerapkan gambar baru ke fungsi Lambda yang sama, Anda harus menggunakan perintah update-function-code, bahkan jika tag gambar di Amazon ECR tetap sama. Dalam contoh berikut, --publish opsi membuat versi baru dari fungsi menggunakan gambar kontainer yang diperbarui.

aws lambda update-function-code \ --function-name hello-world \ --image-uri 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --publish

Menggunakan non-AWS gambar dasar

Anda dapat membuat gambar wadah untuk Go dari gambar non-AWS dasar. Contoh Dockerfile dalam langkah-langkah berikut menggunakan gambar dasar Alpine.

Anda harus menyertakan go/lambda paket aws-lambda- dengan handler Go Anda. Paket ini mengimplementasikan model pemrograman untuk Go, termasuk antarmuka runtime.

Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki hal-hal berikut:

Untuk membangun dan menerapkan fungsi Go dengan gambar dasar Alpine
  1. Buat direktori untuk proyek, dan kemudian beralih ke direktori itu.

    mkdir hello cd hello
  2. Inisialisasi modul Go baru.

    go mod init example.com/hello-world
  3. Tambahkan per pustakaan lambda sebagai ketergantungan modul baru Anda.

    go get github.com/aws/aws-lambda-go/lambda
  4. Buat file bernama main.go dan kemudian buka di editor teks. Ini adalah kode untuk fungsi Lambda. Anda dapat menggunakan kode sampel berikut untuk pengujian, atau menggantinya dengan milik Anda sendiri.

    package main import ( "context" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) func handler(ctx context.Context, event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { response := events.APIGatewayProxyResponse{ StatusCode: 200, Body: "\"Hello from Lambda!\"", } return response, nil } func main() { lambda.Start(handler) }
  5. Gunakan editor teks untuk membuat Dockerfile di direktori proyek Anda. Contoh berikut Dockerfile menggunakan gambar dasar Alpine. Perhatikan bahwa contoh Dockerfile tidak menyertakan instruksi USER. Saat Anda menerapkan image kontainer ke Lambda, Lambda secara otomatis mendefinisikan pengguna Linux default dengan izin yang paling tidak memiliki hak istimewa. Ini berbeda dari perilaku Docker standar yang default ke root pengguna ketika tidak ada USER instruksi yang diberikan.

    contoh Dockerfile
    catatan

    Pastikan bahwa versi Go yang Anda tentukan di Dockerfile Anda (misalnya,golang:1.20) adalah versi Go yang sama yang Anda gunakan untuk membuat aplikasi Anda.

    FROM golang:1.20.2-alpine3.16 as build WORKDIR /helloworld # Copy dependencies list COPY go.mod go.sum ./ # Build COPY main.go . RUN go build -o main main.go # Copy artifacts to a clean image FROM alpine:3.16 COPY --from=build /helloworld/main /main ENTRYPOINT [ "/main" ]
  6. Bangun image Docker dengan perintah docker build. Contoh berikut memberi nama gambar docker-image dan memberinya test tag. Untuk membuat gambar Anda kompatibel dengan Lambda, Anda harus menggunakan --provenance=false opsi.

    docker buildx build --platform linux/amd64 --provenance=false -t docker-image:test .
    catatan

    Perintah menentukan --platform linux/amd64 opsi untuk memastikan bahwa wadah Anda kompatibel dengan lingkungan eksekusi Lambda terlepas dari arsitektur mesin build Anda. Jika Anda ingin membuat fungsi Lambda menggunakan arsitektur set instruksi ARM64, pastikan untuk mengubah perintah untuk menggunakan --platform linux/arm64 opsi sebagai gantinya.

Gunakan emulator antarmuka runtime untuk menguji gambar secara lokal. Anda dapat membangun emulator ke dalam gambar Anda atau menggunakan prosedur berikut untuk menginstalnya di mesin lokal Anda.

Untuk menginstal dan menjalankan emulator antarmuka runtime di mesin lokal Anda
  1. Dari direktori proyek Anda, jalankan perintah berikut untuk mengunduh emulator antarmuka runtime (arsitektur x86-64) dari GitHub dan menginstalnya di mesin lokal Anda.

    Linux/macOS
    mkdir -p ~/.aws-lambda-rie && \ curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie && \ chmod +x ~/.aws-lambda-rie/aws-lambda-rie

    Untuk menginstal emulator arm64, ganti URL GitHub repositori di perintah sebelumnya dengan yang berikut:

    https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie-arm64
    PowerShell
    $dirPath = "$HOME\.aws-lambda-rie" if (-not (Test-Path $dirPath)) { New-Item -Path $dirPath -ItemType Directory } $downloadLink = "https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie" $destinationPath = "$HOME\.aws-lambda-rie\aws-lambda-rie" Invoke-WebRequest -Uri $downloadLink -OutFile $destinationPath

    Untuk menginstal emulator arm64, ganti $downloadLink dengan yang berikut ini:

    https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie-arm64
  2. Mulai gambar Docker dengan perintah docker run. Perhatikan hal-hal berikut:

    • docker-imageadalah nama gambar dan test merupakan tag.

    • /mainadalah ENTRYPOINT dari Dockerfile Anda.

    Linux/macOS
    docker run --platform linux/amd64 -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \ --entrypoint /aws-lambda/aws-lambda-rie \ docker-image:test \ /main
    PowerShell
    docker run --platform linux/amd64 -d -v "$HOME\.aws-lambda-rie:/aws-lambda" -p 9000:8080 ` --entrypoint /aws-lambda/aws-lambda-rie ` docker-image:test ` /main

    Perintah ini menjalankan gambar sebagai wadah dan membuat titik akhir lokal dilocalhost:9000/2015-03-31/functions/function/invocations.

    catatan

    Jika Anda membuat gambar Docker untuk arsitektur set instruksi ARM64, pastikan untuk menggunakan --platform linux/arm64 opsi alih-alih. --platform linux/amd64

  3. Posting acara ke titik akhir lokal.

    Linux/macOS

    Di Linux dan macOS, jalankan curl perintah berikut:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Perintah ini memanggil fungsi dengan peristiwa kosong dan mengembalikan respons. Jika Anda menggunakan kode fungsi Anda sendiri daripada kode fungsi sampel, Anda mungkin ingin memanggil fungsi dengan muatan JSON. Contoh:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
    PowerShell

    Di PowerShell, jalankan Invoke-WebRequest perintah berikut:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{}' -ContentType "application/json"

    Perintah ini memanggil fungsi dengan peristiwa kosong dan mengembalikan respons. Jika Anda menggunakan kode fungsi Anda sendiri daripada kode fungsi sampel, Anda mungkin ingin memanggil fungsi dengan muatan JSON. Contoh:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{"payload":"hello world!"}' -ContentType "application/json"
  4. Dapatkan ID kontainer.

    docker ps
  5. Gunakan perintah docker kill untuk menghentikan wadah. Dalam perintah ini, ganti 3766c4ab331c dengan ID kontainer dari langkah sebelumnya.

    docker kill 3766c4ab331c
Untuk mengunggah gambar ke Amazon ECR dan membuat fungsi Lambda
  1. Jalankan perintah get-login-password untuk mengotentikasi Docker CLI ke registri Amazon ECR Anda.

    • Tetapkan --region nilai ke Wilayah AWS tempat Anda ingin membuat repositori Amazon ECR.

    • Ganti 111122223333 dengan Akun AWS ID Anda.

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
  2. Buat repositori di Amazon ECR menggunakan perintah create-repository.

    aws ecr create-repository --repository-name hello-world --region us-east-1 --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    catatan

    Repositori Amazon ECR harus Wilayah AWS sama dengan fungsi Lambda.

    Jika berhasil, Anda melihat respons seperti ini:

    { "repository": { "repositoryArn": "arn:aws:ecr:us-east-1:111122223333:repository/hello-world", "registryId": "111122223333", "repositoryName": "hello-world", "repositoryUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world", "createdAt": "2023-03-09T10:39:01+00:00", "imageTagMutability": "MUTABLE", "imageScanningConfiguration": { "scanOnPush": true }, "encryptionConfiguration": { "encryptionType": "AES256" } } }
  3. Salin repositoryUri dari output pada langkah sebelumnya.

  4. Jalankan perintah tag docker untuk menandai gambar lokal Anda ke repositori Amazon ECR Anda sebagai versi terbaru. Dalam perintah ini:

    • docker-image:testadalah nama dan tag gambar Docker Anda. Ini adalah nama gambar dan tag yang Anda tentukan dalam docker build perintah.

    • Ganti <ECRrepositoryUri> dengan repositoryUri yang Anda salin. Pastikan untuk menyertakan :latest di akhir URI.

    docker tag docker-image:test <ECRrepositoryUri>:latest

    Contoh:

    docker tag docker-image:test 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  5. Jalankan perintah docker push untuk menyebarkan gambar lokal Anda ke repositori Amazon ECR. Pastikan untuk menyertakan :latest di akhir URI repositori.

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  6. Buat peran eksekusi untuk fungsi, jika Anda belum memilikinya. Anda memerlukan Nama Sumber Daya Amazon (ARN) dari peran di langkah berikutnya.

  7. Buat fungsi Lambda. UntukImageUri, tentukan URI repositori dari sebelumnya. Pastikan untuk menyertakan :latest di akhir URI.

    aws lambda create-function \ --function-name hello-world \ --package-type Image \ --code ImageUri=111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --role arn:aws:iam::111122223333:role/lambda-ex
    catatan

    Anda dapat membuat fungsi menggunakan gambar di AWS akun yang berbeda, selama gambar berada di Wilayah yang sama dengan fungsi Lambda. Untuk informasi selengkapnya, lihat Izin lintas akun Amazon ECR.

  8. Memanggil fungsi.

    aws lambda invoke --function-name hello-world response.json

    Anda akan melihat respons seperti ini:

    { "ExecutedVersion": "$LATEST", "StatusCode": 200 }
  9. Untuk melihat output fungsi, periksa response.json file.

Untuk memperbarui kode fungsi, Anda harus membuat gambar lagi, mengunggah gambar baru ke repositori Amazon ECR, dan kemudian menggunakan perintah update-function-code untuk menyebarkan gambar ke fungsi Lambda.

Lambda menyelesaikan tag gambar ke intisari gambar tertentu. Ini berarti bahwa jika Anda mengarahkan tag gambar yang digunakan untuk menerapkan fungsi ke gambar baru di Amazon ECR, Lambda tidak secara otomatis memperbarui fungsi untuk menggunakan gambar baru.

Untuk menerapkan gambar baru ke fungsi Lambda yang sama, Anda harus menggunakan perintah update-function-code, bahkan jika tag gambar di Amazon ECR tetap sama. Dalam contoh berikut, --publish opsi membuat versi baru dari fungsi menggunakan gambar kontainer yang diperbarui.

aws lambda update-function-code \ --function-name hello-world \ --image-uri 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --publish