在JMeter中生成AWS签名

时间:2018-03-05 13:27:41

标签: amazon-web-services jmeter performance-testing

我正在使用JMeter工具测试托管在AWS基础架构上的应用程序,其中每个触发的请求都需要传递AWS签名标头以及在AWS中的IAM级别验证请求的请求。我有与AWS控制台中创建的用户角色相关的访问权限和密钥。

JMeter中是否有可用的beanhell代码,它有助于使用JMeter中每个请求的访问和密钥生成AWS签名?

1 个答案:

答案 0 :(得分:0)

该代码在AWS docs网站上提供,例如,请参阅Deriving the Signing Key with Java。这是最小的列表,以防万一:

static byte[] HmacSHA256(String data, byte[] key) throws Exception {
    String algorithm="HmacSHA256";
    Mac mac = Mac.getInstance(algorithm);
    mac.init(new SecretKeySpec(key, algorithm));
    return mac.doFinal(data.getBytes("UTF8"));
}

static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName) throws Exception {
    byte[] kSecret = ("AWS4" + key).getBytes("UTF8");
    byte[] kDate = HmacSHA256(dateStamp, kSecret);
    byte[] kRegion = HmacSHA256(regionName, kDate);
    byte[] kService = HmacSHA256(serviceName, kRegion);
    byte[] kSigning = HmacSHA256("aws4_request", kService);
    return kSigning;
}

请注意,starting from JMeter version 3.1 it is recommended to use JSR223 Elements and Groovy language用于编写脚本,因为它更现代(支持所有新的Java SDK功能),在#34;普通"之上有很多"syntax sugar"。与Beanshell,JavaScript和其他可用选项相比,Java SDK和Groovy性能要好得多。有关详细信息,请参阅Apache Groovy - Why and How You Should Use It文章。