Amazon s3 无法通过jmeter将文件上载到S3

Amazon s3 无法通过jmeter将文件上载到S3,amazon-s3,jmeter,Amazon S3,Jmeter,我试图通过jmeter的PUTTP请求将文件上传到S3。我在“路径”和“文件上传”部分的“文件路径和mime类型”中指定URL 我收到来自S3的“拒绝访问”响应。通过邮递员,相同的URL工作正常,上传成功 这方面有什么帮助吗?您是否在JMeter PUT请求中正确指定了AWS凭据?您需要指定AWS访问密钥和密钥 另一个解决方案是使用JSR223采样器中的AWS Java SDK,并使用Java代码进行调用。如果您能够使用Postman成功上传文件,您可以使用JMeter记录相关请求 准备JMet

我试图通过jmeter的PUTTP请求将文件上传到S3。我在“路径”和“文件上传”部分的“文件路径和mime类型”中指定URL

我收到来自S3的“拒绝访问”响应。通过邮递员,相同的URL工作正常,上传成功


这方面有什么帮助吗?

您是否在JMeter PUT请求中正确指定了AWS凭据?您需要指定AWS访问密钥和密钥


另一个解决方案是使用JSR223采样器中的AWS Java SDK,并使用Java代码进行调用。

如果您能够使用Postman成功上传文件,您可以使用JMeter记录相关请求

  • 准备JMeter进行记录。最快和最简单的方法是使用。从JMeter的主菜单中选择
    文件-模板-录制
    ,然后单击“创建”

  • 展开
    Workbench-HTTP(S)测试脚本记录器
    ,然后单击“开始”按钮

  • 使用JMeter作为代理服务器运行Postman,如:

    C:\Users\Jayashree\AppData\Local\Postman\app-4.9.3\Postman.exe --proxy-server=localhost:8888
    
  • 将需要上载的文件放入JMeter安装的“bin”文件夹
  • 在Postman中运行请求-JMeter应将其记录在
    测试计划-线程组-记录控制器下

  • 有关更多信息,请参阅文档。

    我已经提到了使用JMeter将图像上载到s3存储桶的步骤,如下所示:

    要求:

    • 爪哇9
    • aws-java-sdk-s3 JAR 1.11.313依赖项
    步骤:

    • 将jar文件复制到Jmeter的JMeterHome/lib/ext/

    • 创建一个测试计划并单击线程组

    • 将线程数、爬升周期和循环计数设置为1

    • 右键单击线程组并添加JSR233采样器

    • 选择Java作为JSR233采样器中的语言

    • 在采样器的脚本部分添加以下代码

       import java.io.IOException;
       import java.io.InputStream;
       import java.util.Properties;
       import java.util.ArrayList;
       import java.util.List;
       import java.util.Scanner;
       import com.amazonaws.auth.AWSSessionCredentials;
       import com.amazonaws.auth.AWSStaticCredentialsProvider;
       import com.amazonaws.auth.BasicAWSCredentials;
       import com.amazonaws.services.s3.AmazonS3;
       import com.amazonaws.services.s3.AmazonS3ClientBuilder;
       import com.amazonaws.services.s3.model.AmazonS3Exception;
       import com.amazonaws.services.s3.model.GetObjectRequest;
       import com.amazonaws.services.s3.model.PutObjectRequest;
       import com.amazonaws.services.s3.model.PutObjectResult;
       import com.amazonaws.services.s3.model.S3Object;
       import com.amazonaws.services.s3.model.S3ObjectInputStream;
       import com.amazonaws.regions.Regions;
       import com.amazonaws.regions.Region;
       import com.amazonaws.services.s3.model.ObjectMetadata;
       import com.amazonaws.services.s3.transfer.Download;
       import com.amazonaws.services.s3.transfer.TransferManager;
       import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
       import com.amazonaws.services.s3.transfer.Upload;
      
       String accessKey = "xxxxxxx";
       String secretKey = "xxxxxxxxx";               
       String bucketName = "bucketname"; //specify bucketname
       String region = "region"; //specify region
      
       BasicAWSCredentials sessionCredentials = new BasicAWSCredentials(accessKey, secretKey);
      
       AmazonS3 s3 = AmazonS3ClientBuilder.standard()
      .withRegion(region)
      .withCredentials(new AWSStaticCredentialsProvider(sessionCredentials))
      .build();
      
       TransferManager xfer_mgr = TransferManagerBuilder.standard()
      .withS3Client(s3)
                  .withDisableParallelDownloads(false)
                  .build();
      
       File f = new File("xxx/image.jpg"); //specify path to your image 
       String objectName = "newimage.jpg"; //provide a name for the image how you want your image to be shown i
       Upload xfer = xfer_mgr.upload(bucketName, objectName, f);   
       xfer.waitForCompletion();  
       xfer_mgr.shutdownNow();
      
    如需更多参考,请查看此项