我的主要目的是使用Ruby中的AWS Cloudfront签署URL
我在https://portal.aws.amazon.com/gp/aws/securityCredentials(Key Pairs选项卡)创建了一个密钥对 . 其中提供了密钥对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并为此做了自我 .