このガイドhttps://gist.github.com/stefanneculai/deed108fad534d0db3ffに従ってAmazon 署名を作成しています。
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
私はレールにfroala gemを使用し、imageUploadToS3
オプションを使用しています。ただし、新しい Amazon 署名バージョンを使用すると、このエラーが発生します。
Encoding::UndefinedConversionError at /admin/campaigns/1/edit_content
"\xAC" from ASCII-8BIT to UTF-8
に変えてみましたgetSignatureKey.force_encoding("ISO-8859-1").encode("UTF-8")
。その後、サーバーは正常に動作し、画像をアップロードするとSignatureDoesNotMatch
Amazon から戻ってきます。
どんな助けでも大歓迎です。