Python Boto S3如何在Amazon S3中使用自定义域名

4
我如何使用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是用自己的自定义域而不是默认值吗?
1个回答

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接