JMeter 生成签名的 AWS API 请求
JMeter generate Signed AWS API Requests
我正在尝试在 JMeter 中生成签名的 AWS 请求。
我的第一次尝试是在 HTTP Header 管理器中放置相同的参数,这些参数在我的 Postman 请求中运行良好。这些参数是 "AccessKey"、"SecretKey"、"AWS Region"、"Service Name" 和 "Session Token",但响应显示 "Access denied"。在最好的情况下,我只是在这一步中使用了错误的名称,重命名它们已经解决了所有问题。
我的第二次尝试是遵循 AWS documentation 并编写一个 Java class 来生成签名请求。然后我想使用 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());
}
}
提前感谢您的帮助!
您需要删除 class aws_request {
定义和右大括号 }
。 JSR223 Test Elements are different from normal Java classes, the code is being evaluated via ScriptEngine 因此您不能使用 "classes" 但是正常的方法将被解析并且您将能够执行它们。
如果你的 Groovy 脚本没有做它应该做的事情,首先检查 jmeter.log 文件 - 如果有的话错误 - 他们会去那里。
有关在 JMeter 测试中使用 Groovy 脚本的更多信息,请参阅 Apache Groovy - Why and How You Should Use It 文章。
不要与 java
语言选项混淆,它是通过 Beanshell interpreter which limits you to Java SE 1.5 语言功能实现的,当涉及到高负载时,它的性能是一个很大的问号。
我正在尝试在 JMeter 中生成签名的 AWS 请求。
我的第一次尝试是在 HTTP Header 管理器中放置相同的参数,这些参数在我的 Postman 请求中运行良好。这些参数是 "AccessKey"、"SecretKey"、"AWS Region"、"Service Name" 和 "Session Token",但响应显示 "Access denied"。在最好的情况下,我只是在这一步中使用了错误的名称,重命名它们已经解决了所有问题。
我的第二次尝试是遵循 AWS documentation 并编写一个 Java class 来生成签名请求。然后我想使用 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());
}
}
提前感谢您的帮助!
您需要删除 class aws_request {
定义和右大括号 }
。 JSR223 Test Elements are different from normal Java classes, the code is being evaluated via ScriptEngine 因此您不能使用 "classes" 但是正常的方法将被解析并且您将能够执行它们。
如果你的 Groovy 脚本没有做它应该做的事情,首先检查 jmeter.log 文件 - 如果有的话错误 - 他们会去那里。
有关在 JMeter 测试中使用 Groovy 脚本的更多信息,请参阅 Apache Groovy - Why and How You Should Use It 文章。
不要与 java
语言选项混淆,它是通过 Beanshell interpreter which limits you to Java SE 1.5 语言功能实现的,当涉及到高负载时,它的性能是一个很大的问号。