web-dev-qa-db-fra.com

Comment spécifier des paramètres de modèle lors de l'exécution d'AWS SAM Local?

En utilisant AWS SAM Local Je peux tester mon application sans serveur localement, ce qui est génial.

Je peux également déployer sur AWS , qui prend apparemment les mêmes drapeaux que aws cloudformation deploy, donc je peux passer un fichier de paramètres avec par exemple secrets d'application (clés API et autres).

Cependant, je ne trouve rien dans aws local start-api --help ou dans les documents sur Github sur la façon d'utiliser un fichier de paramètres lors d'un test local.

Comment pointer vers un fichier de paramètres à utiliser avec mon modèle lors de l'exécution de sam local start-api?

7
Tomas Aschan

Vous pouvez utiliser le --parameter-overrides commutateur. La syntaxe est assez longue, comme ci-dessous:

sam local start-api --parameter-overrides ParameterKey=Key1,ParameterValue=value1 ParameterKey=Key2,ParameterValue=value2

Autrement dit, vous devez spécifier clé et valeur de chaque paire avec virgule séparation.

Et puis chaque paire est séparé par un espace.


De sam local start-api --help:

  --parameter-overrides       Optional. A string that contains
                              CloudFormation parameter overrides encoded
                              as key=value pairs. Use the same format as
                              the AWS CLI, e.g. 'ParameterKey=KeyPairName,
                              ParameterValue=MyKey ParameterKey=InstanceTy
                              pe,ParameterValue=t1.micro'
11
kichik

Il semble que vous pouvez également utiliser le -n ou --env-vars paramètre pour passer des variables d'environnement dans un fichier JSON à vos fonctions. Voir les documents: Testez vos applications sans serveur localement en utilisant SAM CLI (version bêta publique)

En bref, votre fichier JSON ressemblerait à (exemple copié de la documentation):

{
  "MyFunction1": {
    "TABLE_NAME": "localtable",
    "BUCKET_NAME": "testBucket"
  },
  "MyFunction2": {
    "TABLE_NAME": "localtable",
    "STAGE": "dev"
  },
}

Et puis vous pouvez faire:

 $ sam local start-api --env-vars env.json

C'est spécifiquement pour les variables d'environnement pour vos fonctions lambda, donc ce n'est peut-être pas tout à fait ce que vous recherchez?

1
sgdesmet

Mon expérience étrange a été que cela dépend d'un ordre des paramètres. J'avais deux paramètres - SecretKey et DatabaseUri pointant vers une instance Mongo. Lorsque j'ai eu DatabaseUri pour la première fois, la SecretKey n'a pas été chargée et la construction a échoué en raison d'un paramètre SecretKey manquant. Quand j'étais vraiment désespéré, j'ai d'abord échangé les paramètres avec SecretKey et cela a commencé à fonctionner!

0
Leos Literak

Vous pouvez utiliser les --parameter-overrides dans sam deploy comme dans aws cloudformation deploy avec un petit changement:

Avant:

sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides ParameterKey=SourceS3Bucket ParameterValue=test-data-111

Après:

sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides SourceS3Bucket=test-data-111

Changement notable: ParameterKey, ParameterValue n'a pas besoin d'être explicitement spécifié dans sam deploy. M'aide dans les tests locaux.

J'espère que ça aide. :)

0
Ashwani Jha