Как связать модуль aws-sdk npm с тестовым скриптом k6 с помощью веб-пакета для тестирования инфраструктуры AWS

Я следовал инструкциям, приведенным в модулях K6 и Связал модуль npm 'cheerio' в тесте K6, но модуль бросает

ERRO[0044] TypeError: Value is not a constructor at _ 

Я выполнил следующие шаги:

  1. Создал папку проекта и инициализировал npm
  2. Установил эти модули
npm install --save-dev \
webpack \
webpack-cli \
k6 \
babel-loader \
@babel/core \
@babel/preset-env \
core-js \ 
aws-sdk \
util

(Я также добавил утилиту, потому что при запуске пакета утилита не была определена)

  1. Создал этот webpack.config.js
   var webpack = require('webpack');
   var AWS = require('aws-sdk');
   var S3 = require('aws-sdk/clients/s3');
   
   module.exports = {
       mode: "production",
       entry: './script.js',
       output: {
           path: path.resolve(__dirname, 'dist'),
           libraryTarget: "commonjs",
           filename: 'app.bundle.js'
       },
       module: {
           rules: [
               {
                   test: /\.js$/,
                   loader: 'babel-loader',
               }
           ]
       },
       stats: {
           colors: true
       },
       target: "web",
           externals: /k6(\/.*)?/,
       devtool: 'source-map'
   };
  1. Создал script.js
import http from 'k6/http';
import AWS from 'aws-sdk';
AWS.config = new AWS.config();
AWS.config.accessKeyId = "";
AWS.config.secretAccessKey = "";
AWS.config.sessionToken = ""
AWS.config.region = "us-east-1";

var S3 = require('aws-sdk/clients/s3');

var s3 = new S3({apiVersion: '2006-03-01'});

export default function () {
  var bucketParams = {
    Bucket: 'bucket-name',
  };
  s3.listObjects(bucketParams, function (err, data) {
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", data);
    }
  });
}
  1. Когда я запускаю пакет, изначально получались ошибки учетных данных, поскольку они не собирали общие файлы учетных данных, но после вызова AWS.config они, казалось, были решены, но по-прежнему получали упомянутую выше ошибку TypeError.

person Nitav Shah    schedule 17.11.2020    source источник
comment
aws-sdk, вероятно, не будет работать с k6 по разным причинам совместимости, но даже если бы он работал, его производительность была бы довольно плохой, что, по мнению IMO, является проблемой для инструмента нагрузочного тестирования. Я сделал gist.github.com/MStoykov/38cc1293daa9080b11e26053589a6865, который отлично работает для S3, и начал о доработке для лучшей работы с другими сервисами AWS (secretManager) здесь github.com/ loadimpact/jslib.k6.io/pull/11 , но вам, возможно, придется его немного подправить, так как тестирование оказалось проблемой.   -  person Михаил Стойков    schedule 23.11.2020