2010-03-02 109 views
4

如何在S3中使用Python Boto庫,其中生成的URL將成爲Amazon S3服務器的CNAME子域。Python Boto S3與Amazon S3中的自定義域一起工作

默認情況下,它使用的默認格式BUCKETNAME.s3.amazonaws.com但S3支持使用CNAME自定義域混疊(所以你可以有custom.domain.com - > CNAME - > custom.domain.com.s3 .amazonaws.com其中 「custom.domain.com」 是鬥。AWS Documentation

我看到博託圖書館boto.s3.connection.SubdomainCallingFormat和類boto.s3.connection.VHostCallingFormat ...

任何人都知道我可以如何設置boto.s3,其中生成的URL是用於我自己的自定義域而不是默認的?

回答

2
  1. 您的CNAME記錄必須已經指向您的S3存儲桶。
  2. 您的S3存儲桶還需要命名爲custom.domain.com
  3. 確認您能夠在瀏覽器中從custom.domain.com訪問您的文件。

一旦這樣做了,下面的片段我寫了將打印URL對中的一個關鍵的所有文件:

import sys 
import boto.s3 
from boto.s3.connection import VHostCallingFormat 
from boto.s3.connection import S3Connection 

def main(): 
    access_key = "<AWS_ACCESS_KEY>" 
    secret_key = "<AWS_SECRET_KEY>" 
    bucket = "custom.domain.com" 

    # assuming you have your files organized with keys 
    key_prefix = "css" 
    key_prefix = key_prefix + "/" 

    conn = S3Connection(access_key, secret_key, calling_format=VHostCallingFormat()) 
    bucket = conn.get_bucket(bucket) 

    # get all the keys with the prefix 'css/' inside said bucket 
    keys = bucket.get_all_keys(prefix=key_prefix) 

    for k in keys: 
     print k.generate_url(3600, query_auth=False, force_http=True) 

    # output: 
    # http://custom.domain.com/css/ie.css 
    # http://custom.domain.com/css/print.css 
    # http://custom.domain.com/css/screen.css 
    # http://custom.domain.com/css/style.min.css 

if __name__ == '__main__': 
    main()