main.tf 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. ######################################
  2. # The fair queueing module example
  3. module "sqs_fair_queue" {
  4. source = "./module_sqs_fair_queueing"
  5. source_sqs_arn = aws_sqs_queue.queue.arn
  6. sqs_prefix = "mbox-fair-queueing-test-fq"
  7. num_queues = 4
  8. hash_jsonpath = "$" # This will evenly distribute all messages
  9. }
  10. ######################################
  11. # Example Resources for testing
  12. resource "aws_s3_bucket" "bucket" {
  13. bucket = "mbox-fair-queueing-test"
  14. force_destroy = true
  15. tags = {
  16. Name = "mbox-fair-queueing-test"
  17. Environment = "Dev"
  18. Purpose = "POC bucket for S3 fair queueing"
  19. }
  20. }
  21. resource "aws_s3_bucket_acl" "bucket" {
  22. bucket = aws_s3_bucket.bucket.id
  23. acl = "private"
  24. }
  25. resource "aws_s3_bucket_server_side_encryption_configuration" "example" {
  26. bucket = aws_s3_bucket.bucket.bucket
  27. rule {
  28. apply_server_side_encryption_by_default {
  29. sse_algorithm = "AES256"
  30. }
  31. }
  32. }
  33. # SNS and SQS configuration for the root bucket
  34. #
  35. # NOTE! Only this first sns/sqs needs to be set up.
  36. # The module will set up the sqs queues for FIFO.
  37. #
  38. # Remember that the consumer service needs access to the FIFO queues,
  39. # not these.
  40. resource "aws_sqs_queue" "queue" {
  41. name = "mbox-bucket-notification"
  42. sqs_managed_sse_enabled = true
  43. policy = <<POLICY
  44. {
  45. "Version": "2012-10-17",
  46. "Statement": [
  47. {
  48. "Effect": "Allow",
  49. "Principal": "*",
  50. "Action": "sqs:SendMessage",
  51. "Resource": "arn:aws:sqs:*:*:mbox-bucket-notification",
  52. "Condition": {
  53. "ArnEquals": { "aws:SourceArn": "${aws_s3_bucket.bucket.arn}" }
  54. }
  55. }
  56. ]
  57. }
  58. POLICY
  59. depends_on = [aws_s3_bucket.bucket]
  60. }
  61. resource "aws_s3_bucket_notification" "bucket_notification" {
  62. bucket = aws_s3_bucket.bucket.id
  63. queue {
  64. queue_arn = aws_sqs_queue.queue.arn
  65. events = ["s3:ObjectCreated:*"]
  66. filter_prefix = "incoming/"
  67. }
  68. depends_on = [aws_sqs_queue.queue, aws_s3_bucket.bucket]
  69. }