https://github.com/aplyca/terraform-aws-s3
Create S3 bucket optimized for web site hosting
https://github.com/aplyca/terraform-aws-s3
aws aws-s3 cloud hosting infrastructure-as-code terraform terraform-modules
Last synced: 19 days ago
JSON representation
Create S3 bucket optimized for web site hosting
- Host: GitHub
- URL: https://github.com/aplyca/terraform-aws-s3
- Owner: Aplyca
- License: mit
- Created: 2018-07-25T20:25:37.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-05-13T01:30:14.000Z (almost 3 years ago)
- Last Synced: 2025-04-10T00:10:55.602Z (19 days ago)
- Topics: aws, aws-s3, cloud, hosting, infrastructure-as-code, terraform, terraform-modules
- Language: HCL
- Size: 21.5 KB
- Stars: 5
- Watchers: 5
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Terraform AWS S3 module
=========================> Create a AWS S3 buckets optimized for static web hosting
## Create a New Public Bucket
``` yaml
module "public_static_bucket" {
source = "Aplyca/s3/aws"
version = "0.1.3"name = ""
acl = "public-read"
read_roles = ["", "] Resources with these roles can read the bucket
write_roles = [""] Resources with these roles can write
website = [{
index_document = "index.html"
error_document = "index.html"
}]logging = [
{
target_bucket = "logging-bucket-name"
target_prefix = "log/"
}
]cors_allowed_origins = ["*"]
cors_allowed_headers = ["*"]
cors_allowed_methods = ["GET"]
cors_expose_headers = ["ETag"]
cors_max_age_seconds = "0"tags {
App = "App Name Public Resources"
Environment = "Development"
}
}
```## Create non public Bucket
``` yaml
module "nonpublic_files_bucket" {
source = "Aplyca/s3/aws"
version = "0.1.3"name = ""
read_roles = [""] Resources with this role can read the bucket
description = "APP Files Bucket"
tags {
App = "APP Name Non Public Resources"
}
}
```## Add bucket replication
``` yaml
replication_role = aws_iam_role.replication.arn
replication_rules = [
{
id = "${local.name}-qa-replication"
status = "Enabled"
#prefix = "foo"
destination-bucket = var.app["arn-bucket-rep-dest"]
destination-storage_class = "STANDARD"
}
]
```## How to reference the bucket
>
> Examples using the *nonpublic_files_bucket* sample:
> - Example By Name:
> any_var_bucket_name = "${module.nonpublic_files_bucket.name}"
> - Example By ARN:
> any_var_bucket_arn = "${module.nonpublic_files_bucket.arn}"
> - Example By Domain:
> any_var_bucket_domain = "${module.nonpublic_files_bucket.domain}"## Resources
This is the list of resources that the module may create. The module can create zero or more of each of these resources depending on the count value. The count value is determined at runtime. The goal of this page is to present the types of resources that may be created.
This list contains all the resources this plus any submodules may create. When using this module, it may create less resources if you use a submodule.
This module defines 7 resources.
- aws_iam_policy.read
- aws_iam_policy.write
- aws_iam_role_policy_attachment.read
- aws_iam_role_policy_attachment.write
- aws_s3_bucket.this
- aws_s3_bucket_policy.access_identity
- aws_s3_bucket_policy.public## Optional Inputs
These variables have default values and don't have to be set to use this module. You may set these variables to override their default values. This module has no required variables.
- access_identity
- access_identity_arn
- acl
- bucket_domain_format
- cors_allowed_headers
- cors_allowed_methods
- cors_allowed_origins
- cors_expose_headers
- cors_max_age_seconds
- description
- logging
- name
- read_permissions
- read_roles
- tags
- website
- write_permissions
- write_roles
- versioning_enabledFor more reference please check in the Terraform Module Registry: https://registry.terraform.io/modules/Aplyca/s3/aws/0.1.3