アップロードポリシーとともに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