我正在遵循本指南 https://gist.github.com/stefanneculai/deed108fad534d0db3ff创建亚马逊签名。
def getSignatureKey
kDate = OpenSSL::HMAC.digest('sha256', 'AWS4' + Figaro.env.aws_secret_access_key, Time.zone.now.utc.strftime('%Y%m%d'))
kRegion = OpenSSL::HMAC.digest('sha256', kDate, 'us-west-2')
kService = OpenSSL::HMAC.digest('sha256', kRegion, 's3')
kSigning = OpenSSL::HMAC.digest('sha256', kService, 'aws4_request')
kSigning
end
我正在使用 Rails 的 froala gem 并使用 imageUploadToS3
选项。但是,我在使用新的亚马逊签名版本时收到此错误。
Encoding::UndefinedConversionError at /admin/campaigns/1/edit_content
"\xAC" from ASCII-8BIT to UTF-8
我尝试将其更改为 getSignatureKey.force_encoding("ISO-8859-1").encode("UTF-8")
。之后,服务器运行正常,当我上传图像时,我会从 Amazon 返回 SignatureDoesNotMatch
。
任何帮助将不胜感激。
最佳答案
只是一个猜测,但是这个怎么样?
kDate = OpenSSL::HMAC.digest('sha256', 'AWS4' + Figaro.env.aws_secret_access_key, Time.zone.now.utc.strftime('%Y%m%d')).encode("iso-8859-1").force_encoding("utf-8")
或者只是
kDate = OpenSSL::HMAC.digest('sha256', 'AWS4' + Figaro.env.aws_secret_access_key, Time.zone.now.utc.strftime('%Y%m%d')).encode("UTF-8")
关于ruby-on-rails - 使用 Rails gem 为 Froala 图像编辑器创建 Amazon Signaure V4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899779/