Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services JMeter生成签名的AWS API请求_Amazon Web Services_Request_Jmeter_Signed_Jsr223 - Fatal编程技术网

Amazon web services JMeter生成签名的AWS API请求

Amazon web services JMeter生成签名的AWS API请求,amazon-web-services,request,jmeter,signed,jsr223,Amazon Web Services,Request,Jmeter,Signed,Jsr223,我试图在JMeter中生成一个签名的AWS请求 我的第一次尝试是在HTTP头管理器中放入相同的参数,这些参数在我的Postman请求中可以正常工作。这些参数是“AccessKey”、“SecretKey”、“AWS区域”、“服务名称”和“会话令牌”,但响应称“访问被拒绝”。在最好的情况下,我只是在这一步中使用了错误的名称,重命名它们已经修复了所有问题 我的第二次尝试是遵循并编写一个生成签名请求的Java类。然后我想使用JSR223预处理器来设置变量,使用vars.put。如何才能正确地执行此操作

我试图在JMeter中生成一个签名的AWS请求

我的第一次尝试是在HTTP头管理器中放入相同的参数,这些参数在我的Postman请求中可以正常工作。这些参数是“AccessKey”、“SecretKey”、“AWS区域”、“服务名称”和“会话令牌”,但响应称“访问被拒绝”。在最好的情况下,我只是在这一步中使用了错误的名称,重命名它们已经修复了所有问题

我的第二次尝试是遵循并编写一个生成签名请求的Java类。然后我想使用JSR223预处理器来设置变量,使用
vars.put
。如何才能正确地执行此操作?我是JMeter的新手,我想我可以粘贴Java代码,添加vars.put语句,就这样。但遗憾的是,如果我在之后运行调试采样器,这不会创建一个名为“aaauthorization”的变量:

class aws_request {

public static String bytesToHex(byte[] hash) {
    ...
    return hexString.toString();
}

private static byte[] HmacSHA256(String data, byte[] key) throws Exception {
    ...
    return mac.doFinal(data.getBytes("UTF8"));
}

private static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName)
        throws Exception {
    ...
    return kSigning;
}

public static String getAuthorization() {
    try {...
        return authorization;
    } catch (Exception e) {
        return "failed";
    }

}
public static void main(String args[]) {
    vars.put("aaauthorization", getAuthorization());
}
}

提前感谢您的帮助

您需要删除
类aws_请求{
定义和结束方括号
}
。与普通Java类不同,代码是通过评估的,因此不允许有“类”,但是普通方法将被解析,并且您将能够执行它们

如果您的Groovy脚本没有执行它应该执行的操作,首先检查jmeter.log文件——如果有任何错误——它们将转到那里

有关在JMeter测试中使用Groovy脚本的更多信息,请参阅本文

不要与
java
language选项混淆,它是通过解释器实现的,解释器将您限制在语言特性上,当涉及到高负载时,它的性能是一个大问号