Tes*_*uji 22 python amazon-web-services aws-api-gateway
我创建了一个 api 网关来将数据放入我的 s3 存储桶中。当我在控制台中测试它时,它没有问题。即使我在授权方测试中测试我的令牌时,它也会返回“允许”,因此我的令牌没有任何问题。我的令牌验证是
^Bearer [-0-9a-zA-z\.]*$
Run Code Online (Sandbox Code Playgroud)
所以我用于生成标题的 python 代码如下所示:
headers = {
"Authorization": "Bearer " + token,
"Content-type": "application/json"
}
Run Code Online (Sandbox Code Playgroud)
我的其余代码是:
response = requests.post(url, headers=headers, data={"id":"0678a93d-ee8c-4db5-a831-1e311be4f04b", "test":"12345"})
print(response.text)
Run Code Online (Sandbox Code Playgroud)
我得到的错误消息是 "{"message":"'{My Token}' not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer {My Token}'."}"
我的网址如下所示:
https://my-api-gateway.amazonaws.com/MyStage,我在我的资源中使用了 {proxy+}。我注意到如果我将标题从 Content-type 更改为 Accept,它会给我同样的错误,但如果我也将我的 url 更改为https://my-api-gateway.amazonaws.com/MyStage/any-arbitrary-string /,我得到一个
{"response":{"status":"VALID", "message": "success"}}
Run Code Online (Sandbox Code Playgroud)
但该文件没有出现在我的 s3 存储桶中。我该如何解决?
Wil*_*ain 22
当解析的 URL 不正确时,我遇到了这个错误。(或者没有代理但 URL 不正确。)
我解决了。我将方法更改为来自根资源(而不是不必要的 {proxy+},并且还注意到我的 python 方法不正确。我有response = requests.post(url, headers=headers, data=my_json),但数据只接受字符串。我必须使用requests.post(url, headers=headers, json=my_json)或requests.post(url, headers=headers,data=json.dumps(my_json))
对我来说,它不起作用的原因是因为我在对集成进行更改时没有重新部署。
所以如果你使用terraform来创建资源,你需要包含这个triggers部分。请参阅:https : //www.terraform.io/docs/providers/aws/r/api_gateway_deployment.html#redeployment-triggers