【问题标题】:unable to upload files to S3 through jmeter无法通过 jmeter 将文件上传到 S3
【发布时间】:2020-09-02 20:02:38
【问题描述】:

我正在尝试通过来自 jmeter 的 PUT http 请求将文件上传到 S3。我在“文件上传”部分的“路径”和“文件路径”和“mime 类型”中指定 URL。

我收到来自 S3 的“拒绝访问”响应。相同的 URL 通过 Postman 可以正常工作,并且上传成功。

这方面有什么帮助吗??

【问题讨论】:

    标签: amazon-s3 jmeter


    【解决方案1】:

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

    1. 准备 JMeter 进行记录。最快和最简单的方法是使用JMeter Templates feature。从 JMeter 的主菜单中选择 File - Templates - Recording 并单击“创建”

    2. 展开Workbench - HTTP(S) Test Script Recorder并点击“开始”按钮

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

      C:\Users\Jayashree\AppData\Local\Postman\app-4.9.3\Postman.exe --proxy-server=localhost:8888
      
    4. 把你需要上传的文件放到你安装的JMeter的“bin”文件夹中
    5. 在 Postman 中运行请求 - JMeter 应将其记录在 Test Plan - Thread Group - Recording Controller

    有关详细信息,请参阅HTTP(S) Test Script Recorder 文档。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我在下面提到了使用 JMeter 将图像上传到 s3 存储桶的步骤:

        要求:

        • Java 9
        • aws-java-sdk-s3 JAR 1.11.313 依赖项link

        步骤:

        • 将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();
          

        如需更多参考,您可以查看link

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-03-04
          • 2015-04-12
          • 2017-11-21
          • 2021-07-22
          • 2017-10-16
          • 2018-08-20
          • 1970-01-01
          相关资源
          最近更新 更多