def startElement(self, name, attrs, connection): if name == 'TrustedSigners': self.trusted_signers = TrustedSigners() return self.trusted_signers elif name == 'S3Origin': self.origin = S3Origin() return self.origin elif name == 'CustomOrigin': self.origin = CustomOrigin() return self.origin return None
def to_cdn(c, slug): "Create a new Distribution object on CloudFront" from boto.cloudfront import CloudFrontConnection from boto.cloudfront.origin import CustomOrigin c = CloudFrontConnection(env.aws_access_key_id, env.aws_secret_access_key) d = c.create_distribution(origin=CustomOrigin( slug + '.cdn.readthedocs.org', origin_protocol_policy='http-only'), enabled=True, comment='Slug: ' + slug, cnames=[slug + '.readthedocs.org']) print "Created: " + d.domain_name + " for " + slug list_cdn()
def test_create_distribution(self): body = b""" <Distribution xmlns="http://cloudfront.amazonaws.com/doc/2010-11-01/"> <Id>EEEEEEEEEEEEEE</Id> <Status>InProgress</Status> <LastModifiedTime>2014-02-04T10:34:07.873Z</LastModifiedTime> <InProgressInvalidationBatches>0</InProgressInvalidationBatches> <DomainName>d2000000000000.cloudfront.net</DomainName> <DistributionConfig> <CustomOrigin> <DNSName>example.com</DNSName> <HTTPPort>80</HTTPPort> <HTTPSPort>443</HTTPSPort> <OriginProtocolPolicy>match-viewer</OriginProtocolPolicy> </CustomOrigin> <CallerReference>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</CallerReference> <Comment>example.com distribution</Comment> <Enabled>false</Enabled> </DistributionConfig> </Distribution> """ self.set_http_response(status_code=201, body=body) origin = CustomOrigin("example.com", origin_protocol_policy="match_viewer") response = self.service_connection.create_distribution( origin, enabled=False, comment="example.com distribution") self.assertTrue(isinstance(response, Distribution)) self.assertTrue(isinstance(response.config, DistributionConfig)) self.assertTrue(isinstance(response.config.origin, CustomOrigin)) self.assertEqual(response.config.origin.dns_name, "example.com") self.assertEqual(response.config.origin.http_port, 80) self.assertEqual(response.config.origin.https_port, 443) self.assertEqual(response.config.origin.origin_protocol_policy, "match-viewer") self.assertEqual(response.config.cnames, []) self.assertTrue(not response.config.enabled) self.assertEqual(response.id, "EEEEEEEEEEEEEE") self.assertEqual(response.status, "InProgress") self.assertEqual(response.domain_name, "d2000000000000.cloudfront.net") self.assertEqual(response.in_progress_invalidation_batches, 0)
def create_cloudfront_distribution(aws_access_key, aws_secret_key, bucket_endpoint, hostname): connection = CloudFrontConnection(aws_access_key, aws_secret_key) origin = CustomOrigin(dns_name=bucket_endpoint, origin_protocol_policy="http-only") distribution = connection.create_distribution(origin=origin, enabled=True, cnames=[hostname]) print("A CloudFront distribution has been created.") print("You need to do two things:") print( "1. Go to the DNS provider for {hostname} and set up a CNAME to map it to {distribution_domain}" .format(hostname=hostname, distribution_domain=distribution.domain_name)) print( "2. Go to the AWS control panel, and associate the appropriate SSL cert with distribution {id}" .format(id=distribution.id)) print( "(The latter step is required because boto currently doesn't support setting certificates.)" )