Groovy Powershell和AWS CLI dynamo DB

时间:2018-05-10 10:39:45

标签: powershell groovy amazon-dynamodb aws-cli ready-api

我最近被赋予了通过SOAP UI连接Dynamo DB的任务,以断言我的公司API正在创建正确的内容。在尝试访问Dynamo数据库数据之后,我们已经决定通过使用Windows PowerShell的groovy脚本进行连接,以利用AWS CLI及其提供的授权。

我已经完成并配置了AWS CLI,并且能够通过电源shell按预期运行命令,例如:

    $ aws dynamodb scan --table-name Accounts
    $ aws dynamodb get-item --table-name Accounts --key '{\"id\":{\"S\":\"3b7e2c4a-f672-4a12-b2bc-7313b60b0a9a\"}}'

在SOAP UI中切换到groovy脚本时,第一个查询按预期工作,但第二个问题引发错误:"解析参数错误' - 键':无效的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);

我相信它可能与引用和exscapes的标记有关,但是还没有找到相关组合,我相信这是我目前对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命令中发布,但这只会返回一个不同的错误:解析参数时出错' - 键':预期:&#39 ; =',收到:'''输入:

这让我难过的原因是因为这个命令在直接转到windows powershell时按预期工作。

1 个答案:

答案 0 :(得分:0)

您可能必须使用反引号`来反转反斜杠\和/或双引号"

或者只是用反引号`char替换\字符,因为在powershell中,转义符号是反引号而不是反斜杠......