Estoy tratando de cargar archivos a S3 a través de la solicitud PUT http de jmeter. Estoy especificando la URL en 'Ruta' y 'ruta de archivo y tipo mimo en la sección 'Carga de archivos'.
Recibo la respuesta "Acceso denegado" de S3. La misma URL funciona bien a través de Postman y la carga se realiza correctamente.
Alguna ayuda en esto??
Dado que puede cargar correctamente el archivo con Postman, puede registrar la solicitud asociada con JMeter.
Prepare JMeter para la grabación. La forma más rápida y sencilla es utilizar la función Plantillas de JMeter . En el menú principal de JMeter, seleccione File - Templates - Recording y haga clic en "Crear
Expanda Workbench - HTTP(S) Test Script Recorder y haga clic en el botón "Inicio"
Ejecute Postman usando JMeter como servidor proxy como:
C:\Users\Jayashree\AppData\Local\Postman\app-4.9.3\Postman.exe --proxy-server=localhost:8888Test Plan - Thread Group - Recording ControllerConsulte la documentación de HTTP(S) Test Script Recorder para obtener más información.
¿Ha especificado correctamente las credenciales de AWS en la solicitud PUT de JMeter? Debe especificar la clave de acceso de AWS y la clave secreta.
Otra solución sería utilizar el SDK de Java de AWS desde un muestreador JSR223 y realizar la llamada mediante código Java.
Mencioné los pasos para cargar una imagen en el depósito s3 usando JMeter a continuación:
Requisitos:
Pasos:
Copie los archivos jar en JMeterHome/lib/ext/ de Jmeter.
Cree un plan de prueba y haga clic en Grupo de subprocesos.
Establezca el número de subprocesos, el período de aceleración y el recuento de bucles en 1.
Haga clic con el botón derecho en los grupos de subprocesos y agregue una muestra JSR233.
Seleccione Java como idioma en la muestra JSR233.
Agregue el siguiente código en la sección de script de la muestra.
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();Para más referencia, puede consultar este enlace