我使用的是一个名为Alteryx的产品,我试图编写一个Alteryx宏,它利用Dynamodb查询API,这样我就可以从Alteryx内部访问Dynamodb表。不幸的是,我无法使用amazonsdk,所以必须手动/在Alteryx中编写Amazon查询api签名。在
我正在使用Amazon文档中包含的Python Post示例来指导我完成整个过程。Python示例可以在这里找到:Python Post Example。在
我已经完成了示例中列出的每个任务:
最初,我得到了以下错误:
InvalidSignatureException","message":"Signature·expired:·20150704T101118Z·is·now·earlier·than·20150704T135625Z·(20150704T141125Z·-·15·min.)
虽然我的计算机上的时间是正确的,我的请求中包含的时间:101118Z实际上是正确的,但错误消息告诉我签名已在4小时前过期。我针对这个错误所做的工作是在我的日期/时间变量中增加4个小时,这似乎起到了作用。在
问题1。有没有人知道导致这个错误的原因,有没有办法在我的日期/时间变量中不增加4个小时来解决它。这是否会在签名API签名和请求过程中造成额外的复杂性。在
在应用了日期/时间解决方法后,我得到了一条新的错误消息:
^{pr2}$因此,接下来我将规范请求与错误消息中提供的请求进行比较。这是我发现的:
这一点很重要,因为规范化请求是流程下一步的输入。要创建要签名的字符串,必须计算规范请求的sha256哈希摘要。对于这个问题,我尝试了两种替代方法/解决方法:
问题2:是否有人遇到此错误;您是否知道原因和/或是否有解决方法。在
我的希望是,一旦我能够解决问题3,我将能够成功地完成第4个任务,计算签名,并成功地提出一个api请求。在
问题3:是否有人意识到这一过程中存在其他问题,或有任何其他建议或见解。在
除非您有非常具体的理由手动执行,否则标准建议是使用boto从Python访问AWS。在
编辑:一般来说,标准的建议是在适合您的用例的地方使用可用的库。在
编辑2:查看关于
sys.path
的评论和您的案例的解决方法。在相关问题 更多 >
编程相关推荐