3

cloudfront の署名付き URL を作成する方法を知りたいです。現在動作しているソリューションはセキュリティで保護されていないため、システムをセキュリティで保護された URL に切り替えたいと考えています。

Boto 2.5.2 と Django 1.4 を使ってみました

boto.cloudfront.distribution.create_signed_url メソッドの使用方法に関する実用的な例はありますか? または他の解決策はありますか?

BOTO 2.5.2 API を使用して次のコードを試しました

def get_signed_url():
    import boto, time, pprint
    from boto import cloudfront
    from boto.cloudfront import distribution
    AWS_ACCESS_KEY_ID = 'YOUR_AWS_ACCESS_KEY_ID'
    AWS_SECRET_ACCESS_KEY = 'YOUR_AWS_SECRET_ACCESS_KEY'
    KEYPAIR_ID = 'YOUR_KEYPAIR_ID'
    KEYPAIR_FILE = 'YOUR_FULL_PATH_TO_FILE.pem'
    CF_DISTRIBUTION_ID = 'E1V7I3IOVHUU02'
    my_connection = boto.cloudfront.CloudFrontConnection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
    distros = my_connection.get_all_streaming_distributions()
    oai = my_connection.create_origin_access_identity('my_oai', 'An OAI for testing')
    distribution_config = my_connection.get_streaming_distribution_config(CF_DISTRIBUTION_ID)
    distribution_info = my_connection.get_streaming_distribution_info(CF_DISTRIBUTION_ID)
    my_distro = boto.cloudfront.distribution.Distribution(connection=my_connection, config=distribution_config, domain_name=distribution_info.domain_name, id=CF_DISTRIBUTION_ID, last_modified_time=None, status='Active')

    s3 = boto.connect_s3()
    BUCKET_NAME = "YOUR_S3_BUCKET_NAME"
    bucket = s3.get_bucket(BUCKET_NAME)
    object_name = "FULL_URL_TO_MP4_ECLUDING_S3_URL_DOMAIN_NAME EG( my/path/video.mp4)"
    key = bucket.get_key(object_name)
    key.add_user_grant("READ", oai.s3_user_id)

    SECS = 8000
    OBJECT_URL = 'FULL_S3_URL_TO_FILE.mp4'
    my_signed_url = my_distro.create_signed_url(OBJECT_URL, KEYPAIR_ID, expire_time=time.time() + SECS, valid_after_time=None, ip_address=None, policy_url=None, private_key_file=KEYPAIR_FILE, private_key_string=KEYPAIR_ID)

メソッド create_signed_url まではすべて問題ないようです。エラーを返します。

Exception Value: Only specify the private_key_file or the private_key_string not both
4

1 に答える 1

3

省略private_key_string

my_signed_url = my_distro.create_signed_url(OBJECT_URL, KEYPAIR_ID,
        expire_time=time.time() + SECS, private_key_file=KEYPAIR_FILE)

このパラメータは、秘密鍵ファイルの実際の内容を文字列として渡すために使用されます。ソースのコメントは、private_key_fileまたはの1つだけをprivate_key_string渡す必要があることを説明しています。

Noneがデフォルトであるため、に設定されているすべてのkwargを省略することもできNoneます。

于 2012-07-03T18:28:19.337 に答える