【发布时间】:2019-12-01 17:39:23
【问题描述】:
我创建了一个 api-gateway 来将数据放入我的 s3 存储桶中。当我在控制台中测试它时,它没有问题。即使我在授权人测试中测试我的令牌,它也会返回“允许”,所以我的令牌没有任何问题。我的令牌验证是
^Bearer [-0-9a-zA-z\.]*$
所以用于生成标题的 python 代码如下所示:
headers = {
"Authorization": "Bearer " + token,
"Content-type": "application/json"
}
我的其余代码是:
response = requests.post(url, headers=headers, data={"id":"0678a93d-ee8c-4db5-a831-1e311be4f04b", "test":"12345"})
print(response.text)
我得到的错误信息是 "{"message":"'{My Token}' 不是授权标头中的有效键=值对(缺少等号):'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"}}
但该文件未显示在我的 s3 存储桶中。我该如何解决这个问题?
【问题讨论】:
-
您是否在 S3 存储桶上启用了
AWS_IAM?如果是这样,则需要使用 AWS Signature Version 4 签署您的请求。 -
我不记得启用它。如何检查/验证这一点?
-
我相信,如果您使用除主用户以外的任何用户,您将启用它,因为它是用户属性。这里有更多info on IAM,这里是call the API while using IAM的方法。
标签: python amazon-web-services aws-api-gateway