웹사이트 검색

Terraform을 사용하여 AWS에서 SQS 대기열을 생성하는 방법


이 페이지에서

  1. 전제 조건
  2. 우리가 할 일\n
  3. SQS 대기열용 Terraform 구성 파일 쓰기
  4. Terraform 구성 파일을 사용하여 SQS 대기열을 만듭니다.\n
  5. Terraform을 사용하여 생성된 SQS 대기열을 삭제합니다.\n
  6. 결론

이 문서에서는 "region = eu-west-3"에서 Terraform을 사용하여 SQS 대기열을 생성합니다. 또한 모두가 대기열에 메시지를 보낼 수 있도록 허용하는 정책을 추가할 것입니다. 기사를 진행하기 전에 이미 SQS 및 Terraform에 대한 기본적인 이해가 있다고 가정합니다.

SQS 대기열을 만든 후 SQS와 SNS 간에 구독을 만드는 방법을 배우려면 여기를 클릭하세요. 이 문서에서는 다루지 않습니다.

이 문서에서는 표준 대기열을 만듭니다. SQS용 Terraform에서 사용할 수 있는 인수 및 속성에 대해 자세히 알아보려면 여기를 클릭하세요. 이러한 속성을 사용하여 SQS 대기열을 맞춤설정할 수 있습니다.

전제 조건

  1. Terraform에 대한 기본적인 이해.\n
  2. 시스템에 Terraform이 설치되어 있습니다.
  3. AWS 계정(계정이 없는 경우 생성).
  4. SQS 생성 및 삭제 작업을 수행하는 데 필요한 권한이 있는 AWS IAM 사용자의 access_key 및 secret_key. (AWS에서 access_key 및 secret_key로 IAM 사용자를 생성하는 방법을 알아보려면 여기를 클릭하세요.)\n

우리가 할 일

  1. SQS 대기열에 대한 Terraform 구성 파일을 작성합니다.\n
  2. Terraform 구성 파일을 사용하여 SQS 대기열을 만듭니다.\n
  3. Terraform을 사용하여 생성된 SQS 대기열을 삭제합니다.\n

SQS 대기열에 대한 Terraform 구성 파일 쓰기

아래에 언급된 리소스 정의를 포함할 "main.tf" 파일을 생성해 보겠습니다. 이렇게 하면 "region = eu-west-3"에 SQS가 생성되지만 다른 지역에 대기열을 생성하려는 경우 해당 값을 변경할 수 있습니다.

다음 링크의 내 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
}

여기,

  • 이름: value는 variables.tf에 정의되어 있습니다.
  • queue_url: ID는 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로 지정했습니다. 이를 변경하고 생성할 대기열에 다른 이름을 할당할 수 있습니다.\n

Terraform 구성 파일을 사용하여 SQS 대기열을 만듭니다.

main.tf, terraform.tfvars 및 variables.tf가 있으면 Terraform을 사용하여 SQS 대기열을 만들도록 설정됩니다.

다음은 Terraform 구성 파일이 포함된 작업 디렉터리를 초기화하는 첫 번째 명령어입니다.

terraform init

실행 계획을 만들기 위한 다음 명령어는 다음과 같습니다. 여기에서 모든 변경 사항이 발생하는지 알 수 있습니다.

terraform plan

이제 다음 명령을 사용하여 원하는 구성 상태에 도달하는 데 필요한 변경 사항을 적용할 준비가 되었습니다. 이렇게 하면 연결된 정책과 함께 지정된 리전의 AWS 계정에 SQS 대기열이 생성됩니다.

terraform apply

방금 생성한 SQS를 확인하기 위해 AWS SQS 콘솔로 이동합니다.

Terraform을 사용하여 생성된 SQS 대기열을 삭제합니다.

생성한 SQS 대기열과 삭제 대상이 더 이상 필요하지 않은 경우 AWS 콘솔로 이동하여 삭제할 필요가 없습니다. 대신 다음 명령을 사용하여 매우 쉽게 삭제할 수 있습니다. 다음 명령은 삭제를 확인한 후 SQS 대기열을 삭제합니다. Queue는 한 번 삭제하면 복원할 수 없으므로 삭제 작업을 수행할 때 매우 주의해야 합니다.

terraform destroy

결론

이 문서에서는 정책이 연결된 SQS 대기열을 생성했습니다. 변수를 별도의 "variables.tf" 파일에 저장하여 main.tf에 어떤 것도 하드코딩할 필요가 없습니다. Terraform에서 단일 명령을 사용하여 리소스를 얼마나 쉽게 삭제할 수 있는지 확인했습니다.