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…