百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

使用Groovy在jmeter上将文件上传到AWS S3

toyiye 2024-06-21 12:18 10 浏览 0 评论

选择 AWS s3主要有三个原因: 经济性、速度和可靠性。在这里,学习如何使用 Groovy 将文件上传到 JMeter 中的 AWS S3


我使用我的个人 AWS s3来存储我所有的个人和机密文件。选择 AWS s3主要有三个原因: 经济性、速度和可靠性。如果您正在使用 AWS 云,那么 s3的使用是不可避免的。S3在冷热存储过程中起着关键作用。有时您需要通过性能测试脚本以编程方式将有效负载或文件对象上传到 S3。本文将帮助您使用 Groovy 将文件上传到 JMeter 中的 AWS S3。

什么是 S3?

Amazon Simple Storage Service (Amazon S3)是一种对象存储服务,提供行业领先的可伸缩性、数据可用性、安全性和性能。

3有各种存储类: s3标准,s3智能分层,s3冰川即时检索,等等。

先决条件

以下是上传文件到 AWS s 3的先决条件:

  • AWS 账户
  • 具有 s3访问策略的 AWS IAM 用户
  • 基础的知识 AWS services
  • 掌握 JMeter 的基本知识
  • 具备 AWS SDK (Java)的基本知识
  • 要上载的文件

用户

  • 登录您的 AWS 帐户并打开IAM service. 按一下用户 下面Access Management 接达管理.
  • 点击添加用户按钮设置用户详细信息和凭证类型,如下所示进来jmeter-s3-accessUser name 用户名 检查完毕Access key - Programmatic access.
  • 用户将以编程方式访问 AWS 服务,而不是从用户控制台访问。请单击Next: Permissions.
  • 设置权限部分,点击直接附加现有政策, 然后通过输入s3.
  • 为了演示的目的,让我们AmazonS3FullAccess.检查然后点击Next: Tags 下一步: 标签. 但是对于生产服务器,遵循零信任框架
  • 添加标记是可选的,但是建议使用相关的密钥值
  • 点击Review 检讨然后点击Create user 创建用户.
  • Access key IDSecret access key 或者,你也可以下载.csv 文件

JMeter 测试计划

默认情况下,JMeter 没有将工件上传到 AWS s3的特性。为了扩展功能,我们必须利用 jsr223采样器。

下面是 JMeter 系列的完整播放列表,它将帮助你在一周内成为一个英雄。

JSR223 Sampler Jsr223取样器

本地不可能写上传到 s3代码块。我们必须利用最新版本的 AWS SDK for Java。要将 AWS SDK 作为 jsr223采样器的依赖项添加到 jsr223采样器,最简单的方法是利用 Grape。就我个人而言,我还没有尝试过 JMeter Maven 插件。我发现葡萄是简单的开始。

什么是Grape?

Groovy 所有适应性打包引擎或 Groovy 高级打包引擎 Grape 是与 Groovy 一起构建的 JAR 依赖管理器。


使用 jsr223中的@Grab 注释,您可以将 Maven 存储库依赖项添加到类路径。

@Grab(group='software.amazon.awssdk', module='s3', version='2.17.172', scope='test')


上面的注释将下载完成 AWS SDK s3依赖项。

@Grapes(
    @Grab(group='software.amazon.awssdk', module='s3', version='2.17.172', scope='test'),
    @Grab(group='software.amazon.awssdk', module='sts', version='2.17.172', scope='test')

)


若要更改源,请使用@GrabResolver 注释。

@GrabResolver(name='restlet', root='http://maven.restlet.org/')


Hello Time 使用 Grape in JSR223

通过使用@Grab 注释编写一个简单的片段,让我们了解 Grape 在 JMeter 中的 JSR223 Sampler 中是如何工作的。为了用一个简单的 Hello world 来解释它,请原谅 Hello time 示例,让我们使用以下代码片段。将下面的代码复制并粘贴到 JMeter 中的 jsr223采样器中。

@Grapes(
    @Grab(group='joda-time', module='joda-time', version='2.10.14')
)
import org.joda.time.LocalDateTime

LocalDateTime currentDateTime = new LocalDateTime()
log.info "Local Time is " + currentDateTime

让我们把每一行都切开。@ grapes 是可选的 inception 注释,它有@Grab 注释。可以在 jsr223的任何位置放置一个或多个@Grab 注释。在这个示例中,@grab 注释将管理 joda-time 依赖关系,并在 Log Viewer 中打印当前日期和时间。默认情况下,它会从 mvnrepository.com 下载依赖项。

单击 JMeter 中的 Run 按钮,查看 Log Viewer 中的日志消息。单击 Run 按钮后,上面的脚本将从源代码下载依赖项,并将 jar 保存在/Users/< user >/中。C: 用户 < user > 。在 Windows 操作系统中的Grape

依赖项下载只会在第一次执行时发生,JMeter 中的最终执行将会很快。

AWS S3 SDK

有多种方法可以将工件上传到 S3,例如,通过 AWS CLI、 AWS SDK、 HTTP 请求等等。官方的 AWS SDK 打开了通过 API 构建 AWS 应用程序的大门。

通过利用 AWS SDK for Java,很容易与 AWS 服务进行交互。的最新版本是 v2。V2是 v1的重大改写。V2版本采用非阻塞 i/o 架构,使用 Netty 实现高并发性,线程数较少。此外,它还支持 HTTP/2和自动分页。

在 Groovy 中将文件上传到 s 3


我们将在 JSR223 Sampler 中利用 Groovy 中的 Grape,为 s3添加 AWS SDK。前往 https://mvnrepository.com/artifact/software.amazon.awssdk/s3,选择最新版本。在撰写本文的时候,最新版本是2.17.172。

单击 Grape 并复制如下所示的注释。

使用 Groovy-Grape 将文件上传到 JMeter 中的 AWS S3

然后,复制并粘贴下面的代码片段到 jsr223采样器中。

@Grapes(
    @Grab(group='software.amazon.awssdk', module='s3', version='2.17.172', scope='test')
)
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
import software.amazon.awssdk.regions.Region
import software.amazon.awssdk.services.s3.S3Client
import software.amazon.awssdk.services.s3.model.*

import java.io.File
import java.nio.file.Paths

// Configurations
String accessKey = vars.get("AWS_ACCESS_KEY")
String secretKey = vars.get("AWS_SECRET_KEY")
String bucketName = vars.get("AWS_BUCKET_NAME")
String strFilename = "C:\\temp\\result.json"

try {
	// Set region
	Region region = Region.US_EAST_1
	
	// Create credentials
	AwsBasicCredentials awsCreds = AwsBasicCredentials.create(
	      accessKey,
	      secretKey)
	
	// Build S3 Client
	S3Client s3 = S3Client.builder()
	      .region(region)
	      .credentialsProvider(StaticCredentialsProvider.create(awsCreds))
	      .build()
	
	// Create file object
	File s3Obj = new File(strFilename)
	
	// Create PUT request
	PutObjectRequest request = PutObjectRequest.builder()
	      .bucket(bucketName)
	      .key(s3Obj.getName())
	      .build()
	
	// Upload file
	s3.putObject(request, Paths.get(strFilename))
}

// Catching exception and displaying it in the Sample result
catch (S3Exception e){
	SampleResult.setSuccessful(false)
	SampleResult.setResponseMessage(e.getMessage())
	SampleResult.setResponseCode(null)
}



让我们对上面的代码进行切片。

  1. 在加入语句时,第一个块表示配置,如 AWS 访问、密钥和 Bucket 名称
  2. 下一个配置是 AWS 区域
  3. 创建凭据以访问桶
  4. S3Client 方法创建一个 s3客户端AwsBasicCredentials 证书
  5. s3Obj 就是要上传的文件
  6. PutObjectRequest 会建立请求
  7. s3.putObject 将上传文件的杠杆作用于request.

如果发生任何异常,JMeter 将在采样器中显示异常,并提供异常详细信息以便进行故障排除。

在测试计划中可以使用变量 AWS _ access _ key、 AWS _ bucket _ name 和 AWS _ secret _ key。

下面是下载示例 JMeter 测试计划的存储库,以供参考。

永远不要在测试计划中存储 AWS 凭据。通过命令行、环境变量或以编程方式生成凭据。

恭喜! 现在您知道了如何使用 jsr223采样器在 JMeter 中以编程方式将工件上传到 S3。

总结

上传工件到 s3只是个开始。通过利用 AWS SDK for Java,可以使用 Groovy 与 JMeter 提供的 AWS 服务进行交互。例如,在 JMeter 测试执行之后,可以使用上面的代码片段将结果上传到 zip 文件中。如果您有任何其他用例的 JMeter,请让我知道在评论。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码