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