我的主要目的是使用Ruby中的AWS Cloudfront签署URL
我已在https://portal.aws.amazon.com/gp/aws/securityCredentials(密钥对标签)中创建了密钥对。其中提供了密钥对id和pem文件(将pem文件保存在项目目录中)。
在AWS Cloudfront门户中,创建分发。为限制存储桶访问选择“是”。
在Bucket上单击No for Grant Read Permissions。
创建分发。
在S3存储桶中,我使用的是非公开的文件。即没有读取权限。在这种情况下,我们将对sample.png进行测试。
url = "https://actual_cdn_id_here.cloudfront.net/sample.png"
key_pair_id = 'your_aws_key_pair_id'
expires_in = 1.minute
expires = (Time.now.getutc + expires_in).to_i.to_s
private_key = OpenSSL::PKey::RSA.new(File.read('private_key_file.pem'))
policy = %Q[{"Statement":[{"Resource":"#{url}","Condition":
{"DateLessThan":{"AWS:EpochTime":#{expires}}}}]}]
signature = Base64.strict_encode64(private_key.sign(OpenSSL::Digest::SHA1.new, policy))
"#{url}?Expires=#{expires}&Signature=#{signature}&Key-Pair-
Id=#{key_pair_id}"
但仍然在生成之后,我收到以下错误
<Error>
<Code>InvalidKey</Code>
<Message>Unknown Key</Message>
</Error>
我做错了什么?我甚至添加了Trusted Signers并为此做了自我。