2014-02-14 120 views
0

我是新來的Python和寶途的憑證,我已經成功地從我的服務器到S3理清文件上傳。 但是,一旦我上傳了一個新文件,我想要做一個失效請求。亞馬遜CloudFront的distribution_id與博託

我已經得到了代碼做到這一點:

import boto 

print 'Connecting to CloudFront' 
cf = boto.connect_cloudfront() 
cf.create_invalidation_request(aws_distribution_id, ['/testkey']) 

但我發現了一個錯誤:NameError: name 'aws_distribution_id' is not defined

我猜,我可以分配ID添加到~/.boto配置,如aws_secret_access_key等:

$ cat ~/.boto 
[Credentials] 
aws_access_key_id = ACCESS-KEY-ID-GOES-HERE 
aws_secret_access_key = ACCESS-KEY-SECRET-GOES-HERE 
aws_distribution_id = DISTRIBUTION-ID-GOES-HERE 

但實際上並不是在文檔中列出,所以我並不感到太意外失敗: http://docs.pythonboto.org/en/latest/boto_config_tut.html

我的問題是我不想將distribution_id添加到腳本中,因爲我在活動服務器和登臺服務器上都運行它,而且我對這兩種服務器都有不同的S3和CloudFront設置。

所以我需要的distribution_id每個服務器的改變,這是多麼我有設定的AWS訪問鍵。

我可以添加別的東西到boto配置還是有一個python用戶默認我可以添加到?

回答

0

我使用ConfigParser解決了這個。添加以下到我的腳本的頂部:

import ConfigParser 

# read conf 
config = ConfigParser.ConfigParser() 
config.read('~/my-app.cnf') 
distribution_id = config.get('aws_cloudfront', 'distribution_id') 

而且裏面conf文件在~/.my-app.cnf

[aws_cloudfront] 
distribution_id = DISTRIBUTION_ID 

所以我活的服務器上我只需要在cnf文件拖放到用戶的主目錄並更改distribution_id

0

既然你可以爲每個帳戶多個CloudFront的分佈,就沒有意義在.boto配置。

你可以有另一種特定的配置文件到您自己的環境和運行使用的配置文件作爲參數的無效腳本(或具有相同的文件,但具有不同的數據取決於您的ENV)。

+0

我設法解決它使用'ConfigParser'並設置'distribution_id'在那裏 - 我喜歡這個想法,因爲隨着時間的推移,我可能會有更多的設置添加到分段和生活環境。 –