Поиск по сайту:

Как создать очередь SQS на AWS с помощью Terraform


На этой странице

  1. Предварительные условия
  2. Что мы будем делать
  3. Запись файлов конфигурации Terraform для SQS Queue
  4. Создайте очередь SQS, используя файлы конфигурации Terraform.
  5. Удалите созданную очередь SQS с помощью Terraform.
  6. Заключение

В этой статье мы создадим очередь SQS с помощью Terraform в \region=eu-west-3\. Мы также добавим политику, которая позволит всем отправлять сообщения в очередь. Прежде чем мы приступим к статье, предполагается, что вы уже имеете общее представление о SQS и Terraform.

После создания очереди SQS нажмите здесь, если хотите научиться создавать подписку между SQS и SNS, так как это не входит в задачу этой статьи.

В этой статье мы создадим стандартную очередь. Нажмите здесь, если хотите узнать больше об аргументах и свойствах, доступных в Terraform для SQS. Эти свойства можно использовать для настройки очереди SQS.

Предпосылки

  1. Основное понимание Terraform.
  2. Terraform установлен в вашей системе.
  3. Аккаунт AWS (создайте, если у вас его нет).
  4. access_key и secret_key пользователя AWS IAM с необходимыми разрешениями для выполнения операций создания и удаления SQS. (Нажмите здесь, чтобы узнать, как создать пользователя IAM с access_key и secret_key в AWS, )

Что мы будем делать

  1. Запишите файлы конфигурации Terraform для SQS Queue.
  2. Создайте очередь SQS, используя файлы конфигурации Terraform.
  3. Удалите созданную очередь SQS с помощью Terraform.

Запись файлов конфигурации Terraform для SQS Queue

Давайте создадим файл main.tf, который будет содержать определение ресурса, указанное ниже. Это создаст SQS в \region=eu-west-3\, но если вы хотите создать очередь в другом регионе, вы можете изменить ее значение.

Вы найдете код в моем репозитории Github по следующей ссылке.

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
}

Здесь,

  • имя: значение определяется в variables.tf.
  • queue_url: идентификатор получен из очереди my_first_sqs

Получите доступ пользователя AWS IAM и секретный ключ и добавьте их в файл \terraform.tfvars\. Этот пользователь IAM должен иметь достаточные разрешения на 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>"

Теперь создайте файл \variables.tf\, чтобы определить переменные, чтобы нам не нужно было жестко кодировать что-либо в нашем файле \main.tf\. Если вы хотите использовать другое имя для очереди, вы можете изменить переменную \sqs_name\.

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"
}

Здесь,

  • sqs_name: мы указали значение по умолчанию my-first-sqs. Вы можете изменить это и присвоить другое имя создаваемой очереди.

Создайте очередь SQS, используя файлы конфигурации Terraform.

Когда у вас есть main.tf, terraform.tfvars и Variables.tf, вы готовы создать очередь SQS с помощью Terraform.

Ниже приведена первая команда для инициализации рабочего каталога, содержащего файлы конфигурации Terraform.

terraform init

Следующая команда предназначена для создания плана выполнения. Здесь вы можете узнать, какие все изменения произойдут.

terraform plan

Теперь вы готовы применить изменения, необходимые для достижения желаемого состояния конфигурации, с помощью следующей команды. Это создаст очередь SQS в вашем аккаунте AWS в указанном регионе вместе с прикрепленной к ней политикой.

terraform apply

Давайте перейдем к консоли AWS SQS, чтобы проверить только что созданный SQS.

Удалите созданную очередь SQS с помощью Terraform.

Когда вам больше не нужна созданная вами очередь SQS и что ее удалить, нет необходимости заходить в консоль AWS и удалять ее оттуда. Вместо этого вы можете очень легко удалить его с помощью следующей команды. Следующая команда удалит очередь SQS после того, как вы подтвердите удаление. После удаления очереди ее нельзя восстановить, поэтому будьте очень осторожны при выполнении операции удаления.

terraform destroy

Заключение

В этой статье мы создали очередь SQS с прикрепленной к ней политикой. Мы сохранили наши переменные в отдельном файле \variables.tf\, так что нам не нужно ничего жестко кодировать в нашем main.tf. Мы увидели, как легко можно удалить ресурс с помощью одной команды в Terraform.