lib/sumomo/cdn.rb in sumomo-0.7.2 vs lib/sumomo/cdn.rb in sumomo-0.7.3

- old
+ new

@@ -1,14 +1,17 @@ module Sumomo module Stack - def make_cdn_from_dir(domain:, dir:, low_ttl: []) + def make_cdn_from_dir(domain:, dns:nil, name:nil, dir:, low_ttl: []) bucket_name = @bucket_name + name ||= make_default_resource_name("CDN") + puts "Uploading files..." - `aws s3 sync #{dir} "s3://#{bucket_name}/uploads/#{domain}" --size-only --delete` + `aws --version` + `aws s3 --region #{@region} sync #{dir} "s3://#{bucket_name}/uploads/#{domain}" --size-only --delete` puts "Done." oai = make "Custom::OriginAccessIdentity" make "AWS::S3::BucketPolicy" do @@ -27,11 +30,11 @@ } ] }) end - make "AWS::CloudFront::Distribution" do + cdn = make "AWS::CloudFront::Distribution", name: name do DistributionConfig do Origins [{ Id: "originBucket", DomainName: "#{bucket_name}.s3.amazonaws.com", OriginPath: "/uploads/#{domain}", @@ -75,8 +78,32 @@ Bucket "#{bucket_name}.s3.amazonaws.com" Prefix "logs/#{domain}/" end end end + + root_name = /(?<root_name>[^.]+\.[^.]+)$/.match(domain)[:root_name] + + if !dns + + elsif dns[:type] == :cloudflare + make "Custom::CloudflareDNSEntry", name: "#{name}CloudFlareEntry" do + Key dns[:key] + Email dns[:email] + Domain root_name + Entry domain.sub(/#{root_name}$/, "").chomp(".") + CNAME cdn.DomainName + end + elsif dns[:type] == :route53 + make "AWS::Route53::RecordSet", name: "#{name}Route53Entry" do + HostedZoneId dns[:hosted_zone] + Name domain + Type "CNAME" + ResourceRecords [ cdn.DomainName ] + end + end + + cdn + end end end