【问题标题】:The request signature we calculated does not match the signature you provided - AWS我们计算的请求签名与您提供的签名不匹配 - 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/...。当我转到该链接时,我得到了错误。但是,如果我转到我网站上显示图像的页面,它会完美显示。这有意义吗?

标签: django amazon-web-services amazon-s3 django-rest-framework


【解决方案1】:

可能有多种原因。一个常见问题是客户端上的系统时间。如果距离“真实”时间太远,可能会发生此错误。

【讨论】:

  • 有没有办法让它们在时间上更接近?
  • 使用ntp。查找操作系统的命令行并运行一次。然后再次尝试 aws 命令
猜你喜欢
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2017-12-20
  • 2023-03-23
  • 2022-01-18
  • 2021-10-15
  • 2014-02-22
  • 1970-01-01
相关资源
最近更新 更多