Introduzione ai test con sam local start-lambda - AWS Serverless Application Model

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Introduzione ai test con sam local start-lambda

Utilizzate il AWS Serverless Application Model sam local start-lambda sottocomando Command Line Interface (AWS SAMCLI) per richiamare la AWS Lambda funzione tramite () o gli AWS Command Line Interface SDK.AWS CLI Questo comando avvia un endpoint locale che emula. AWS Lambda

Per utilizzarlosam local start-lambda, AWS SAMCLI installate il compilando quanto segue:

Prima dell'usosam local start-lambda, si consiglia una conoscenza di base di quanto segue:

Usare sam local start-lambda

Quando si eseguesam local start-lambda, si AWS SAMCLI presuppone che la directory di lavoro corrente sia la directory principale del progetto. AWS SAMCLICercheranno innanzitutto un template.[yaml|yml] file all'interno di una .aws-sam sottocartella. Se non viene trovato, AWS SAMCLI cercherà un template.[yaml|yml] file all'interno della directory di lavoro corrente.

Per usare sam local start-lambda
  1. Dalla directory principale del progetto, esegui quanto segue:

    $ sam local start-lambda <options>
  2. AWS SAMCLICrea le tue funzioni Lambda in un Docker contenitore locale. Quindi invia l'indirizzo locale all'endpoint del server HTTP. Di seguito è riportato un esempio:

    $ sam local start-lambda Initializing the lambda functions containers. Local image is up-to-date Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64. Mounting /Users/.../sam-app/hello_world as /var/task:ro,delegated, inside runtime container Containers Initialization is done. Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2023-04-13 07:25:43 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:3001 2023-04-13 07:25:43 Press CTRL+C to quit
  3. Usa gli AWS CLI o SDK per richiamare la tua funzione Lambda localmente.

    Di seguito è riportato un esempio di utilizzo di: AWS CLI

    $ aws lambda invoke --function-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt StatusCode: 200 (END)

    Di seguito è riportato un esempio di utilizzo del AWS SDK comando forPython:

    import boto3 from botocore.config import Config from botocore import UNSIGNED lambda_client = boto3.client('lambda', endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=Config(signature_version=UNSIGNED, read_timeout=1, retries={'max_attempts': 0} ) ) lambda_client.invoke(FunctionName="HelloWorldFunction")

Opzioni

Specificare un modello

Per specificare un modello AWS SAMCLI a cui fare riferimento, utilizzate l'--templateopzione. AWS SAMCLICaricherà solo quel AWS SAM modello e le risorse a cui punta. Di seguito è riportato un esempio:

$ sam local start-lambda --template myTemplate.yaml

Best practice

Se la tua applicazione ha una .aws-sam directory in esecuzionesam build, assicurati di eseguirla sam build ogni volta che aggiorni il codice della funzione. Quindi, sam local start-lambda esegui per testare localmente il codice funzionale aggiornato.

I test locali sono un'ottima soluzione per lo sviluppo e il test rapidi prima della distribuzione nel cloud. Tuttavia, i test locali non convalidano tutto, come le autorizzazioni tra le risorse nel cloud. Per quanto possibile, testa le tue applicazioni nel cloud. Ti consigliamo di sam syncutilizzarlo per velocizzare i flussi di lavoro di test sul cloud.

Ulteriori informazioni

Per un elenco di tutte le sam local start-lambda opzioni, consultasam local start-lambda.