Bash интерпретирует мой аргумент JSON CLI иначе, чем local, и игнорирует все ключи, кроме одного

#bash #aws-lambda #aws-cli

#bash #aws-lambda #aws-cli

Вопрос:

Я использую AWS CLI на сервере Jenkins, и для одного из флагов аргумента требуется тело JSON.

Я пытался избежать двойных кавычек и т.д., Но, похоже, на Jenkins ничего не работает. Однако локально все работает нормально. Это моя команда:

 aws lambda update-function-configuration 
--region us-east-1 
--function-name traxcess-web 
--environment '{"Variables":{"DEVEX_CLIENT_ID":"****", "DEVEX_CLIENT_SECRET":"****", "STATIC_DIR":"lib/build"}}'
  

Ошибка говорит о том, что я использую «Неизвестные параметры»: Unknown options: STATIC_DIR:lib/build}}, DEVEX_CLIENT_SECRET:****,

Другое интересное предостережение здесь заключается в том, что если я загружаю только один аргумент, все функционирует правильно.

Я неправильно предоставляю свой JSON?

Редактировать:

 /opt/runtime/ruby-2.2.6/bin/awssume aws lambda update-function-configuration --region us-east-1 --function-name traxcess-web --environment '{"Variables":{"VAR":"hi", "VAR2":"hi2", "STATIC_DIR":"lib/build"}}'
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: STATIC_DIR:lib/build}}, VAR2:hi2,
  

Комментарии:

1. Вам не нужно экранировать двойные кавычки внутри одинарных кавычек. На мой взгляд, команда выглядит нормально. Вы пытаетесь отправить эту команду с помощью ssh ?

2. Взгляните на сокращенный синтаксис в docs.aws.amazon.com/cli/latest/reference/lambda /… , возможно, это сработает лучше.

3. Сокращение тоже не работает, та же проблема. Он будет считывать только один аргумент. Мы также не используем SSH, он выполняется как часть сценария развертывания на Jenkins.

4. Возможно, проблема во внедрении этого в Jenkins.

5. Я думаю, у вас может быть одиночная кавычка в одном из ваших отредактированных секретов. Не могли бы вы подтвердить, что это не так?