Как указать параметры шаблона при запуске AWS SAM Local?

Используя AWS SAM Local, я могу локально протестировать свое безсерверное приложение, и это здорово.

Я также могу развернуть на AWS, который, очевидно, принимает те же флаги, что и aws cloudformation deploy поэтому я могу передать файл параметров, например, с секретами приложения (ключами API и т. д.).

Тем не менее, я ничего не могу найти в aws local start-api --help или в документации на Github о том, как использовать файл параметров при локальном тестировании.

Как мне указать файл параметров для использования с моим шаблоном при запуске sam local start-api?

2 ответа

Согласно исходному коду вы можете пройти --parameter-values, Анализатор параметров предполагает, что синтаксис выглядит примерно так:

sam local start-api --parameter-values ParameterKey=param1,ParameterValue=value1 ParameterKey=param2,ParameterValue=value2

Этот синтаксис используется в их тестах. Это также соответствует aws cloudformation deploy --parameter-overrides ( ссылка), так что подходит.

И последнее, но не менее важное: в нем есть текст справки, поэтому я не уверен, почему он не будет отображаться при использовании --help, Возможно, стоит сообщить об ошибке, если она не появилась.

Вы можете использовать --parameter-overrides в sam deploy так же, как в aws cloudformation deploy с небольшим изменением:

До:

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

После:

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

Заметное изменение: ParameterKey, ParameterValue не нужно явно указывать в sam deploy. Помогает мне в локальном тестировании.

Надеюсь, это поможет.:)

Кажется, вы также можете использовать -n или же --env-vars параметр для передачи переменных среды в файле JSON вашим функциям. См. Документы: локально тестируйте свои серверные приложения с помощью SAM CLI (общедоступная бета-версия)

Короче говоря, ваш JSON-файл будет выглядеть так (пример скопирован из документации):

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

И тогда вы можете сделать:

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

Это специально для переменных среды для ваших лямбда-функций, так что, возможно, это не совсем то, что вы ищете?

Мой странный опыт заключался в том, что это зависит от порядка параметров. У меня было два параметра - SecretKey и DatabaseUri, указывающие на экземпляр Mongo. Когда у меня сначала был DatabaseUri, SecretKey не был загружен, и сборка завершилась неудачно из-за отсутствия параметра SecretKey. Когда я был действительно в отчаянии, я сначала поменял местами параметры с SecretKey, и он начал работать!

Другие вопросы по тегам