-
-
Save Laxman-SM/3ff8bd6bda544557ea5e70e5e73848e3 to your computer and use it in GitHub Desktop.
ServerLess Article
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
aws cloudfront create-invalidation --cli-input-json '{"DistributionId":"'"$AWS_CLOUDFRONT_ID"'","InvalidationBatch":{"Paths":{"Quantity":2,"Items":["/index.html","/*"]},"CallerReference": "'$(date "+%s")'"}}' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"AWSTemplateFormatVersion": "2010-09-09", | |
"Description": "Cloud Formation Template for S3 based static site", | |
"Mappings": { | |
"RegionMap": { | |
"us-east-1": { | |
"S3hostedzoneID": "Z3AQBSTGFYJSTF", | |
"websiteendpoint": "s3-website-us-east-1.amazonaws.com" | |
}, | |
"us-west-1": { | |
"S3hostedzoneID": "Z2F56UZL2M1ACD", | |
"websiteendpoint": "s3-website-us-west-1.amazonaws.com" | |
}, | |
"us-west-2": { | |
"S3hostedzoneID": "Z3BJ6K6RIION7M", | |
"websiteendpoint": "s3-website-us-west-2.amazonaws.com" | |
}, | |
"eu-west-1": { | |
"S3hostedzoneID": "Z1BKCTXD74EZPE", | |
"websiteendpoint": "s3-website-eu-west-1.amazonaws.com" | |
}, | |
"ap-southeast-1": { | |
"S3hostedzoneID": "Z3O0J2DXBE1FTB", | |
"websiteendpoint": "s3-website-ap-southeast-1.amazonaws.com" | |
}, | |
"ap-southeast-2": { | |
"S3hostedzoneID": "Z1WCIGYICN2BYD", | |
"websiteendpoint": "s3-website-ap-southeast-2.amazonaws.com" | |
}, | |
"ap-northeast-1": { | |
"S3hostedzoneID": "Z2M4EHUR26P7ZW", | |
"websiteendpoint": "s3-website-ap-northeast-1.amazonaws.com" | |
}, | |
"sa-east-1": { | |
"S3hostedzoneID": "Z31GFT0UA1I2HV", | |
"websiteendpoint": "s3-website-sa-east-1.amazonaws.com" | |
} | |
} | |
}, | |
"Resources": { | |
"RootBucket": { | |
"Type": "AWS::S3::Bucket", | |
"Properties": { | |
"BucketName": "${domain}", | |
"AccessControl": "PublicRead", | |
"WebsiteConfiguration": { | |
"IndexDocument": "index.html", | |
"ErrorDocument": "404.html" | |
} | |
} | |
}, | |
"WWWBucket": { | |
"Type": "AWS::S3::Bucket", | |
"Properties": { | |
"BucketName": { | |
"Fn::Join": [ | |
"", | |
[ | |
"www.", | |
"${domain}" | |
] | |
] | |
}, | |
"AccessControl": "BucketOwnerFullControl", | |
"WebsiteConfiguration": { | |
"RedirectAllRequestsTo": { | |
"HostName": { | |
"Ref": "RootBucket" | |
} | |
} | |
} | |
} | |
}, | |
"myDNS": { | |
"Type": "AWS::Route53::RecordSetGroup", | |
"Properties": { | |
"HostedZoneName": "${root_domain}.", | |
"Comment": "Zone apex alias.", | |
"RecordSets": [ | |
{ | |
"Name": "${domain}.", | |
"Type": "A", | |
"AliasTarget": { | |
"HostedZoneId": { | |
"Fn::FindInMap": [ | |
"RegionMap", | |
"${region}", | |
"S3hostedzoneID" | |
] | |
}, | |
"DNSName": { | |
"Fn::FindInMap": [ | |
"RegionMap", | |
"${region}", | |
"websiteendpoint" | |
] | |
} | |
} | |
} | |
] | |
} | |
}, | |
"myDistribution": { | |
"Type": "AWS::CloudFront::Distribution", | |
"Properties": { | |
"DistributionConfig": { | |
"Origins": [ | |
{ | |
"DomainName": { | |
"Fn::GetAtt": [ | |
"WWWBucket", | |
"DomainName" | |
] | |
}, | |
"Id": "S3.${domain}.Distribution", | |
"S3OriginConfig": {} | |
} | |
], | |
"DefaultCacheBehavior": { | |
"AllowedMethods": [ | |
"DELETE", | |
"GET", | |
"HEAD", | |
"OPTIONS", | |
"PATCH", | |
"POST", | |
"PUT" | |
], | |
"TargetOriginId": "S3.${domain}.Distribution", | |
"ForwardedValues": { | |
"QueryString": "false", | |
"Cookies": { | |
"Forward": "none" | |
} | |
}, | |
"ViewerProtocolPolicy": "allow-all" | |
}, | |
"Enabled": "true", | |
"DefaultRootObject": "index.html", | |
"Aliases": [ | |
"${domain}" | |
], | |
"ViewerCertificate": { | |
"CloudFrontDefaultCertificate": "true" | |
} | |
} | |
} | |
} | |
}, | |
"Outputs": { | |
"WebsiteURL": { | |
"Value": { | |
"Fn::GetAtt": [ | |
"RootBucket", | |
"WebsiteURL" | |
] | |
}, | |
"Description": "URL for website hosted on S3" | |
}, | |
"RootBucketName": { | |
"Description": "ARN of the Root S3 Bucket", | |
"Value": { | |
"Ref": "RootBucket" | |
} | |
}, | |
"RootBucketDomain": { | |
"Description": "Domain of the Root S3 Bucket website", | |
"Value": { | |
"Fn::GetAtt": [ | |
"RootBucket", | |
"DomainName" | |
] | |
} | |
}, | |
"WWWBucketDomain": { | |
"Description": "Domain of the WWW S3 Bucket website", | |
"Value": { | |
"Fn::GetAtt": [ | |
"WWWBucket", | |
"DomainName" | |
] | |
} | |
}, | |
"WWWBucketName": { | |
"Description": "ARN of the WWW S3 Bucket", | |
"Value": { | |
"Ref": "WWWBucket" | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment