我将尝试回答这个问题,希望能帮助遇到同样问题的其他人。还希望有人指出我所缺少的(如果有的话)或沿途的改进。
问问题
969 次
1 回答
3
您需要做的第一件事是在https://portal.aws.amazon.com/gp/aws/securityCredentials ( Key Pairs tab
) 创建一个密钥对。这将为您提供 akey pair id
和 a pem file
(将 pem 文件保存在项目目录中)。
在您的 AWS Cloudfront 门户中,创建一个分配。yes
为选择Restrict Bucket Access
。
点击yes
查看Grant Read Permissions on Bucket
。这将添加一个存储桶策略,允许您的 Cloudfront 分配读取 S3 存储桶上的文件。
创建分布。
在您的 S3 存储桶中,有一个不公开的文件。即没有读取权限。在这种情况下,我们将针对test.png
.
url = "https://actual_cdn_id_here.cloudfront.net/test.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}"
希望这可以帮助某人。如果需要对此解决方案进行改进/建议,请提及。
于 2013-06-14T08:15:01.017 回答