を使用してファイルをアップロードします


私は私の個人的なAWS S 3をすべて私の個人的で秘密の文書を保存するために使います.AWS S 3を選ぶための3つの主要な理由があります:手頃な価格、速度と信頼性.あなたがAWS雲に取り組んでいるならば、S 3の使用は避けられません.S 3は、ホットおよびコールドストレージ内のオブジェクトを格納する重要な役割を果たしている.場合によっては、パフォーマンステストスクリプトを介して、プログラムによってS 3にペイロードまたはファイルオブジェクトをアップロードする必要があります.このブログ記事はGroovyを使用してJMeterのAWS S 3にファイルをアップロードするのに役立ちます.

S 3とは


Amazon Simple Storage Service(Amazon S 3)は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです.
S 3の様々なストレージクラスが付属しています:S 3標準、S 3インテリジェントタイリング、S 3氷河インスタント検索と詳細.

必要条件


以下は、AWS S 3へのアップロードファイルの必須条件です.
  • AWSアカウント
  • AWS IAMユーザはS 3アクセスポリシーを使用します.
  • AWSサービスの基礎知識
  • JMeterの基礎知識
  • AWS SDK ( Java )の基礎知識
  • アップロードするファイル
  • AWSアイアム


    あなたのAWSアカウントにログインして、開いているIAMサービス.アクセス管理の下でユーザーをクリックします.
    「ユーザーを追加」ボタンをクリックし、次のようにユーザー詳細と資格情報型を設定します.
    エンターjmeter-s3-access ユーザー名とチェックAccess key - Programmatic access .
    このユーザーは、ユーザーコンソールからではなく、プログラム的にAWSサービスにアクセスできます.「次へ」をクリックします.パーミッション
    Set許可セクションで、既存のポリシーを直接アタッチし、入力してS 3のポリシーをフィルタリングしますs3 .
    デモンストレーション目的のためにAmazonS3FullAccess . チェックAmazonS3FullAccess をクリックします.しかし、生産サーバーの場合は、ゼロ信頼フレームワークに従ってください.
    タグの追加はオプションですが、関連するキーペア値を持つことをお勧めします.
    をクリックし、[ Createユーザー]をクリックします.
    アクセスキーのIDと秘密のアクセスキーを確保した場所にコピーします.また、ダウンロードすることができます.CSVファイル.

    JMeterテストプラン


    デフォルトでは、JMeterはAWS S 3にアーティファクトをアップロードする機能を持っていません.機能を拡張するには、JSR 223サンプラーを活用しなければなりません.
    ここでは、1週間以内に主人公になるのを助けるJMeterシリーズの完全なプレイリストです.

    JSR 223サンプラー


    s 3コードブロックをネイティブにアップロードすることはできません.Java用のAWS SDKの最新版を活用しなければなりません.AWS SDKをJSR 223サンプラへの依存性として追加するには、最も簡単な方法はブドウを活用することです.個人的には、JMeter Mavenプラグインを試してみませんでした.私は、ブドウが始まるのが簡単であるとわかりました.

    どのようなブドウですか?


    は、Groovy適応包装エンジンを使用しています.
    使用@Grab JSR 223の注釈は、Mavenのリポジトリ依存性をクラスパスに追加できます.
    @Grab(group='software.amazon.awssdk', module='s3', version='2.17.172', scope='test')
    上記の注釈はAWS SDK S 3依存性をダウンロードします.複数の依存関係をダウンロードするには@Grapes 注釈.
    @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/')

    こんにちはJSR 223でグレープを使用して時間


    JMeterのJSR 223サンプラーでどのようにグレープが注釈を使用して単純なスニペットを書くことによってどのように機能するかを理解しましょう.簡単に説明するHello world , 許しHello time 以下のコードスニペットを使用します.JMeter 223でJMeter 223のサンプラーにコピーしてペーストします.
    @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
    私たちは、各ラインをスライスしましょう.注釈を持っている任意の開始注釈です.つ以上の注釈をJSR 223のどこにでも置くことができます.この例では、注釈はjoda-time 依存関係と、現在の日付と時刻をログビューアで印刷します.デフォルトでは、mvnRepositoryから依存関係をダウンロードします.COM .
    ログビューアのログメッセージを見るには、JMeterの[実行]ボタンをクリックします.ボタンをクリックすると、上記のスクリプトはソースからの依存関係をダウンロードし、/Users/<user>/.groovy/grapes マックでC:\Users\<user>\.groovy\grapes Windows OSで.
    依存関係のダウンロードは最初の実行だけで起こります.JMeterの最終的な実行は高速です.

    DSのSDKです


    S 3にアーティファクトをアップロードするために利用可能な複数のメソッドがあります.例えば、AWS CLI、AWS SDK、HTTPリクエストなど.AWS SDKはAPIを介してAWS用のアプリケーションを構築するためのドアを開きます.
    JavaのためにAWS SDKを活用することによって、AWSサービスと対話するのは簡単です.JavaのAWS SDKの最新バージョンはV 2です.V 2はV 1の大きな書き換えである.v 2バージョンにはnettyを使用した非ブロッキングI/Oアーキテクチャが詰まっています.また、HTTP/2と自動ページ付けをサポートします.

    でファイルをアップロードします


    我々は、S 3のためにAWS SDKを加えることによって、JSR 223サンプラーでGroovyでブドウを活用するつもりです.ヘッドトゥhttps://mvnrepository.com/artifact/software.amazon.awssdk/s3と最新バージョンを選択します.この時点で、最新バージョンは2.17.172です.
    をクリックして次のように注釈をコピーします.
    ファイルをアップロードするJMeterのAWS
    次に、次のスニペットをコピーして貼り付けます.
    @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)
    }
    上記のコードをスライスしましょう.
  • 追加後import ステートメント、最初のブロックは、AWSアクセス、秘密鍵、およびバケツ名などの構成を表します.
  • 次の設定はAWS領域です.
  • AwsBasicCredentials Blockバケツにアクセスする資格情報を作成する
  • S3Client ブロックは、AwsBasicCredentials 資格情報.
  • s3Obj ファイルをアップロードします.
  • PutObjectRequest リクエストをビルドします.
  • s3.putObject ファイルをアップロードしますrequest.
  • 例外が発生した場合、JMeterは、トラブルシューティングの例外の詳細について、サンプラの例外を表示します.
    変数AWS_ACCESS_KEY , AWS_BUCKET_NAME , and AWS_SECRET_KEYTest Plan .
    ここではrepository to download 参考のためのサンプルJMeterテストプラン.
    テスト計画にAWS資格情報を格納することはありません.コマンドライン、環境変数を介して資格情報を渡す、またはプログラムを生成します.
    おめでとう!これでJSR 223サンプラーを使用してJMeterでs 3にアーティファクトをアップロードする方法を知っています.

    結論


    S 3にアーティファクトをアップロードするだけで始まります.Java用のAWS SDKを活用することによって、JMeterからGroovyを使用してAWSサービスと対話することができます.JMeterのテスト実行後、上記のスニペットを使用してzipファイルに結果をアップロードできます.あなたがJMeterのために他のusecaseを持っているならば、コメントで知らせてください.