een SQS wachtrij op AWS maken met Terraform

In dit artikel zullen we een SQS wachtrij maken met Terraform in“region = eu-west-3“. We zullen ook een beleid toevoegen dat iedereen zal toestaan berichten naar de wachtrij te sturen. Voor we verder gaan met het artikel, nemen we aan dat je al een basiskennis hebt van SQS en ook van Terraform.

Klik hier als je, nadat je een SQS wachtrij hebt gemaakt, wilt leren hoe je een abonnement tussen SQS en SNS kunt maken, want dat valt buiten het bestek van dit artikel.

In dit artikel zullen we een standaard wachtrij maken. Klikhier als je meer wilt weten over argumenten en eigenschappen die beschikbaar zijn in Terraform voor SQS. Je kunt die eigenschappen gebruiken om de SQS wachtrij aan te passen.

Vereisten

  1. Basiskennis van Terraform.
  2. Terraform geĆÆnstalleerd op je systeem.
  3. AWS Account(aanmaken als je er geen hebt).
  4. ‘access_key’ & ‘secret_key’ van een AWS IAM Gebruiker met de vereiste permissies om SQS maak en verwijder operaties uit te voeren. (Klikhier om te leren hoe je een IAM gebruiker met ‘access_key’ & ‘secret_key’ op AWS kunt aanmaken, )

Wat we zullen doen

  1. Schrijf Terraform configuratiebestanden voor SQS Queue.
  2. Maak een SQS Queue met behulp van de Terraform configuratiebestanden.
  3. Verwijder de aangemaakte SQS Queue met behulp van Terraform.

Terraform configuratiebestanden voor SQS Queue schrijven

Laten we een bestand“main.tf” maken dat de hieronder genoemde resource definitie zal bevatten. Dit zal een SQS aanmaken in“region = eu-west-3“, maar als je een wachtrij in een andere regio wilt aanmaken dan kun je de waarde veranderen.

Je vindt de code op mijn Github repo op de volgende link.

Github Link: https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sqs-queue/main.tf
File: main.tf
provider "aws" {
    access_key = "${var.access_key}"
    secret_key = "${var.secret_key}"
    region = "eu-west-3"
}

resource "aws_sqs_queue" "my_first_sqs" {
  name = var.sqs_name
}

resource "aws_sqs_queue_policy" "my_sqs_policy" {
  queue_url = aws_sqs_queue.my_first_sqs.id

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Id": "sqspolicy",
  "Statement": [
    {
      "Sid": "First",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "sqs:SendMessage",
      "Resource": "${aws_sqs_queue.my_first_sqs.arn}"
    }
  ]
}
POLICY
}

Hier,

  • naam: Waarde wordt gedefinieerd in variables.tf.
  • queue_url: Id wordt opgehaald uit my_first_sqs queue

Haal je AWS IAM gebruikerstoegang en geheime sleutel en voeg ze toe aan het bestand “terraform.tfvars”. Deze IAM gebruiker moet voldoende rechten hebben op SQS.

Github Link: https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sqs-queue/terraform.tfvars
File: terraform.tfvars
access_key = "<your-aws-access-here>"
secret_key = "<your-aws-secret-here>"

Maak nu een bestand“variables.tf” om variabelen te definiĆ«ren, zodat we niets hoeven te hardcoden in ons“main.tf” bestand. Als je een andere naam voor de wachtrij wilt gebruiken, kun je de variabele“sqs_name” veranderen.

Github Link: https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sqs-queue/variables.tf
File: variables.tf
variable "access_key" {
        description = "Access key of AWS IAM User with the required permissions for SQS Queue creation and deletion"
}
variable "secret_key" {
        description = "Secret key of AWS IAM user with the required permissions for SQS Queue creation and deletion"
}


variable "sqs_name" {
        description = "Name of the sqs queue to be created. You can assign any unique name for the Queue"
        default = "my-first-sqs"
}

Hier,

  • sqs_name: We hebben de standaardwaarde opgegeven als my-first-sqs. Je kunt dit veranderen en een andere naam toekennen aan de te maken wachtrij.

Maak een SQS wachtrij met de Terraform configuratiebestanden.

Als je eenmaalmain.tf, terraform.tfvars, envariables.tf hebt, ben je klaar om een SQS wachtrij te maken met Terraform.

Het volgende is het eerste commando om een werkdirectory met Terraform configuratiebestanden te initialiseren.

terraform init

terravorm init

Het volgende commando is als volgt om een uitvoeringsplan te maken. Hier kun je te weten komen welke veranderingen er allemaal zullen plaatsvinden.

terraform plan

terravormingsplan

Nu ben je klaar om de veranderingen toe te passen die nodig zijn om de gewenste toestand van de configuratie te bereiken met het volgende commando. Dit zal een SQS wachtrij aanmaken in je AWS account onder de opgegeven regio, samen met het beleid dat eraan verbonden is.

terraform apply

terravorm toepassen

Laten we naar de AWS SQS console gaan om de zojuist gemaakte SQS te controleren.

terravorm toepassen

Verwijder de gemaakte SQS Queue met behulp van Terraform.

Als je de gemaakte SQS wachtrij niet meer nodig hebt en hem wilt verwijderen, is het niet nodig naar de AWS console te gaan en hem van daaruit te verwijderen. In plaats daarvan kun je hem heel gemakkelijk verwijderen met het volgende commando. Het volgende commando verwijdert de SQS wachtrij nadat je de verwijdering bevestigd hebt. Als de wachtrij eenmaal verwijderd is, kan hij niet meer hersteld worden, dus wees heel voorzichtig bij het uitvoeren van de verwijderingsoperatie.

terraform destroy

terravormen vernietigen

Conclusie

In dit artikel maakten we een SQS wachtrij met het beleid eraan gekoppeld. We bewaarden onze variabelen in een apart bestand“variables.tf” zodat we niets hoeven te hardcoden in onze main.tf. We zagen hoe gemakkelijk de resource met een enkel commando in Terraform verwijderd kan worden.