Kinerja AWS Lambda: JavaScript vs Python vs Golang
Bahasa apa yang harus digunakan untuk AWS Lambda?
Kita dapat menulis fungsi lambda untuk deployment ke AWS dalam beberapa bahasa. Mari kita bandingkan kinerja fungsi (hampir kosong) yang ditulis dalam JavaScript, Python, dan Golang…
TL;DR
Dengan singkat:
Bahasa | Durasi Billed Warm-up | Durasi Billed | Ukuran Memori | Memori Maksimal yang Digunakan |
---|---|---|---|---|
Python | 197 ms | 2 ms | 128 MB | 32 MB |
Python S3 | 516 ms | 35 ms | 128 MB | 77 MB |
JavaScript | 2 ms | 2 ms | 128 MB | 63 MB |
JavaScript S3 | 120 ms | 72 ms | 128 MB | 89 MB |
Golang | 11 ms | 1 ms | 128 MB | 20 MB |
Golang S3 | 30 ms | 29 ms | 128 MB | 38 MB |
- Python memiliki waktu warm-up terlama pada 128GB RAM,
- JavaScript adalah yang paling lambat secara keseluruhan
- Golang adalah yang terbaik dari ketiga tersebut tetapi tidak secara signifikan
Opsi menarik adalah mempercepat fungsi lambda Python dengan menambahkan lebih banyak memori, dan sekaligus CPU. Ini hanya akan mengurangi waktu warmup, saya kira. Memanggil ke S3 tidak akan menjadi lebih lambat.
Dalam uji sintetik prime numbers
oleh AWS - biaya menjalankan Python lambda sama dengan menggunakan 128MB dan 512MB batas RAM,
dan kinerja pengaturan 512MB jauh lebih cepat.
https://docs.aws.amazon.com/lambda/latest/operatorguide/computing-power.html
Apa itu AWS SAM
Kami menggunakan SAM untuk menguji berbagai fungsi lambda di sini.
AWS SAM adalah Serverless Application Model.
Proyek AWS SAM mencakup template AWS SAM dan kode fungsi. Template SAM menggambarkan bagaimana cara mendeploy, menjalankan, dan menguji fungsi lambda, izin dan parameter penting lainnya untuk membuat stack CloudFormation.
Untuk menggunakan SAM, kita membutuhkan aws cli
dan sam cli
.
Menginstal AWS cli
Cara lokal: Install AWS CLI di Reinstall linux doc
Atau di situs aws: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
Menginstal SAM cli
Secara dasar - Unduh file zip installer SAM cli dari situs AWS, ekstrak dan instal
wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip
unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
sudo ./sam-installation/install
# periksa apakah sam sudah terinstal
sam --version
Bersihkan file installer
rm -rf sam-installation
rm aws-sam-cli-linux-x86_64.zip
Membuat fungsi lambda
Memanggil skrip tiga kali
sam init
dan memilih template hello-world setiap kali, tetapi dengan bahasa yang berbeda, kita membuat 3 aplikasi sam
Fungsi Lambda berbasis Python 3.12
keluaran dari sam init
:
-----------------------
Generating application:
-----------------------
Name: t1-py
Runtime: python3.12
Architectures: x86_64
Dependency Manager: pip
Application Template: hello-world
Output Directory: .
Configuration file: t1-py/samconfig.toml
Langkah berikutnya dapat ditemukan di file README di t1-py/README.md
Perintah yang dapat digunakan berikutnya
=========================
[*] Membuat pipeline: cd t1-py && sam pipeline init --bootstrap
[*] Memvalidasi template SAM: cd t1-py && sam validate
[*] Uji Fungsi di Cloud: cd t1-py && sam sync --stack-name {stack-name} --watch
Fungsi Lambda berbasis JavaScript dan nodejs20.x
keluaran dari sam init
:
-----------------------
Generating application:
-----------------------
Name: t2-js
Runtime: nodejs20.x
Architectures: x86_64
Dependency Manager: npm
Application Template: hello-world
Output Directory: .
Configuration file: t2-js/samconfig.toml
Langkah berikutnya dapat ditemukan di file README di t2-js/README.md
...
Fungsi Lambda berbasis Golang (aws image al2023)
keluaran dari sam init
:
-----------------------
Generating application:
-----------------------
Name: t3-go
Runtime: go (provided.al2023)
Architectures: x86_64
Dependency Manager: mod
Application Template: hello-world
Output Directory: .
Configuration file: t3-go/samconfig.toml
Langkah berikutnya dapat ditemukan di file README di t3-go/README.md
Membangun, Uji, Deploy, dan Eksekusi - Fungsi Lambda berbasis Python
uji secara lokal
sam build --use-container
keluaran menunjukkan di akhir:
Perintah yang dapat digunakan berikutnya
=========================
[*] Memvalidasi template SAM: sam validate
[*] Memanggil Fungsi: sam local invoke
[*] Uji Fungsi di Cloud: sam sync --stack-name {{stack-name}} --watch
[*] Deploy: sam deploy --guided
setelah menjalankan tiga kali
sam local invoke
keluaran yang kita lihat:
LAPORAN RequestId: 3b36575a-629d-40ba-adb7-018bdb8cae63 Init Duration: 0.09 ms Duration: 46.95 ms Billed Duration: 47 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
LAPORAN RequestId: e1233b8a-99c6-49d9-ab91-f02408a5ec6f Init Duration: 0.07 ms Duration: 44.56 ms Billed Duration: 45 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
LAPORAN RequestId: 34772494-39ff-457d-a1c1-16cd5e177b42 Init Duration: 0.02 ms Duration: 26.35 ms Billed Duration: 27 ms Memory Size: 128 MB Max Memory Used: 128 MB
jika kita menambahkan panggilan baca S3, keluaran akan berbeda
...
LAPORAN RequestId: 158b806c-852d-4f6b-ab28-cdd6e0868fa1 Init Duration: 0.02 ms Duration: 675.64 ms Billed Duration: 676 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
LAPORAN RequestId: d4cc689c-f944-49fa-9254-555266816b97 Init Duration: 0.79 ms Duration: 465.80 ms Billed Duration: 466 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
LAPORAN RequestId: b8d30096-cd93-4787-84d7-e8f52d7e2e13 Init Duration: 0.02 ms Duration: 447.83 ms Billed Duration: 448 ms Memory Size: 128 MB Max Memory Used: 128 MB
Baik, setiap panggilan memakan waktu 1/2 detik, dan RAM yang digunakan adalah 128 MB
uji di aws
sam build --use-container
sam deploy --guided
SAM cli akan menanyakan nama stack CloudFormation, lalu konfirmasi, lalu mendeploy fungsi kita ke AWS. Halaman terakhir dari keluaran sam akan terlihat seperti
Mempreview perubahan CloudFormation sebelum deployment
======================================================
Deploy perubahan ini? [y/N]: Y
2024-08-17 20:19:30 - Menunggu stack create/update selesai
CloudFormation events dari stack operations (refresh setiap 5.0 detik)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
StatusResource JenisResource LogicalResourceId AlasanStatus
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS AWS::CloudFormation::Stack t1-py User Initiated
CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole -
CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole Inisiasi Pembuatan Sumber Daya
CREATE_COMPLETE AWS::IAM::Role HelloWorldFunctionRole -
CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction -
CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction Inisiasi Pembuatan Sumber Daya
CREATE_COMPLETE AWS::Lambda::Function HelloWorldFunction -
CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi -
CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi Inisiasi Pembuatan Sumber Daya
CREATE_COMPLETE AWS::ApiGateway::RestApi ServerlessRestApi -
CREATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermissionProd -
CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d5f9d -
CREATE_IN_PROGRESS AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermissionProd Inisiasi Pembuatan Sumber Daya
CREATE_COMPLETE AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermissionProd -
CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d5f9d Inisiasi Pembuatan Sumber Daya
CREATE_COMPLETE AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d5f9d -
CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage -
CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage Inisiasi Pembuatan Sumber Daya
CREATE_COMPLETE AWS::ApiGateway::Stage ServerlessRestApiProdStage -
CREATE_COMPLETE AWS::CloudFormation::Stack t1-py -
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Keluaran CloudFormation dari stack yang dideploy
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Keluaran
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
...
Kunci HelloWorldApi
Deskripsi URL endpoint API Gateway untuk stage Prod untuk fungsi Hello World
Nilai https://wq3w4d41j7.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
...-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Lihat di sana kunci HelloWorldApi
dengan deskripsi URL endpoint API Gateway untuk stage Prod untuk fungsi Hello World
? Ini adalah URL publik kita:
https://wq3w4d41j7.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
tapi mari kita mulai dulu listener log kita:
sam logs -n HelloWorldFunction --stack-name "t1-py" --tail
dan kemudian sementara listener log berjalan, panggil di jendela terminal lain:
curl https://wq3w4d41j7.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
curl https://wq3w4d41j7.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
curl https://wq3w4d41j7.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
keluaran:
2024/08/18/[$LATEST]d86ecb94a39d44778f35bc2200b077a7 2024-08-18T00:46:22.468000 LAPORAN RequestId: 2e35fcf9-4d4b-4ced-962e-923adeddcbaa Duration: 199.56 ms Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 56 MB
...break...
2024/08/18/[$LATEST]d86ecb94a39d44778f35bc2200b077a7 2024-08-18T00:46:22.909000 LAPORAN RequestId: dd200d9d-cf35-4813-a243-ca8cf7435908 Duration: 194.60 ms Billed Duration: 195 ms Memory Size: 128 MB Max Memory Used: 56 MB
...break...
2024/08/18/[$LATEST]661b5b35a7c54641adb72974b273b78a 2024-08-18T00:48:01.610000 LAPORAN RequestId: afae88d1-3873-40a3-8b82-caa7019ca45e Duration: 1.94 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB Init Duration: 117.62 ms
...
2024/08/18/[$LATEST]661b5b35a7c54641adb72974b273b78a 2024-08-18T00:48:03.292000 LAPORAN RequestId: d7011c87-e6a2-4d76-bb39-4c32b754b991 Duration: 1.71 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB
...
2024/08/18/[$LATEST]661b5b35a7c54641adb72974b273b78a 2024-08-18T00:48:06.905000 LAPORAN RequestId: 0eab1866-b11f-4a26-8234-be07f47ecb49 Duration: 1.62 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB
...
2024/08/18/[$LATEST]661b5b35a7c54641adb72974b273b78a 2024-08-18T00:48:12.696000 LAPORAN RequestId: f0cc5b4b-f3c3-49d5-9708-fce265581ed2 Duration: 1.51 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB
...
2024/08/18/[$LATEST]661b5b35a7c54641adb72974b273b78a 2024-08-18T00:48:13.202000 LAPORAN RequestId: 40367789-27c0-419b-8483-cf054978e9b6 Duration: 1.51 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB
...
2024/08/18/[$LATEST]661b5b35a7c54641adb72974b273b78a 2024-08-18T00:48:13.552000 LAPORAN RequestId: 6d166356-5a6c-44c7-b5dd-5c2808340b79 Duration: 1.38 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB
dengan panggilan S3 - di sini kita sedang berbicara
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:54:55.322000 LAPORAN RequestId: d97fd1cd-d9ef-4d16-adcb-514fa65ca6f8 Duration: 513.99 ms Billed Duration: 514 ms Memory Size: 128 MB Max Memory Used: 77 MB
...
sebuah jeda
...
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:55:02.063000 LAPORAN RequestId: e6e6884d-d6b6-4dc7-aede-f3863f3b331d Duration: 519.35 ms Billed Duration: 520 ms Memory Size: 128 MB Max Memory Used: 77 MB
...
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:55:02.202000 LAPORAN RequestId: 91eeaca0-c983-4e99-9608-36948511bd27 Duration: 23.95 ms Billed Duration: 24 ms Memory Size: 128 MB Max Memory Used: 77 MB
...
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:55:02.662000 LAPORAN RequestId: d7035256-53f8-463c-93fd-f5de608f47a6 Duration: 33.55 ms Billed Duration: 34 ms Memory Size: 128 MB Max Memory Used: 77 MB
...
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:55:03.082000 LAPORAN RequestId: a2e338b3-f18e-4644-8f6d-2ab151421996 Duration: 21.50 ms Billed Duration: 22 ms Memory Size: 128 MB Max Memory Used: 77 MB
...
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:55:03.562000 LAPORAN RequestId: 111665a1-f43c-488b-bc02-cd203fef478f Duration: 42.58 ms Billed Duration: 43 ms Memory Size: 128 MB Max Memory Used: 77 MB
Ukuran memori: 77 MB dan Billed duration ~35 ms… Waktu warm-up 1/2 detik
membersihkan stack cloudformation aws
sam delete --stack-name "t1-py"
Bangun, Uji, Deploy, dan Eksekusi - Fungsi Lambda Berbasis JavaScript
JS lokal
bangun dan jalankan lokal
sam build
sam local invoke
menghasilkan
REPORT RequestId: 9e3c0a43-6432-4cc7-babf-f591773e5315 Init Duration: 0.05 ms Duration: 126.34 ms Billed Duration: 127 ms Memory Size: 128 MB Max Memory Used: 128 MB
REPORT RequestId: 2856e8f1-166f-4a90-a094-d575ef00ff69 Init Duration: 0.02 ms Duration: 43.73 ms Billed Duration: 44 ms Memory Size: 128 MB Max Memory Used: 128 MB
REPORT RequestId: f1156bd5-dd9f-4c1c-b65d-68c04df5a987 Init Duration: 0.02 ms Duration: 42.79 ms Billed Duration: 43 ms Memory Size: 128 MB Max Memory Used: 128 MB
s3 panggil dari durasi lokal:
REPORT RequestId: 06c4a5a0-6f1a-4e09-9518-cf706d08c319 Init Duration: 0.13 ms Duration: 280.33 ms Billed Duration: 281 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
REPORT RequestId: 4393e8bd-c59b-42e5-83b5-1729d0fb4d8f Init Duration: 0.08 ms Duration: 270.42 ms Billed Duration: 271 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
REPORT RequestId: 90979693-7245-4f88-9f6b-070be83f75df Init Duration: 0.05 ms Duration: 431.86 ms Billed Duration: 432 ms Memory Size: 128 MB Max Memory Used: 128 MB
JS di aws
Deploy dan setujui apa yang ditanyakan sam dan memberi tahu untuk mengizinkan panggilan tidak terotentikasi ke fungsi lambda kita
sam deploy --guided
# sekarang dengarkan lognya
sam logs -n HelloWorldFunction --stack-name t2-js --tail
#atau
sam logs -n HelloWorldS3Function --stack-name t2-js --tail
dan setelah melakukan cURL di console lain, lognya
2024/08/18/[$LATEST]fe2dcf2abd9041a0b90630c2c8aa0005 2024-08-18T01:38:38.831000 REPORT RequestId: 24e86600-e316-4678-81db-41eafff81aa0 Duration: 4.92 ms Billed Duration: 5 ms Memory Size: 128 MB Max Memory Used: 62 MB Init Duration: 139.82 ms
...
2024/08/18/[$LATEST]fe2dcf2abd9041a0b90630c2c8aa0005 2024-08-18T01:38:47.451000 REPORT RequestId: 0d269d7f-61f6-4b48-b3c2-6f83aaba5f45 Duration: 2.58 ms Billed Duration: 3 ms Memory Size: 128 MB Max Memory Used: 62 MB
...
2024/08/18/[$LATEST]fe2dcf2abd9041a0b90630c2c8aa0005 2024-08-18T01:38:58.622000 REPORT RequestId: f1bd0e5a-d1d0-4136-9b02-6fba4dcc9a70 Duration: 1.34 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 63 MB
...
2024/08/18/[$LATEST]fe2dcf2abd9041a0b90630c2c8aa0005 2024-08-18T01:38:59.089000 REPORT RequestId: baa791a7-4f9c-41be-b516-81213bc7a365 Duration: 1.44 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 63 MB
...
2024/08/18/[$LATEST]fe2dcf2abd9041a0b90630c2c8aa0005 2024-08-18T01:38:59.966000 REPORT RequestId: ea2a1515-1188-4a44-956f-91f2fc97491f Duration: 1.46 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 63 MB
...
2024/08/18/[$LATEST]fe2dcf2abd9041a0b90630c2c8aa0005 2024-08-18T01:39:00.428000 REPORT RequestId: 0f536ec5-26cb-42b9-beaa-045984b8c468 Duration: 1.45 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 63 MB
Bagus. tidak banyak waktu yang dihabiskan untuk melakukan tidak apa-apa. tetapi juga tidak tertidur.
Kinerja fungsi lambda yang membaca dari bucket s3 dalam javascript
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:42:45.155000 REPORT RequestId: c4630419-4502-467c-9cda-c5087d6b2743 Duration: 1051.97 ms Billed Duration: 1052 ms Memory Size: 128 MB Max Memory Used: 88 MB Init Duration: 411.76 ms
...break...
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:42:52.195000 REPORT RequestId: 4b881f2b-4b30-4890-afc2-b7299b6397b3 Duration: 259.87 ms Billed Duration: 260 ms Memory Size: 128 MB Max Memory Used: 89 MB
...break...
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:42:58.455000 REPORT RequestId: 77f4d820-2f2e-4190-a1e3-bc4821ccdb9b Duration: 165.44 ms Billed Duration: 166 ms Memory Size: 128 MB Max Memory Used: 89 MB
...
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:43:03.095000 REPORT RequestId: 41ce9fd8-aaf4-46c4-a827-0a45592041c0 Duration: 63.74 ms Billed Duration: 64 ms Memory Size: 128 MB Max Memory Used: 89 MB
...
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:43:03.695000 REPORT RequestId: 9494f176-3818-4fb3-a581-857f1eb2df23 Duration: 73.16 ms Billed Duration: 74 ms Memory Size: 128 MB Max Memory Used: 89 MB
...
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:43:04.315000 REPORT RequestId: 528c909f-4a08-415e-a713-e3d9e9e4d615 Duration: 87.44 ms Billed Duration: 88 ms Memory Size: 128 MB Max Memory Used: 89 MB
...
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:43:04.835000 REPORT RequestId: 9b636429-56f5-4974-afe9-e53e786adb61 Duration: 55.62 ms Billed Duration: 56 ms Memory Size: 128 MB Max Memory Used: 89 MB
...
2024/08/18/[$LATEST]8e22ce6f54074c6098cdbf89ed0ca0b9 2024-08-18T01:43:05.415000 REPORT RequestId: d4c298df-b237-4605-894f-fde05fe0461a Duration: 69.88 ms Billed Duration: 70 ms Memory Size: 128 MB Max Memory Used: 89 MB
Bersihkan AWS js
menghapus…
sam delete --stack-name t2-js
Bangun, Uji, Deploy, dan Eksekusi - Fungsi Lambda Berbasis Golang
Pengujian Lokal Golang Lambda
Untuk jelasnya - membuat panggilan tes
, bukan menjalankan pengujian unit
.
Perintah sam build
berada di dalam Makefile
. Jadi kita menjalankan:
make
jalankan fungsi tunggal
sam local invoke HelloWorldFunction --event events/event.json
sam local invoke HelloWorldFunction --event events/event.json
sam local invoke HelloWorldFunction --event events/event.json
sam local invoke HelloWorldS3Function --event events/event.json
sam local invoke HelloWorldS3Function --event events/event.json
sam local invoke HelloWorldS3Function --event events/event.json
Opsi 2: sekarang mulai server lokal:
sam local start-api
output:
sekarang di jendela terminal terpisah:
curl http://localhost:3000/hello
curl http://localhost:3000/hello
curl http://localhost:3000/hello
curl http://localhost:3000/hellos3
curl http://localhost:3000/hellos3
curl http://localhost:3000/hellos3
output dari panggilan lokal sederhana ke lambda berbasis golang:
REPORT RequestId: 54cc3271-7f04-44a3-8d91-d5d69d2428ea Init Duration: 0.03 ms Duration: 2.24 ms Billed Duration: 3 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
REPORT RequestId: c753bdf9-1af0-4b40-9516-5fb2ad96ba00 Duration: 0.29 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
REPORT RequestId: edceb310-e6e9-4f0a-bd6e-58afd40e9b70 Duration: 0.28 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 128 MB
output dari panggilan lokal “s3” ke lambda berbasis golang:
REPORT RequestId: 1556e298-a17a-4d45-9fdc-b7f62118c246 Init Duration: 0.06 ms Duration: 142.76 ms Billed Duration: 143 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
REPORT RequestId: e4638fb4-52f4-4086-b673-c9de0f02d3f7 Duration: 86.75 ms Billed Duration: 87 ms Memory Size: 128 MB Max Memory Used: 128 MB
...
REPORT RequestId: b1bdcbf8-06f8-4605-a7da-d34f41198811 Duration: 105.07 ms Billed Duration: 106 ms Memory Size: 128 MB Max Memory Used: 128 MB
durasi 1ms terlihat bagus, tetapi Memory Size: 128 MB? Mengapa? Harusnya seperti 12MB? Mungkin itu minimum yang mereka punya.
Pengujian AWS Golang Lambda
sam deploy --guided
mulai pendengar log
sam logs -n HelloWorldFunction --stack-name t3-go --tail
dan panggil fungsi 3 kali:
curl https://k92zaa81w8.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
curl https://k92zaa81w8.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
curl https://k92zaa81w8.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
dalam log kita lihat:
2024/08/18/[$LATEST]1f5b2a65bda1433789d9281d02cf4622 2024-08-18T04:18:02.908000 REPORT RequestId: 358b5762-dad7-4380-a83f-e21349fae20b Duration: 11.71 ms Billed Duration: 70 ms Memory Size: 128 MB Max Memory Used: 20 MB Init Duration: 57.52 ms
...break...
2024/08/18/[$LATEST]1f5b2a65bda1433789d9281d02cf4622 2024-08-18T04:18:07.404000 REPORT RequestId: 3051d741-504a-49ae-95b3-077628b4b929 Duration: 0.99 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 20 MB
...break...
2024/08/18/[$LATEST]1f5b2a65bda1433789d9281d02cf4622 2024-08-18T04:18:11.923000 REPORT RequestId: 51c38ca9-920d-4f30-be75-a1a44538c9ee Duration: 1.02 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 20 MB
...
2024/08/18/[$LATEST]1f5b2a65bda1433789d9281d02cf4622 2024-08-18T04:18:12.486000 REPORT RequestId: 98727f66-f3f1-46ad-9a5a-55a6243609ba Duration: 0.96 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 20 MB
...
2024/08/18/[$LATEST]1f5b2a65bda1433789d9281d02cf4622 2024-08-18T04:18:13.015000 REPORT RequestId: 9d8bfb28-d4eb-4868-9af7-3b3946acc92c Duration: 0.98 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 20 MB
- Durasi yang dibebankan adalah 2ms. Bagus.
- Max Memory Used: 20 MB. Diharapkan
- Tampaknya tidak tertidur
Sekarang mari lakukan hal yang sama untuk fungsi lambda yang memiliki panggilan ke S3 di dalamnya
2024/08/18/[$LATEST]8bd6f2bea333485aad2cbf5166433cf5 2024-08-18T04:22:57.711000 REPORT RequestId: 9f09db3e-d9bc-45fe-9674-df133f0f1dc2 Duration: 28.08 ms Billed Duration: 29 ms Memory Size: 128 MB Max Memory Used: 37 MB
...
2024/08/18/[$LATEST]8bd6f2bea333485aad2cbf5166433cf5 2024-08-18T04:23:15.324000 REPORT RequestId: 4bc39553-6a42-4347-b322-6c80f24cdb01 Duration: 30.56 ms Billed Duration: 31 ms Memory Size: 128 MB Max Memory Used: 38 MB
...
2024/08/18/[$LATEST]8bd6f2bea333485aad2cbf5166433cf5 2024-08-18T04:23:51.144000 REPORT RequestId: 55ac2b18-394c-4699-87a5-4ba52230f386 Duration: 27.01 ms Billed Duration: 28 ms Memory Size: 128 MB Max Memory Used: 38 MB
Bersihkan
Jangan lupa untuk menghapusnya
sam delete --stack-name t3-go
Tautan yang Berguna
- Lambda Berlapis dengan AWS SAM dan Python
- Memperbaiki Kesalahan GORM AutoMigrate PostgreSQL
- AWS SAM + AWS SQS + Python PowerTools
- SAM cli: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
- Pasang Linux dan Alat
- Kartu Panduan Golang
- Kartu Panduan Bash
- Kartu Panduan Python
- Popularitas Bahasa Pemrograman dan Kerangka Kerja
- Ruang Golang
- Alternatif Beautiful Soup untuk Go
- Membuat PDF dalam GO - Perpustakaan dan Contoh"