我们计算的请求签名与您提供的签名不匹配 - AWS
Posted
技术标签:
【中文标题】我们计算的请求签名与您提供的签名不匹配 - AWS【英文标题】:The request signature we calculated does not match the signature you provided - AWS 【发布时间】:2015-10-17 21:45:10 【问题描述】:我在尝试访问我在 S3 上的一个文件时收到以下错误:
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
</Error>
图像在我的网站上正常显示,但通过我的 API 访问它会出现上述错误。知道为什么会这样吗?
S3 设置:
AWS_ACCESS_KEY_ID = 'key here'
AWS_SECRET_ACCESS_KEY = 'key here'
AWS_STORAGE_BUCKET_NAME = 'bucket name'
AWS_CLOUDFRONT_DOMAIN = 'something.cloudfront.net'
STATICFILES_STORAGE = 'oby.s3utils.StaticRootS3BotoStorage'
STATIC_S3_PATH = 'media/'
DEFAULT_FILE_STORAGE = 'oby.s3utils.MediaRootS3BotoStorage'
DEFAULT_S3_PATH = 'static/'
S3_URL = '//.s3.amazonaws.com/'.format(AWS_STORAGE_BUCKET_NAME)
MEDIA_ROOT = 'this is fine'
STATIC_ROOT = 'this is fine'
MEDIA_URL = '///'.format(AWS_CLOUDFRONT_DOMAIN, STATIC_S3_PATH)
STATIC_URL = '///'.format(AWS_CLOUDFRONT_DOMAIN, DEFAULT_S3_PATH)
AWS_PRELOAD_METADATA = False
提前感谢您的任何帮助!
【问题讨论】:
“通过我的 API 访问它会出现上述错误”是什么意思?请举例说明您正在使用的网址。如果您列举您正在使用的库,也会很有帮助。 @matagus 我正在为我的 API 使用 Django Rest 框架。当我说我无法从我的 API 访问它时,我的意思是它显示图像的 S3 url。例如,url 看起来像:bucket.s3.amazonaws.com/s3/...
。当我转到该链接时,我得到了错误。但是,如果我转到我网站上显示图像的页面,它会完美显示。这有意义吗?
【参考方案1】:
可能有多种原因。一个常见问题是客户端上的系统时间。如果距离“真实”时间太远,可能会发生此错误。
【讨论】:
有没有办法让它们在时间上更接近? 使用ntp。查找操作系统的命令行并运行一次。然后再次尝试 aws 命令以上是关于我们计算的请求签名与您提供的签名不匹配 - AWS的主要内容,如果未能解决你的问题,请参考以下文章
我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法
AWS S3 - 我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法
AWSSecretsManagerException:我们计算的请求签名与您提供的签名不匹配