packages/deploy-aws/src/aws_sdk_handler/handle_cloudfront.ts
import { CloudFront, config } from 'aws-sdk'
export async function getCFURL(name: string, handler: CloudfrontHandler) {
const cloudfronts = await handler.listDistributions()
const cloudfront = cloudfronts.find(dist => dist.Comment === name)
return cloudfront && cloudfront.DomainName
}
export class CloudfrontHandler {
private cloudfront: CloudFront
constructor() {
const { credentials, region } = config
this.cloudfront = new CloudFront({ credentials, region })
}
async listDistributions() {
const cloudfronts = await this.cloudfront.listDistributions().promise()
const distributionList = cloudfronts.DistributionList
return (distributionList && distributionList.Items) || []
}
}