Python:如何使用自定义策略cloudfront生成签名URL

Python:如何使用自定义策略cloudfront生成签名URL,python,amazon-cloudfront,boto,Python,Amazon Cloudfront,Boto,我有一些生成签名URL的代码 expire_time = in_an_hour() conn = CloudFrontConnection(access_key_id, access_key) ##enter the id or domain name to select a distribution distribution = Distribution(connection=conn, config=None, domain_name=domain, id=dist_id, last_mo

我有一些生成签名URL的代码

expire_time = in_an_hour()
conn = CloudFrontConnection(access_key_id, access_key)

##enter the id or domain name to select a distribution
distribution = Distribution(connection=conn, config=None, domain_name=domain, id=dist_id, last_modified_time=None, status='')
signed_url = distribution.create_signed_url(url=url_tosign, keypair_id=keypair,expire_time=expire_time,private_key_file="/path/to/priv.pem")
return signed_url

我想包括一个考虑用户IP的自定义策略。我编写了一个方法来生成工作正常的json。我尝试将
policy=get\u policy(url\u-tosign,ip)
添加到
发行版。创建\u-signed\u-url
调用,但我只是收到一个错误,说这是一个意外的关键字参数。如何修改此代码以生成带有源IP限制的签名URL?

詹姆斯·迪恩的链接提供了解决方案。我们可以使用一个
ip\u address
参数

更新的代码行

signed_url = distribution.create_signed_url(url=url_tosign, keypair_id=keypair,expire_time=expire_time,private_key_file="/path/to/priv.pem", ip_address= "x.x.x.x/32") # CIDR notation optional. x.x.x.x also works as a /32

詹姆斯·迪恩的联系解决了这个问题。我们可以使用一个
ip\u address
参数

更新的代码行

signed_url = distribution.create_signed_url(url=url_tosign, keypair_id=keypair,expire_time=expire_time,private_key_file="/path/to/priv.pem", ip_address= "x.x.x.x/32") # CIDR notation optional. x.x.x.x also works as a /32

您需要首先创建一个策略,params=self。_create_signing_params(url=url,密钥对\u id=keypair\u id,expire\u time=expire\u time,valid\u after\u time=valid\u after\u time,ip\u address=ip\u address,policy\u url=policy\u url,private\u key\u file=private\u key\u file,private\u key\u string=private\u key\u string)您需要首先创建一个策略,params=self。_create_signing_params(url=url,密钥对\u id=keypair\u id,expire\u time=expire\u time,valid\u after\u time=valid\u after\u time,ip\u address=ip\u address,policy\u url=policy\u url,private\u key\u file=private\u key\u file,private\u key\u string=private\u key\u string)