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
评论列表
文章目录