簡體   English   中英

如何使用 AWS 簽名版本 4 發送加特林請求?

[英]How to send gatling request with AWS Signature Version 4?

我正在嘗試自動化一個場景,我需要在 AWS 上托管的 Pod 上生成負載。 它們需要使用“AWS 簽名版本 4”進行身份驗證。

我不確定如何通過 Gatling 發送帶有“AWS 簽名版本 4”的請求。 AWS 簽名版本 4 采用這些值。

  1. 訪問密鑰
  2. 密鑰
  3. AWS 區域
  4. 服務名稱

退貨

"X-Amz-Date":
"Authorization": "AWS4-HMAC-SHA256 Credential=AccessKey/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature="somevalue",

提供這樣的所有值會有所幫助嗎?

.exec(http("RESTGetOAuthToken")
          .post("")
          .header("Content-Type", "application/x-www-form-urlencoded")
          .header("Content-Type", "application/json")
          .header("X-Amz-Date", "")
          .header("Authorization", "")
          .header("Cache-Control", "no-cache")
        .body(StringBody("""{
  "orders": [
      ]
    }
  ]

您需要生成 X-Amz-Date 和授權詳細信息並將它們與標題一起傳遞。 您可以使用下面的類來提取這兩個信息。

https://github.com/sandipperf/AWS_API_Request_Gatling/blob/master/RequestSigner.scala通過提供 ASWAccessKey 和 AWSSecretKey 來提取 AWS 簽名密鑰。

**這是在導入 RequestSigner 類后如何從 Scala 測試類中提取信息的方法 **

val AwsAccessKey = "XXXXXXXXXXXX"
val AwsSecretKey = "XXXXXXXXXXXXXXXXXXXXXXXX"
val signature = RequestSigner.sign(
        uriPath = "/Your/URL/HERE",

        method = "POST",
        //body = Some("""{ "hello": "foo" }"""),
        body = Some(requestBuildBody),
       //requestBuildBody = your actual request body you are going to pass along with post request 

        headers = Seq(("Host", List("XXXXXXXX.execute-api.us-XXXX-2.amazonaws.com"))),
        queryParameters = Seq.empty,
        credentials = new BasicAWSCredentials(AwsAccessKey, AwsSecretKey),
        region = "us-XXXX-2",
        service = "execute-api")


      val amzStamp = (signature.toString).substring(18, 34)
      val sign = (signature.toString).substring(35, 223)
      AmazonTimeDetails.append(amzStamp).toString
      SignatureDetails.append(sign).toString

從上面的代碼中,您將獲得 X-Amz-Date 和 signatureDetails ,您需要在標題中使用它們

    "Host" -> "XXXXXX.execute-api.us-XXXX-X.amazonaws.com",
    "Content-Type" -> "application/json",
    "X-Amz-Date" -> "${amazonTimeDetails}",
    "Authorization" -> "${signatureDetails}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM