Con AWS SAM Local puedo probar mi aplicación sin servidor localmente, lo cual es increíble.
También puedo implementar en AWS , que aparentemente toma las mismas banderas que aws cloudformation deploy , por lo que puedo pasar un archivo de parámetros con, por ejemplo, secretos de aplicación (claves de API y demás).
Sin embargo, no puedo encontrar nada en aws local start-api --help o en los documentos en Github sobre cómo usar un archivo de parámetros cuando se prueba localmente.
¿Cómo apunto a un archivo de parámetros para usar con mi plantilla cuando ejecuto sam local start-api ?
Puede usar el --parameter-overrides . La sintaxis es bastante larga, como se muestra a continuación:
sam local start-api --parameter-overrides ParameterKey=Key1,ParameterValue=value1 ParameterKey=Key2,ParameterValue=value2Es decir, debe especificar la clave y el valor de cada par con separación de comas .
Y luego cada par se separa con un espacio .
Desde 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, eg 'ParameterKey=KeyPairName, ParameterValue=MyKey ParameterKey=InstanceTy pe,ParameterValue=t1.micro'Puede usar --parameter-overrides en sam deployment al igual que en aws cloudformation deployment con un pequeño cambio:
Antes:
sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides ParameterKey=SourceS3Bucket ParameterValue=test-data-111Después:
sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides SourceS3Bucket=test-data-111Cambio notable: ParameterKey, ParameterValue no necesita especificarse explícitamente en sam deployment. Me ayuda en las pruebas locales.
Espero eso ayude. :)
Parece que también puede usar el parámetro -n o --env-vars para pasar variables de entorno en un archivo JSON a sus funciones. Consulte los documentos: Pruebe sus aplicaciones sin servidor localmente mediante SAM CLI (Beta pública)
En resumen, su archivo JSON se vería así (ejemplo copiado de la documentación):
{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket" }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" }, }Y luego puedes hacer:
$ sam local start-api --env-vars env.jsonSin embargo, esto es específicamente para variables de entorno para sus funciones lambda, por lo que puede que no sea del todo lo que está buscando.