同じ懸念に遭遇した他の人を助けることを期待して、この質問に答えようとします. また、誰かが私に欠けているもの (もしあれば) を指摘したり、途中で改善したりすることを期待しています.
1 に答える
3
最初に、 https://portal.aws.amazon.com/gp/aws/securityCredentials ( )でキーペアを作成する必要がありますKey Pairs tab。key pair idこれにより、 aと 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 に答える