2

同じ懸念に遭遇した他の人を助けることを期待して、この質問に答えようとします. また、誰かが私に欠けているもの (もしあれば) を指摘したり、途中で改善したりすることを期待しています.

4

1 に答える 1

3

最初に、 https://portal.aws.amazon.com/gp/aws/securityCredentials ( )でキーペアを作成する必要がありますKey Pairs tabkey pair idこれにより、 aと aが提供されますpem file(pemファイルをプロジェクトディレクトリに保存します)。

AWS Cloudfront ポータルで、ディストリビューションを作成します。を選択yesRestrict 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 に答える