Infrastructure as code (#3)

* Moves website to website/

* Adds terraform gitignores

* Terraform with AWS provider

* Initialises Terraform

* Locals and variables for provider

* Fetches SSL certificate from ACM

* S3 static website bucket

* CloudFront distribution

* Route53 records

* Deployment workflow uses secret S3 bucket suffix

* Adds README

---------

Co-authored-by: Joe Carstairs <65492573+Sycamost@users.noreply.github.com>
This commit is contained in:
Joe Carstairs
2024-05-05 21:00:40 +01:00
committed by GitHub
parent 579e12cfeb
commit 86450b3dd8
40 changed files with 293 additions and 3 deletions

View File

@@ -0,0 +1,50 @@
---
import type { CollectionEntry } from 'astro:content';
import BaseHead from '../components/BaseHead.astro';
import FormattedDate from '../components/FormattedDate.astro';
type Props = CollectionEntry<'blog'>['data'];
const { title, description, pubDate, updatedDate } = Astro.props;
const canonicalUrl = new URL(Astro.url.pathname, Astro.site);
const pubDateStr = `${pubDate.year}-${pubDate.month}-${pubDate.day}`;
const updatedDateStr = updatedDate ?
`${updatedDate.year}-${updatedDate.month}-${updatedDate.day}`
: pubDateStr;
---
<html lang="en">
<head>
<BaseHead title={`${title} | joeacs blog`} description={description} />
<link rel="stylesheet" href="/css/blog.css">
</head>
<body>
<article class="h-entry">
<aside>
<span>
This is a blog post by
<a class="p-author h-card h-card--minimal" href="/">Joe Carstairs</a>.
</span>
{ updatedDate
? (
<span>Updated: <FormattedDate date={updatedDateStr} className="dt-updated"/>.</span>
<span>Originally published: <FormattedDate date={pubDateStr} className="dt-published"/>.</span>
) : <span>Published: <FormattedDate date={pubDateStr} className="dt-published"/>.</span>
}
<span>Go back to his <a href="/blog">blog</a> if you like.</span>
<span><a class="u-url uid" href={canonicalUrl}>Permalink</a></span>
</aside>
<h1 class="h-name">{title}</h1>
<p class="p-summary" set:html={description} />
<div class="e-content">
<slot />
</div>
</article>
</body>
</html>

View File

@@ -0,0 +1,17 @@
---
import BaseHead from "../components/BaseHead.astro";
const { title, description } = Astro.props;
---
<!DOCTYPE html>
<html lang="en-GB">
<head>
<BaseHead title={title} description={description} />
</head>
<body>
<slot />
</body>
</html>