This module provides a S3 bucket and multiple SQS queus which receive an event, triggered when an object gets created in the bucket.
Name |
Version |
terraform |
>= 1.0 |
aws |
>= 5.20 |
random |
>= 3.6.0 |
Name |
Description |
Type |
Default |
Required |
identifier |
Unique identifier to differentiate global resources. |
string |
n/a |
yes |
force_destroy |
A flag for wether or not being able to destroy a non empty bucket. |
bool |
true |
no |
storage_class |
Storage class of the S3 bucket. For example 'GLACIER' for a deep archive bucket. |
string |
"DEFAULT" |
no |
queues |
A list of object to define SQS queues. |
list(object) |
[] |
no |
tags |
A map of tags to add to all resources. Name is always set as tag and the other tags will be appended. |
map(string) |
{} |
no |
Name |
Description |
Type |
Default |
Required |
identifier |
Unique identifier to differentiate global resources. |
string |
n/a |
yes |
message_retention_seconds |
The number of seconds Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) to 1209600 (14 days). |
number |
345600 |
no |
visibility_timeout_seconds |
The visibility timeout for messages in the queue. An integer from 0 to 43200 (12 hours). |
number |
300 |
no |
max_receive_count |
Specifies how many times the same message can be received before moved into the deadletter queue. Value '0' does not create a deadletter for the queue and the queue will retry infinitely. |
number |
0 |
no |
Name |
Description |
id |
The ID of the S3 bucket. |
arn |
The ARN of the S3 bucket. |
uri |
The URI of the S3 bucket. |
queues |
List of objects with data of the created SQS queues. |
Name |
Description |
queue_arn |
The ARN of the SQS queue. |
queue_url |
The URL of the SQS queue. |
deadletter_arn |
The ARN of the deadletter SQS queue of the main queue. |
deadletter_url |
The URL of the deadletter SQS queue of the main queue. |
module "bucket" {
source = "github.com/custom-terraform-aws-modules/bucket"
identifier = "example-bucket-dev"
force_destroy = true
storage_class = "DEFAULT"
queues = [
{
identifier = "example-bucket-queue-one-dev"
message_retention_seconds = 345600
visibility_timeout_seconds = 300
max_receive_count = 4
},
{
identifier = "example-bucket-queue-two-dev"
message_retention_seconds = 345600
visibility_timeout_seconds = 300
max_receive_count = 0
}
]
tags = {
Project = "example-project"
Environment = "dev"
}
}
In order for a seamless CI workflow copy the pre-commit
git hook from .github/hooks
into your local .git/hooks
. The hook formats the terraform code automatically before each commit.
cp ./.github/hooks/pre-commit ./.git/hooks/pre-commit