AWS Lambda-prestanda: JavaScript vs Python vs Golang
Vilket språk ska man använda för AWS Lambda?
Vi kan skriva lambda-funktioner för distribution till AWS på flera språk. Låt oss jämföra prestandan hos (nästan tomma) funktioner skrivna i JavaScript, Python och Golang…

TL;DR
Kort sagt:
| Språk | Debiterad varaktighet uppvärmning | Debiterad varaktighet | Minne storlek | Max minne använd |
|---|---|---|---|---|
| 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 har längst uppvärmningstid på 128GB RAM,
- JavaScript är den långsammaste överlag
- Golang är bäst av de tre men inte signifikant
En intressant alternativ är att påskynda python lambda-funktionen genom att lägga till mer minne, och samtidigt CPU. Det kommer bara minska uppvärmningstiden, tror jag. Anrop till S3 kommer inte bli mindre latent.
I det syntetiska primtal testet av AWS - är kostnaden för att köra Python lambda densamma som att använda 128MB och 512MB RAM-gräns,
och prestandan för 512MB-uppsättningen är betydligt snabbare.
https://docs.aws.amazon.com/lambda/latest/operatorguide/computing-power.html
Vad är AWS SAM
Vi använder SAM för att testa olika lambda-funktioner här.
AWS SAM är en Serverless Application Model.
AWS SAM-projektet inkluderar AWS SAM-mallen och funktionens kod. SAM-mallen beskriver hur man distribuerar, kör och testar lambda-funktionen, behörigheter och andra viktiga parametrar för att skapa CloudFormation-stacken.
För att använda det behöver vi aws cli och sam cli.
Installera AWS cli
Lokal guide: Installera AWS CLI i Reinstall linux doc
Eller på aws hemsida: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
Installera SAM cli
Grundläggande - Hämta SAM cli-installatörs-zip från AWS hemsida, packa upp och installera
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
# kontrollera att sam är installerad
sam --version
Rensa installeringsfilerna
rm -rf sam-installation
rm aws-sam-cli-linux-x86_64.zip
Skapa lambda-funktionerna
Kör tre gånger skriptet
sam init
och välj varje gång hello-world-mallen, men olika språk, vi skapar 3 sam-applikationer
AWS Lambda funktion baserad på Python 3.12
utdata från sam init:
-----------------------
Genererar applikation:
-----------------------
Namn: t1-py
Runtime: python3.12
Arkitekturer: x86_64
Beroendehanterare: pip
Applikationmall: hello-world
Utdata katalogen: .
Konfigurationsfil: t1-py/samconfig.toml
Nästa steg kan hittas i README-filen på t1-py/README.md
Kommandon du kan använda näst
=========================
[*] Skapa pipeline: cd t1-py && sam pipeline init --bootstrap
[*] Validera SAM-mall: cd t1-py && sam validate
[*] Testa funktion i molnet: cd t1-py && sam sync --stack-name {stack-name} --watch
AWS Lambda funktion baserad på JavaScript och nodejs20.x
utdata från sam init:
-----------------------
Genererar applikation:
-----------------------
Namn: t2-js
Runtime: nodejs20.x
Arkitekturer: x86_64
Beroendehanterare: npm
Applikationmall: hello-world
Utdata katalogen: .
Konfigurationsfil: t2-js/samconfig.toml
Nästa steg kan hittas i README-filen på t2-js/README.md
...
AWS Lambda funktion baserad på Golang (aws image al2023)
utdata från sam init:
-----------------------
Genererar applikation:
-----------------------
Namn: t3-go
Runtime: go (provided.al2023)
Arkitekturer: x86_64
Beroendehanterare: mod
Applikationmall: hello-world
Utdata katalogen: .
Konfigurationsfil: t3-go/samconfig.toml
Nästa steg kan hittas i README-filen på t3-go/README.md
Bygg, testa, distribuera och köra - Python-baserad Lambda-funktion
testa lokalt
sam build --use-container
utdata visas i slutet:
Kommandon du kan använda nästa
=========================
[*] Validera SAM-mall: sam validate
[*] Anropa funktion: sam local invoke
[*] Testa funktion i molnet: sam sync --stack-name {{stack-name}} --watch
[*] Distribuera: sam deploy --guided
efter att ha körts tre gånger
sam local invoke
utdata vi ser:
REPORT 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
...
REPORT 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
...
REPORT 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
om vi lägger till s3-läsanrop, kommer utdata att vara annorlunda
...
REPORT 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
...
REPORT 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
...
REPORT 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
Okej, varje anrop tar 1/2 sekund, och RAM-användning är 128 MB
test på aws
sam build --use-container
sam deploy --guided
SAM cli kommer att fråga efter CloudFormation stack namn, sedan om bekräftelse, och deployar sedan vår funktion till AWS. Den sista sidan av sam output skulle se ut så här
Förhandsgranska CloudFormation ändringsuppsättning innan distribution
======================================================
Distribuera denna ändringsuppsättning? [y/N]: Y
2024-08-17 20:19:30 - Väntar på att stack skapas/uppdateras
CloudFormation händelser från stack operationer (uppdatera var 5.0 sekunder)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ResourceStatus ResourceType LogicalResourceId ResourceStatusReason
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS AWS::CloudFormation::Stack t1-py User Initiated
CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole -
CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole Resource creation Initiated
CREATE_COMPLETE AWS::IAM::Role HelloWorldFunctionRole -
CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction -
CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction Resource creation Initiated
CREATE_COMPLETE AWS::Lambda::Function HelloWorldFunction -
CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi -
CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi Resource creation Initiated
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 Resource creation Initiated
CREATE_COMPLETE AWS::Lambda::Permission HelloWorldFunctionHelloWorldPermissionProd -
CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d5f9d Resource creation Initiated
CREATE_COMPLETE AWS::ApiGateway::Deployment ServerlessRestApiDeployment47fc2d5f9d -
CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage -
CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage Resource creation Initiated
CREATE_COMPLETE AWS::ApiGateway::Stage ServerlessRestApiProdStage -
CREATE_COMPLETE AWS::CloudFormation::Stack t1-py -
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CloudFormation outputs från distribuerad stack
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Outputs
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
...
Key HelloWorldApi
Description API Gateway endpoint URL for Prod stage for Hello World function
Value https://wq3w4d41j7.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
...-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ser du där HelloWorldApi nyckeln med beskrivningen API Gateway endpoint URL for Prod stage for Hello World function? Där har vi vår offentliga URL:
https://wq3w4d41j7.execute-api.ap-southeast-2.amazonaws.com/Prod/hello/
men låt oss starta vår loggläsare först:
sam logs -n HelloWorldFunction --stack-name "t1-py" --tail
och sedan, medan loggläsaren kör, ring i ett annat terminalfönster:
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/
utdata:
2024/08/18/[$LATEST]d86ecb94a39d44778f35bc2200b077a7 2024-08-18T00:46:22.468000 REPORT 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 REPORT 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 REPORT 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 REPORT 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 REPORT 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 REPORT 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 REPORT 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 REPORT RequestId: 6d166356-5a6c-44c7-b5dd-5c2808340b79 Duration: 1.38 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 32 MB
med s3-anrop - här pratar vi
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:54:55.322000 REPORT RequestId: d97fd1cd-d9ef-4d16-adcb-514fa65ca6f8 Duration: 513.99 ms Billed Duration: 514 ms Memory Size: 128 MB Max Memory Used: 77 MB
...
a break
...
2024/08/18/[$LATEST]992dbfa1ec234d2aa1d9d6003de766de 2024-08-18T00:55:02.063000 REPORT 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 REPORT 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 REPORT 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 REPORT 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 REPORT RequestId: 111665a1-f43c-488b-bc02-cd203fef478f Duration: 42.58 ms Billed Duration: 43 ms Memory Size: 128 MB Max Memory Used: 77 MB
Minne storlek: 77 MB och fakturerad varaktighet ~35 ms… Uppvärmningstid 1/2 sek
rensa aws cloudformation stack
sam delete --stack-name "t1-py"
Bygga, testa, distribuera och köra - JavaScript-baserad Lambda-funktion
JS lokalt
bygga och köra lokalt
sam build
sam local invoke
producerar
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-anrop från lokal varaktighet:
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 på aws
Distribuera och godkänn vad sam frågar och berätta att tillåta obehöriga anrop till våra lambda-funktioner
sam deploy --guided
# nu lyssna på loggarna
sam logs -n HelloWorldFunction --stack-name t2-js --tail
#eller
sam logs -n HelloWorldS3Function --stack-name t2-js --tail
och efter att ha cURLat i en annan konsol, loggarna
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
Bra. Inte mycket tid spenderas på att inte göra något. Men somnar inte heller.
Läsning från s3-bucket lambda-funktion i javascript-prestanda
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
Rensa AWS js
raderar…
sam delete --stack-name t2-js
Bygga, testa, distribuera och köra - Golang-baserad Lambda-funktion
Testning av lokal Golang Lambda
För att vara exakt - göra testanrop, inte köra enhetstester.
Kommandot sam build finns i Makefile. Så vi kör:
make
kör enskild funktion
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
Alternativ 2: nu starta lokal server:
sam local start-api
utdata:
nu i ett separat terminalfönster:
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
utdata från lokalt enkelt anrop till Golang-baserad lambda:
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
utdata från lokal “s3”-anrop till Golang-baserad lambda:
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
varaktigheten på 1ms ser bra ut, men Memory Size: 128 MB? Varför? Bör vara som 12MB? Kanske det är minimalt de har.
Testning av AWS Golang Lambda
sam deploy --guided
starta loggläsaren
sam logs -n HelloWorldFunction --stack-name t3-go --tail
och anropa funktionen 3 gånger:
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/
i loggarna ser vi:
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
- Debiterad varaktighet är 2ms. Bra.
- Max Memory Used: 20 MB. Förväntat
- Ser ut som att den inte faller i sömn
Nu låt oss göra samma sak för lambda-funktionen som har ett anrop till S3 inuti
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
Rensa
Glöm inte att ta bort den
sam delete --stack-name t3-go
Användbara länkar
- Lagrade Lambdas med AWS SAM och Python
- Åtgärda Golang GORM AutoMigrate postgresql-fel
- AWS SAM + AWS SQS + Python PowerTools
- SAM cli: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
- Installera linux och verktyg
- Golang Cheat Sheet
- Bash Cheat Sheet
- Python Cheatsheet
- Programmeringsspråks och ramverks popularitet
- Golang Space
- Alternativ till Beautiful Soup för Go
- Generera PDF i GO - Bibliotek och exempel