A Terraform module for creating AWS S3 buckets with comprehensive configuration options.
terraform-aws-s3-bucket is a Terraform module that creates and configures AWS S3 buckets with extensive feature support. It abstracts the complexity of managing S3 resources through Terraform, providing a declarative way to enable features like versioning, encryption, replication, and log delivery policies. The module solves the problem of repetitive and error-prone bucket configuration by offering a unified, reusable interface.
DevOps engineers, cloud infrastructure teams, and developers using Terraform to manage AWS resources. It is particularly useful for teams requiring consistent, auditable S3 bucket configurations across multiple environments.
Developers choose this module because it encapsulates best practices, reduces boilerplate code, and supports nearly all S3 features available in the AWS provider. Its active maintenance and comprehensive examples lower the learning curve for complex bucket setups.
Terraform module to create AWS S3 resources 🇺🇦
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports nearly all S3 features from the Terraform AWS provider, including static website hosting, versioning, CORS, lifecycle rules, and advanced types like Directory Buckets, as listed in the README's features section.
Provides pre-configured policies for ELB, ALB/NLB, and WAF log delivery, simplifying setup with arguments like attach_elb_log_delivery_policy and reducing manual IAM policy creation.
Includes options for access logging, public access blocks, and encryption enforcement policies (e.g., attach_deny_insecure_transport_policy), helping teams implement AWS best practices with minimal effort.
Allows custom bucket policies with placeholder substitution (e.g., _S3_BUCKET_ARN_) for dynamic values, making it easier to manage policies in reusable configurations, as detailed in the usage examples.
Enables dynamic resource management via the create_bucket argument, useful for environments where buckets need to be created based on conditions, avoiding Terraform's limitation with count in modules.
With over 50 input variables, the module can be overwhelming for simple use cases and increases the risk of misconfiguration or debugging challenges, especially for teams new to S3's advanced features.
Requires Terraform >= 1.5.7 and AWS provider >= 6.39, which may force upgrades or cause compatibility issues in legacy environments, as noted in the Requirements section of the README.
Exclusively tied to AWS S3, making it unsuitable for multi-cloud strategies or S3-compatible services from other providers, limiting portability and flexibility in hybrid cloud setups.
As a third-party module, updates to AWS services or Terraform may introduce breaking changes, requiring users to monitor releases closely, and the dependency on maintainers could lag behind AWS updates.