2017-04-21 28 views
4

我正在嘗試使用簽名的cookies用於我的cloudfront發佈。無法使用經過簽名的cookie用於雲端

即時通訊使用cookie-signer來生成簽名的cookie。 及以下腳本從雲前一個文件讀取

import requests 
cookies = { 
'CloudFront-Key-Pair-Id': 'APKXXXXXXXXXXX', 
'CloudFront-Policy': u'eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kNXRpdXV2ZjdodDlpLmNsb3VkZnJvbnQubmV0L21lZGlhL3Byb2ZpbGVfcGljLmpwZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTQ5Mjc2ODcwMH19fV19', 
'CloudFront-Signature': u'ZVG-Pi7x~edJqERf99O9und0wYedB-SHMNKuHd4UpEDaPckYekGoAJ~q8tU0vQI4mS9odXITzAKl4v7tmfDjG1y9FmWaSxgf9h2jrssIk25Mswk3UXOV7wRNs9DiHpA3~D70qAWXGS9GVN4z3SvZ3xQv9bM1P50y2shNPlOCV4o5nAH56sYdvdJNjxSFxdoOUMuhxyrzf-Gv5fjNSzv2Dy43WY6rmpEMfh6L9Eb-2kcrS9p5rsK9MtAwpN8Frobt4bCuduQleb~DXZ~O~hoBGdO3RdyYWgMdTa~02PQl3st8eisBiH7XYy2GbOwPIN~M4m-UAs3ihL0ZWUjbkVDFCA__', 
'Secure': 'True', 
'HTTPOnly': 'True', 

} 
headers = {} 

s = requests.Session() 

res = s.get('http://XXXXXXX.cloudfront.net/media/profile_pic.jpg', 
headers=headers, cookies=cookies) 
print res 
print res.content 

輸出:

<Response [403]> 
<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>AccessDenied</Code><Message>Access Denied</Message> 
<RequestId>BBDBA8E7FEDA7759</RequestId><HostId>7Pt2/REdiugH5Te555/v004J6skQs9+ccncmXM74yHwPhQrSMJ9pavIj2QmPW6g2QsnnEYGxitc=</HostId></Error> 

添加用戶爲CloudFront的分配信任的簽署者和所產生的密鑰對-ID爲CloudFront的。

有人可以幫助我嗎? 在此先感謝

回答

1

您的錯誤實際上是S3錯誤,而不是Cloudfront(CF)錯誤。您是否創建了一個可以提供GetObject訪問權限的存儲桶政策?

{ 
    "Version":"2012-10-17", 
    "Statement":[ 
    { 
     "Sid":"AddPerm", 
     "Effect":"Allow", 
     "Principal": "*", 
     "Action":["s3:GetObject"], 
     "Resource":["arn:aws:s3:::examplebucket/*"] 
    } 
    ] 
} 

http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

如果您使用S3作爲CF原點,那麼你需要創建一個原產地訪問標識,並確保給它在你的S3鬥政策的訪問。 (見http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-6

如果你想使用S3的靜態網站託管,那麼我建議無論是在策略白名單的Cloudfront IP地址或CF添加Origin Custom Headerreferer,然後尋找你的水桶頭,從而在頁面政策。 (請參閱http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-4

作爲完整性檢查,您可能希望嘗試使用AWS-CLI生成簽名的URL。 (見http://docs.aws.amazon.com/cli/latest/reference/cloudfront/sign.html

相關問題