Python Boto S3 для работы с пользовательскими доменами в Amazon S3

Как использовать библиотеку Python Boto с S3, где созданный ею URL-адрес будет моим поддоменом CNAME для сервера Amazon S3.

По умолчанию он использует формат по умолчанию BUCKETNAME.s3.amazonaws.com, но S3 поддерживает псевдонимы пользовательского домена с помощью CNAME (так что вы можете иметь custom.domain.com -> CNAME -> custom.domain.com. s3.amazonaws.com, где custom.domain.com - это сегмент. Документация AWS

Я вижу, что в библиотеке boto есть boto.s3.connection.SubdomainCallingFormat и класс boto.s3.connection.VHostCallingFormat ...

Кто-нибудь знает, как я могу настроить boto.s3, где сгенерированные URL-адреса относятся к моему собственному домену, а не по умолчанию?


person The Unknown    schedule 02.03.2010    source источник


Ответы (1)


  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()
person NFicano    schedule 19.10.2010