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 GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Maintainedlast commit Jan 13, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: bitovi/github-actions-deploy-static-site-to-aws@d51f8d905f34a40b8abc6567db6ffab15a205fec # v0.2.10

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
checkoutSpecifies if this action should checkout the codenotrue
aws_access_key_idAWS access key IDyes
aws_secret_access_keyAWS secret access keyyes
aws_default_regionAWS default regionnous-east-1
aws_role_to_assumeAWS Role to assume.no
aws_resource_identifierSet to override the AWS resource identifier for the deployment. Defaults to `${org}-{repo}-{branch}`. Use with destroy to destroy specific resources.no
aws_additional_tagsA JSON object of additional tags that will be included on created resources. Example: `{"key1": "value1", "key2": "value2"}`no
tf_actionOption to run Terraform apply / destroy option. Will run plan if nothing defined.no
tf_state_file_nameChange 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_appendAppend 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_bucketAWS S3 bucket to use for Terraform state. Defaults to `${org}-${repo}-{branch}-tf-state`no
tf_state_bucket_destroyForce purge and deletion of S3 bucket defined if terraform destroy action succeded.no
aws_site_source_folderSource 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_hiddenInclude hidden files in the source folder. Defaults to `false`no
aws_site_root_objectRoot object to be served as entry-point. Defaults to `index.html`no
aws_site_error_documentError 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_enabledEnable or disables the use of CDN. Defaults to `false`.no
aws_site_cdn_aliasesExtra CNAMEs (alternate domain names), if any, for this distribution. Will default to defined domain if none passed.no
aws_site_cdn_custom_error_codesCustomize error codes, Definition done with JSON variablesno
aws_site_cdn_response_headers_policy_idComma 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_ttlMinimum TTL (in seconds) for CloudFront cache. Default is 0.no
aws_site_cdn_default_ttlDefault TTL (in seconds) for CloudFront cache. Default is 86400 (24 hours).no
aws_site_cdn_max_ttlMaximum TTL (in seconds) for CloudFront cache. Default is 31536000 (365 days).no
aws_r53_domain_nameDefine the root domain name for the application. e.g. `bitovi.com`no
aws_r53_sub_domain_nameDefine the sub-domain part of the URL. Defaults to `${GITHUB_ORG_NAME}-${GITHUB_REPO_NAME}-${GITHUB_BRANCH_NAME}`.
aws_r53_root_domain_deployDeploy application to root domain. Will create root and www records. Default is `false`.no
aws_r53_cert_arnDefine the certificate ARN to use for the application.'no
aws_r53_create_root_certGenerates and manage the root cert for the application. Default is `false`.no
aws_r53_create_sub_certGenerates and manage the sub-domain certificate for the application. Default is `false`.no
namedescription
public_urlThe URL of the generated app