Недавно мне было поручено подключиться к динамической БД через интерфейс SOAP, чтобы утверждать, что API моих компаний создают правильный контент.После нескольких попыток получить доступ к данным Dynamo DB, мы решили установить соединение с помощью скрипта Groovy с использованием Windows PowerShell для использования AWS CLI и его авторизации, предоставляемой Amazon.
Я прошел и настроилинтерфейс командной строки AWS и может запускать команды, как и ожидалось, через Power Shell, например:
$ aws dynamodb scan --table-name Accounts
$ aws dynamodb get-item --table-name Accounts --key '{\"id\":{\"S\":\"3b7e2c4a-f672-4a12-b2bc-7313b60b0a9a\"}}'
При переключении на groovy сценарии в интерфейсе SOAP первый запрос работает, как и ожидалось, но вторая проблема вызываетошибка: «Ошибка синтаксического анализа параметра --key»: недопустимый JSON: ожидаемое имя свойства заключено в двойные кавычки: строка 1, столбец 2 (символ 1) »*
Здесь приведен фрагмент кода, сложенного вместе изразличные интернет-источники, которые я использовал для запуска команды powershell:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//Get details and Build the command
String powerShellCommand = context.expand( '${#TestCase#PowerShellCommand}' )
String command = "powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -Command \"${powerShellCommand}\""
// Executing the command
Process powerShellProcess = Runtime.getRuntime().exec(command);
// Getting the results
powerShellProcess.getOutputStream().close();
String line;
//-----------------------------------------------
//Run query
BufferedReader stdout = new BufferedReader(new InputStreamReader(
powerShellProcess.getInputStream()));
String jsonString = "";
while ((line = stdout.readLine()) != null) {
jsonString = jsonString.concat(line);
}
stdout.close();
//-----------------------------------------------
//Error stuff:
BufferedReader stderr = new BufferedReader(new InputStreamReader(
powerShellProcess.getErrorStream()));
while ((line = stderr.readLine()) != null) {
log.info(line);
}
stderr.close();
//-----------------------------------------------
log.info(jsonString);
Я верю, что это может иметь какое-то отношение к расстановке цитат и исключений, но пока еще не нашел правильную комбинацию, яповерьте, это мой текущий вклад в powershell:
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -Command "aws dynamodb get-item --table-name Platform.Accounts --key '{\"id\":{\"S\":\"3b7e2c4a-f672-4a12-b2bc-7313b60b0a9a\"}}'"
Я даже пытался изменитьверсия кода выше, где я бы опубликовал только команду AWS, но это просто возвращает различную ошибку: Ошибка разбора параметра '--key': ожидается: '=', получено: '' для ввода:
Причина, по которой меня это озадачило, заключается в том, что эта команда работает, как и ожидалось, при переходе непосредственно к windows powershell.