Mi az a körkörös függőségek
Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt.
provider "aws" { region = "us-east-1" # Replace with your desired region } resource "aws_sqs_queue" "solving_circular_queue" { name = "solving-circular-queue" tags = { dependency = aws_s3_bucket.solving_circular_bucket.arn } } resource "aws_s3_bucket" "solving_circular_bucket" { bucket = "solving-circular-bucket" tags = { dependency = aws_sqs_queue.solving_circular_queue.arn } }
A fenti kódrészlettel aterraform apply
nem fog működni! Hibát mutat, mint lent
➜ infra terraform apply -auto-approve ╷ │ Error: Cycle: aws_s3_bucket.solving_circular_bucket, aws_sqs_queue.solving_circular_queue
1. lépés Telepítés függőség nélkül vagy egyirányú függőséggel
provider "aws" { region = "us-east-1" # Replace with your desired region } resource "aws_sqs_queue" "solving_circular_queue" { name = "solving-circular-queue" tags = { # optionally enable this line or the s3 bucket tags # dependency = aws_s3_bucket.solving_circular_bucket.arn } } resource "aws_s3_bucket" "solving_circular_bucket" { bucket = "solving-circular-bucket" tags = { # optionally enable this or the sqs tags # dependency = aws_sqs_queue.solving_circular_queue.arn } }
A fenti kódrészlettel a terraform apply
működni fog, mindkét erőforrást létrehozva. Attól függően, hogy mit engedélyezünk/eltávolítunk, bármelyik erőforrásnak megfelelő lesz a függősége, vagy egyiknek sem.
Íme a kimenet:
➜ infra terraform apply -auto-approve Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # aws_s3_bucket.solving_circular_bucket will be created + resource "aws_s3_bucket" "solving_circular_bucket" { + acceleration_status = (known after apply) + acl = (known after apply) + arn…