Utilizzo di AWS SAMCLI with Terraform per il debug e il test locali - 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à.

Utilizzo di AWS SAMCLI with Terraform per il debug e il test locali

Questo argomento spiega come utilizzare i AWS Serverless Application Model comandi Command Line Interface (AWS SAMCLI) supportati con i Terraform progetti eTerraform Cloud.

Per fornire feedback e inviare richieste di funzionalità, crea un GitHubproblema.

Test locale con sam local invoke

Nota

Per utilizzare il AWS SAMCLI test localmente, è necessario che Docker sia installato e configurato. Per istruzioni, consultare Installazione di Docker da utilizzare con AWS SAM CLI.

Di seguito è illustrato un esempio di test della funzione Lambda in locale tramite trasmissione di un evento:

$ sam local invoke --hook-name terraform hello_world_function -e events/event.json -

Per ulteriori informazioni sull'utilizzo di questo comando, consultaIntroduzione ai test con sam local invoke.

Test locale con sam local start-api

Per utilizzarlo sam local start-api conTerraform, esegui quanto segue:

$ sam local start-api --hook-name terraform

Di seguito è riportato un esempio:

$ sam local start-api --hook-name terraform Running Prepare Hook to prepare the current application Executing prepare hook of hook "terraform" Initializing Terraform application ... Creating terraform plan and getting JSON output .... Generating metadata file Unresolvable attributes discovered in project, run terraform apply to resolve them. Finished generating metadata file. Storing in... Prepare hook completed and metadata file generated at: ... Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET] Mounting None at http://127.0.0.1:3000/hello [POST] You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart SAM CLI if you update your AWS SAM template 2023-06-26 13:21:20 * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)

Per ulteriori informazioni su questo comando, consultaIntroduzione ai test con sam local start-api.

Funzioni Lambda che utilizzano gli autorizzatori Lambda

Per le funzioni Lambda configurate per utilizzare gli autorizzatori Lambda, richiameranno AWS SAMCLI automaticamente l'autorizzatore Lambda prima di richiamare l'endpoint della funzione Lambda.

Test locale con sam local start-lambda

Di seguito è riportato un esempio di test della funzione Lambda localmente con AWS Command Line Interface ()AWS CLI:

  1. Utilizzate il AWS SAMCLI per creare un ambiente di test locale:

    $ sam local start-lambda --hook-name terraform hello_world_function
  2. Uso di AWS CLI per richiamare la funzione in locale:

    $ aws lambda invoke --function-name hello_world_function --endpoint-url http://127.0.0.1:3001/ response.json --cli-binary-format raw-in-base64-out --payload file://events/event.json

Per ulteriori informazioni su questo comando, consultaIntroduzione ai test con sam local start-lambda.

Limitazioni di Terraform

Di seguito sono riportate le limitazioni relative all'utilizzo di AWS SAMCLI conTerraform:

  • Funzioni Lambda collegate a più livelli.

  • Terraformvariabili locali che definiscono i collegamenti tra le risorse.

  • Riferimento a una funzione Lambda che non è stata ancora creata. Ciò include le funzioni definite nell'attributo body della risorsa API REST.

Per evitare queste limitazioni, puoi eseguire l'esecuzione terraform apply quando viene aggiunta una nuova risorsa.