无法使用S3预先签名的URL上传原始字符串(csv或json)

时间:2018-03-23 16:32:40

标签: python curl amazon-s3 lambda aws-api-gateway

使用Lambda和API网关关注此链接的说明:https://sookocheff.com/post/api/uploading-large-payloads-through-api-gateway/我有一个设置,允许我获取预签名的URL并上传文件。我已经使用CURL进行了测试,它已经有效了。

但是当我尝试发送原始字符串(csv格式或json格式)时,它失败了!

工作

的示例
curl --request PUT --upload-file Testing.csv "**pre signed upload url**"

不起作用的示例

curl --request PUT -H "Content-Type: text/plain" --data "this is raw data" "**pre signed upload url**"
curl --request PUT --data "this is raw data" "**pre signed upload url**"

我拨打的电话不正确吗?我应该切换到POST吗?那么这个电话会是什么样的?

2 个答案:

答案 0 :(得分:0)

它不是自签名网址的becoz,它是API网关设置为的内容类型的becoz,

// Exports visual data
visual.exportData(models.ExportDataType.Summarized, 100)
  .then(function (data) {
    Log.log(data);
  })

您添加其他内容类型,它应该通过。

希望它有所帮助。

答案 1 :(得分:0)

因此解决方案是在预签名url生成期间指定内容类型,然后在CURL put命令中指定相同的内容类型。想知道答案在这里:S3 PUT doesn't work with pre-signed URL in javascript和来自@Kannaiyan的关于内容类型正确方向的指针