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
?
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'
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?
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!
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. :)