website.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:hatch 作者: hatch-sh 项目源码 文件源码
def deploy(self):
        try:
            zone_id = self._get_hosted_zone_id()
            bucket_name = self._get_bucket_name(zone_id)
            custom_domain = self.config.domain if zone_id else None

            s3 = boto3.resource('s3', self.config.region)
            bucket = s3.Bucket(bucket_name)

            ensure_website_bucket_exists(bucket=bucket, region=self.config.region)
            self._upload_artifacts(bucket)

            website_endpoint = get_website_endpoint(bucket_name)

            if custom_domain:
                ensure_route53_s3_setup(
                    zone_id=zone_id,
                    bucket_name=bucket_name,
                    website_endpoint=website_endpoint
                )
                url = 'http://{}'.format(custom_domain)

                if self.config.cdn:
                    ensure_cloudfront_s3_setup(
                        bucket_name=bucket_name,
                        domain_name=custom_domain,
                    )
            else:
                url = 'http://{}'.format(website_endpoint)

            logger.info('Website uploaded to %s', url)
        except ClientError as ex:
            error_code = get_error_code(ex)
            if error_code == 'BucketAlreadyExists':
                logger.error('Error: The name "%s" is already taken.', bucket_name)
                sys.exit(1)
            if error_code == 'InvalidBucketName':
                logger.error('Error: Invalid bucket name "%s".', bucket_name)
                logger.error('\nSee bucket naming rules here:\nhttp://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules\n')
                sys.exit(1)
            raise
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号