Create AWS infrastructure resources for Single Page Application.
-
create a
infra/main.tf
in your project root directory. Replace theaws.profile
andspa.site_url
. Do not change theaws.region
, ACM certificate is required to be inus-east-1
.# main.tf provider "aws" { region = "us-east-1" profile = "exampleAdmin" } module "spa" { source = "github.com/louislarry/terraform-aws-spa" site_url = "[friends]?.example.com" top_level_domain = "example.com" force_destroy = true }
-
Init and run terraform apply from the
infra
directorycd infra terraform init terraform apply
-
Bob's your uncle.
If site_url is example_com
:
- Setup s3 originbucket
example-com-origin
- Setup s3 cloudformation log bucket
example-com-cloudfront-log
- Add apex and www records to DNS
- Setup cloudfront with alias
example.com
andwww.example.com
- Configure cloudfront to use lambda@edges
- Create ACM certificate
example.com
and*.example.com
- Setup all corresponding IAM users, groups, policies, and roles
- Support for
stellar.toml
(enable CORS) - Redirect errors (4xx and 5xx) to
/index.html
-
I got following error
Error: Error applying plan: 1 error(s) occurred: * module.spa.aws_cloudfront_distribution.origin: 1 error(s) occurred: * aws_cloudfront_distribution.origin: error creating CloudFront Distribution: InvalidViewerCertificate: The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain. status code: 400, request id: 68fae058-72bc-11e8-a266-5d955149d452
Answer:
It's a bug. Please re-run
terraform apply
and you should be be fine the second time.
MIT