4

S3 で Python Boto ライブラリを使用するにはどうすればよいですか。生成される URL は、Amazon S3 サーバーへの CNAME 化されたサブドメインになります。

デフォルトでは、デフォルトのフォーマット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... があることがわかります。

生成 URL がデフォルトではなく自分のカスタム ドメイン用である boto.s3 をセットアップする方法を知っている人はいますか?

4

1 に答える 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()
于 2010-10-19T05:35:30.717 に答える