bitovi/Deploy static site to AWS (S3+CDN+R53)
Deploy a website to an S3 bucket. Option to add Cloudfront, and deploy to a Route53 managed domain with certs.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Maintainedlast commit Jan 13, 2026
- License
- MIT
Pinned Snippet
uses: bitovi/github-actions-deploy-static-site-to-aws@d51f8d905f34a40b8abc6567db6ffab15a205fec # v0.2.10tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| checkout | Specifies if this action should checkout the code | no | true |
| aws_access_key_id | AWS access key ID | yes | — |
| aws_secret_access_key | AWS secret access key | yes | — |
| aws_default_region | AWS default region | no | us-east-1 |
| aws_role_to_assume | AWS Role to assume. | no | — |
| aws_resource_identifier | Set to override the AWS resource identifier for the deployment. Defaults to `${org}-{repo}-{branch}`. Use with destroy to destroy specific resources. | no | — |
| aws_additional_tags | A JSON object of additional tags that will be included on created resources. Example: `{"key1": "value1", "key2": "value2"}` | no | — |
| tf_action | Option to run Terraform apply / destroy option. Will run plan if nothing defined. | no | — |
| tf_state_file_name | Change this to be anything you want to. Carefull to be consistent here. A missing file could trigger recreation, or stepping over destruction of non-defined objects. | no | — |
| tf_state_file_name_append | Append a string to the tf-state-file. Setting this to `unique` will generate `tf-state-aws-unique`. Can co-exist with the tf_state_file_name variable. | no | — |
| tf_state_bucket | AWS S3 bucket to use for Terraform state. Defaults to `${org}-${repo}-{branch}-tf-state` | no | — |
| tf_state_bucket_destroy | Force purge and deletion of S3 bucket defined if terraform destroy action succeded. | no | — |
| aws_site_source_folder | Source folder for files to be published. Will ignore any hidden file. Defaults to root folder of the calling repo if nothing defined. | yes | — |
| aws_site_source_include_hidden | Include hidden files in the source folder. Defaults to `false` | no | — |
| aws_site_root_object | Root object to be served as entry-point. Defaults to `index.html` | no | — |
| aws_site_error_document | Error document set to S3 website config. Defaults to none. | no | — |
| aws_site_bucket_name | AWS S3 bucket name to use for the public files. Defaults to `${org}-${repo}-{branch}-sp` | no | — |
| aws_site_cdn_enabled | Enable or disables the use of CDN. Defaults to `false`. | no | — |
| aws_site_cdn_aliases | Extra CNAMEs (alternate domain names), if any, for this distribution. Will default to defined domain if none passed. | no | — |
| aws_site_cdn_custom_error_codes | Customize error codes, Definition done with JSON variables | no | — |
| aws_site_cdn_response_headers_policy_id | Comma separated list of response headers policy IDs for CloudFront. Eg. Managed-CORS-with-preflight-and-SecurityHeadersPolicy is 67f7725c-6f97-4210-82d7-5512b31e9d42. | no | — |
| aws_site_cdn_min_ttl | Minimum TTL (in seconds) for CloudFront cache. Default is 0. | no | — |
| aws_site_cdn_default_ttl | Default TTL (in seconds) for CloudFront cache. Default is 86400 (24 hours). | no | — |
| aws_site_cdn_max_ttl | Maximum TTL (in seconds) for CloudFront cache. Default is 31536000 (365 days). | no | — |
| aws_r53_domain_name | Define the root domain name for the application. e.g. `bitovi.com` | no | — |
| aws_r53_sub_domain_name | Define the sub-domain part of the URL. Defaults to `${GITHUB_ORG_NAME}-${GITHUB_REPO_NAME}-${GITHUB_BRANCH_NAME}`. | — | — |
| aws_r53_root_domain_deploy | Deploy application to root domain. Will create root and www records. Default is `false`. | no | — |
| aws_r53_cert_arn | Define the certificate ARN to use for the application.' | no | — |
| aws_r53_create_root_cert | Generates and manage the root cert for the application. Default is `false`. | no | — |
| aws_r53_create_sub_cert | Generates and manage the sub-domain certificate for the application. Default is `false`. | no | — |
Outputs
| name | description |
|---|---|
| public_url | The URL of the generated app |