Tavern - 不能 post 文件使用 aws 预签名 url

Tavern - can't post files using aws pre-signed url

我是 Tavern 的新手,我正在为 AWS API 网关应用程序实施测试。

案例描述和正常方法

就我而言,我使用预签名 URLs 直接将文件上传到 S3 存储桶。预签名 URL 由以下属性组成:

url = 'https://<bucket>.s3.amazonaws.com/' 

fields:
  key=<filename>.zip 
  x-amz-algorithm=*** 
  x-amz-credential=***  
  x-amz-date=*** 
  x-amz-security-token=*** 
  policy=*** 
  x-amz-signature=*** 

在正常的 cURL 请求中,将按如下方式使用:

curl -v \
-F key=<filename>.zip \
-F x-amz-algorithm=*** \
-F x-amz-credential=*** \
-F x-amz-date=*** \
-F x-amz-security-token=*** \
-F policy=*** \
-F x-amz-signature=*** \
-F file=@<filename>.zip \
'https://<bucket>.s3.amazonaws.com/'

实施测试

如您所见,需要使用 cURL-F 标志,形成 multipart/form-data POST 请求。

Tavern 方法中,据我阅读,-F 等同于 files,因此如下所示:

stages:
  - name: UPLOAD A FILE TO S3
    request:
      method: POST
      url: "https:/<bucket>.s3.amazonaws.com/"
      files: 
          key: target.zip 
          x-amz-algorithm: ***
          x-amz-credential: *** 
          x-amz-date: ***
          x-amz-security-token: *** 
          policy: *** 
          x-amz-signature: ***
          file: '@target.zip'
    response:
      status_code: 200

错误

但是失败并出现错误:

Error: <value of x-amz-algorithm> file not found

所以它将字段视为文件,因此它失败了。

是否可以在 Tavern 中实现此案例,所以我的实现在某处是错误的,或者这在 Tavern 中是不可能的?

亲切的问候,

Rshad

试试这个:

stages:
  - name: UPLOAD A FILE TO S3
    request:
      method: POST
      url: "https:/<bucket>.s3.amazonaws.com/"
      data: 
          key: target.zip 
          x-amz-algorithm: ***
          x-amz-credential: *** 
          x-amz-date: ***
          x-amz-security-token: *** 
          policy: *** 
          x-amz-signature: ***
      files:
          file: "target.zip"
    response:
      status_code: 200