我試圖使用HTML POST表單和上載策略執行上傳到S3,我正在努力創建簽名以符合它。爲AWS請求邏輯生成簽名 - 獲取SignatureDoesNotMatch返回
當我提交上載表單時,我總是收到403和SignatureDoesNotMatch響應。
以此爲指導,http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html我已經想出了以下內容:
policy_hash = {
'expiration' => (Time.now.utc + 3600 * 3).iso8601
}
@policy = Base64.encode64(JSON.dump(policy_hash)).gsub("\n","")
kDate = OpenSSL::HMAC.digest('sha256', "AWS4" + @secret_access_key, Time.now.strftime("%Y%m%d"))
kRegion = OpenSSL::HMAC.digest('sha256', kDate, AWS_REGION)
kService = OpenSSL::HMAC.digest('sha256', kRegion, "s3")
kSigning = OpenSSL::HMAC.digest('sha256', kService, "aws4_request")
@signature = Digest::SHA256.hexdigest(
OpenSSL::HMAC.digest('sha256', kSigning, @policy)
)
而且我包括在政策和簽名。我知道AWS_REGION
和@secret_access_key
是正確的,因爲我在別處使用它們。
任何人都可以看到上面的代碼有什麼問題嗎?或有任何其他指導?
感謝有一看,邁克爾。我決定走一條不同的路線,最終我自己不對代碼邏輯進行編碼 – user3895395