Skip to content

Commit 9e89e66

Browse files
committed
[action] add cloudfront invalidation
1 parent b9492db commit 9e89e66

2 files changed

Lines changed: 95 additions & 0 deletions

File tree

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: CloudFront Invalidation
2+
description: Creates CloudFront invalidation to clear cache for updated content
3+
4+
inputs:
5+
aws_access_key:
6+
description: AWS access key ID
7+
required: true
8+
aws_secret_key:
9+
description: AWS secret access key
10+
required: true
11+
aws_region:
12+
description: AWS region (e.g. us-east-1)
13+
required: true
14+
distribution_id:
15+
description: CloudFront distribution ID
16+
required: true
17+
paths:
18+
description: Paths to invalidate (space-separated, e.g. "/* /index.html")
19+
required: false
20+
default: "/*"
21+
caller_reference:
22+
description: Unique reference for this invalidation (auto-generated if not provided)
23+
required: false
24+
default: ""
25+
26+
runs:
27+
using: composite
28+
steps:
29+
- name: Configure AWS credentials
30+
uses: aws-actions/configure-aws-credentials@v4
31+
with:
32+
aws-access-key-id: ${{ inputs.aws_access_key }}
33+
aws-secret-access-key: ${{ inputs.aws_secret_key }}
34+
aws-region: ${{ inputs.aws_region }}
35+
36+
- name: Create CloudFront invalidation
37+
shell: bash
38+
run: |
39+
if [ -z "${{ inputs.caller_reference }}" ]; then
40+
CALLER_REF="github-actions-$(date +%s)-${{ github.run_id }}"
41+
else
42+
CALLER_REF="${{ inputs.caller_reference }}"
43+
fi
44+
45+
aws cloudfront create-invalidation \
46+
--distribution-id ${{ inputs.distribution_id }} \
47+
--paths ${{ inputs.paths }} \
48+
--caller-reference "${CALLER_REF}" \
49+
--no-cli-pager
50+
51+
echo "✅ CloudFront invalidation created successfully!"
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# 🧬 CloudFront Invalidation · GitHub Composite Action
2+
3+
This composite GitHub Action creates CloudFront invalidations to clear cache for updated content.
4+
5+
## ✅ Features
6+
- Uses AWS CLI to create CloudFront invalidations
7+
- Supports custom paths or wildcard invalidation
8+
- Auto-generates unique caller reference
9+
- Simple and fast cache clearing for static sites
10+
11+
## 🔧 Usage Example
12+
```yaml
13+
name: Deploy Static Site
14+
15+
on:
16+
push:
17+
branches: [main]
18+
19+
jobs:
20+
deploy:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- name: Deploy to S3
24+
# ... your S3 sync step ...
25+
26+
- name: Invalidate CloudFront
27+
uses: "Mad-Pixels/github-workflows/.github/actions/aws-cloudfront-invalidation@main"
28+
with:
29+
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
30+
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
31+
aws_region: "us-east-1"
32+
distribution_id: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
33+
paths: "/*"
34+
```
35+
36+
## 📥 Inputs
37+
| **Name** | **Required** | **Description** |
38+
|-------------------------|--------------|---------------------------------------------------|
39+
| `aws_access_key_id` | ✅ Yes | AWS access key ID |
40+
| `aws_secret_access_key` | ✅ Yes | AWS secret access key |
41+
| `aws_region` | ✅ Yes | AWS region (e.g. us-east-1) |
42+
| `distribution_id` | ✅ Yes | CloudFront distribution ID |
43+
| `paths` | ❌ No | Paths to invalidate (default: "/*") |
44+
| `caller_reference` | ❌ No | Unique reference (auto-generated if not provided) |

0 commit comments

Comments
 (0)