# terraform-aws-modules/terraform-aws-s3-bucket architecture

> Architecture diagram of the GitHub repository terraform-aws-modules/terraform-aws-s3-bucket, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/terraform-aws-modules/terraform-aws-s3-bucket
- Repository: https://github.com/terraform-aws-modules/terraform-aws-s3-bucket

## Overview

This Terraform module accepts bucket configuration and declares AWS S3 resources to create or manage. Its documented capabilities span bucket settings, access controls, replication, notifications, and newer S3 resource types. The tree identifies dedicated modules for some capabilities; the README documents others in the root module. Source excerpts were unavailable, so links between internal components are limited to documented module use and provisioning.

Main entry points: [`main.tf`](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/main.tf) (Bucket module), [`modules/notification/main.tf`](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/notification/main.tf) (S3 notifications), [`modules/account-public-access/main.tf`](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/account-public-access/main.tf) (Account public access), [`modules/object/main.tf`](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/object/main.tf) (S3 objects)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Bucket Core"]
  node_root["Bucket module<br/>[main.tf]"]
  node_bucket["S3 bucket settings<br/>[main.tf]"]
  node_bucket_outputs["Bucket outputs<br/>[outputs.tf]"]
  node_bucket_inputs["Bucket inputs<br/>[variables.tf]"]
end

subgraph group_security["Access Controls"]
  node_policies["Bucket policies<br/>[main.tf]"]
  node_account_pab["Account public access<br/>[main.tf]"]
end

subgraph group_extensions["S3 Extensions"]
  node_notifications["S3 notifications<br/>[main.tf]"]
  node_objects["S3 objects<br/>[main.tf]"]
  node_table_bucket["Table bucket<br/>[main.tf]"]
  node_vectors["S3 vectors<br/>[main.tf]"]
end

subgraph group_interfaces["Module Interfaces"]
  node_wrappers["Terragrunt wrappers<br/>[main.tf]"]
end

node_operator(("Terraform user"))
node_aws(("AWS"))
node_s3[("Amazon S3")]
node_event_targets(("Lambda, SQS, SNS"))

node_operator -->|"configures"| node_root
node_operator -.->|"configures"| node_wrappers
node_root -->|"configures"| node_bucket
node_root -->|"configures"| node_policies
node_root -->|"provisions"| node_s3
node_root -->|"provisions"| node_aws
node_account_pab -->|"configures"| node_aws
node_notifications -->|"configures"| node_s3
node_notifications -->|"notifies"| node_event_targets
node_objects -->|"manages objects"| node_s3
node_table_bucket -->|"configures"| node_s3
node_vectors -->|"configures"| node_s3
node_bucket -->|"exposes"| node_bucket_outputs

click node_root "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/main.tf"
click node_bucket "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/main.tf"
click node_bucket_outputs "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/outputs.tf"
click node_bucket_inputs "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/variables.tf"
click node_policies "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/main.tf"
click node_account_pab "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/account-public-access/main.tf"
click node_notifications "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/notification/main.tf"
click node_objects "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/object/main.tf"
click node_table_bucket "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/table-bucket/main.tf"
click node_vectors "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/vectors/main.tf"
click node_wrappers "https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/wrappers/main.tf"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_root,node_bucket,node_bucket_outputs,node_bucket_inputs,node_operator toneBlue
class node_policies,node_account_pab,node_s3 toneAmber
class node_notifications,node_objects,node_table_bucket,node_vectors toneMint
class node_wrappers toneRose
class node_aws,node_event_targets toneIndigo
```

## Components

### Bucket Core

- [Bucket module](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/main.tf): `main.tf`
- [S3 bucket settings](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/main.tf): `main.tf`
- [Bucket outputs](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/outputs.tf): `outputs.tf`
- [Bucket inputs](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/variables.tf): `variables.tf`

### Access Controls

- [Bucket policies](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/main.tf): `main.tf`
- [Account public access](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/account-public-access/main.tf): `modules/account-public-access/main.tf`

### S3 Extensions

- [S3 notifications](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/notification/main.tf): `modules/notification/main.tf`
- [S3 objects](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/object/main.tf): `modules/object/main.tf`
- [Table bucket](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/table-bucket/main.tf): `modules/table-bucket/main.tf`
- [S3 vectors](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/modules/vectors/main.tf): `modules/vectors/main.tf`

### Module Interfaces

- [Terragrunt wrappers](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket/blob/master/wrappers/main.tf): `wrappers/main.tf`

### Other components

- **Terraform user**
- **AWS**
- **Amazon S3**
- **Lambda, SQS, SNS**

## Connections

- Terraform user → Bucket module: configures
- Terraform user → Terragrunt wrappers: configures
- Bucket module → S3 bucket settings: configures
- Bucket module → Bucket policies: configures
- Bucket module → Amazon S3: provisions
- Bucket module → AWS: provisions
- Account public access → AWS: configures
- S3 notifications → Amazon S3: configures
- S3 notifications → Lambda, SQS, SNS: notifies
- S3 objects → Amazon S3: manages objects
- Table bucket → Amazon S3: configures
- S3 vectors → Amazon S3: configures
- S3 bucket settings → Bucket outputs: exposes
