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