Esempio n. 1
0
 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
Esempio n. 2
0
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()
Esempio n. 3
0
    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)
Esempio n. 4
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.)"
    )