Cách tạo chủ đề SNS trên AWS bằng Terraform

theanh

Administrator
Nhân viên
Trong bài viết này, chúng ta sẽ tạo một chủ đề SNS với chính sách truy cập cho phép tài khoản của chúng ta thực hiện mọi hành động SNS trên chủ đề đó. Chúng ta sẽ thực hiện hoạt động này bằng Terraform. Trước khi tiếp tục với bài viết, chúng tôi cho rằng bạn đã có hiểu biết cơ bản về SNS và Terraform. Bạn cũng có thể xem bài viết của tôi tại đây nếu bạn muốn tìm hiểu cách tạo chủ đề SNS bằng Cloudformation.

Nhấp vàođâyđể xem mọi đối số và tham số có sẵn cho SNS trong Terraform. Sau đó, bạn có thể sử dụng chúng để tùy chỉnh SNS.

Điều kiện tiên quyết​

  1. Hiểu biết cơ bản về Terraform.
  2. Terraform được cài đặt trên hệ thống của bạn.
  3. Tài khoản AWS (Tạonếu bạn chưa có).
  4. 'access_key' & 'secret_key' của Người dùng AWS IAM có đủ quyền để tạo chủ đề SNS. (Click vào đâyđể tìm hiểu cách tạo người dùng IAM với 'access_key' và 'secret_key' trên AWS, )

Những gì chúng ta sẽ làm​

  1. Viết các tệp cấu hình Terraform cho Chủ đề SNS.
  2. Tạo Chủ đề SNS bằng các tệp cấu hình Terraform.
  3. Xóa Chủ đề SNS đã tạo bằng Terraform.

Viết các tệp cấu hình Terraform cho Chủ đề SNS​

Bước đầu tiên là tạo một tệp có tên "main.tf" sẽ chứa định nghĩa tài nguyên. Chúng ta sẽ tạo một chủ đề SNS trong
"region = eu-west-3". Bạn có thể thay đổi tùy theo yêu cầu của mình. Nếu muốn giới hạn các hành động, bạn có thể thay đổi câu lệnh accesspolicy. Nếu bạn không quen lắm với điều này và chỉ muốn bắt đầu, thì tốt hơn là không nên thay đổi bất cứ điều gì trong câu lệnh chính sách truy cập.

Bạn cũng có thể tìm thấy mã trên kho lưu trữ Github của tôi theo liên kết sau.
Mã:
Liên kết Github:[URL=https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sns-topic/main.tf?utm_source=diendancongnghe.com]https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sns-topic/main.tf[/URL]
Mã:
Tệp: main.tf
Mã:
nhà cung cấp "aws" { access_key = "${var.access_key}" secret_key = "${var.secret_key}" region = "[B]eu-west-3[/b]"}resource "aws_sns_topic" "my_first_sns_topic" { name = var.sns_name}tài nguyên "aws_sns_topic_policy" "my_sns_topic_policy" { arn = aws_sns_topic.my_first_sns_topic.arn chính sách = data.aws_iam_policy_document.my_custom_sns_policy_document.json}dữ liệu "aws_iam_policy_document" "my_custom_sns_policy_document" { policy_id = "__default_policy_ID" câu lệnh { hành động = [ "SNS:Đăng ký", "SNS:ĐặtThuộcTínhChủĐề", "SNS:XóaQuyền", "SNS:Nhận", "SNS:Xuất bản", "SNS:LiệtKýTheoChủĐề", "SNS:NhậnThuộcTínhChủĐề", "SNS:XóaChủĐề", "SNS:ThêmQuyền", ] điều kiện { kiểm tra = "StringEquals" biến = "AWS:ChủNguồn" giá trị = [ var.account_id, ] } effect = "Allow" principals { type = "AWS" identifiers = ["*"] } resources = [ aws_sns_topic.my_first_sns_topic.arn, ] sid = "__default_statement_ID" }}
Bây giờ, hãy tạo một tệp mới có tên "terraform.tfvars" để lưu trữ quyền truy cập Người dùng AWS IAM và khóa bí mật mà bạn phải có.
Mã:
Liên kết Github:[URL=https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sns-topic/terraform.tfvars?utm_source=diendancongnghe.com]https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sns-topic/terraform.tfvars[/URL]
Mã:
Tệp: terraform.tfvars
Mã:
access_key = "[B][/b]"
secret_key = "[B][/b]"
Chúng ta có một tệp định nghĩa biến "variables.tf" trong đó chúng ta đã định nghĩa các giá trị mặc định cho các biến được sử dụng trong "main.tf". Bạn cần tạo tệp này trong cùng thư mục nơi bạn có hai tệp trên. Bạn có thể thay đổi giá trị của các biến này. Bạn cũng cần chỉ định số tài khoản AWS của mình cho biến "account_id". Nếu muốn, bạn cũng có thể thay đổi tên chủ đề SNS sẽ tạo bằng cách thay đổi giá trị của biến "sns_name".
Mã:
Liên kết Github:[URL=https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sns-topic/variables.tf?utm_source=diendancongnghe.com]https://github.com/shivalkarrahul/DevOps/blob/master/aws/terraform/create-sns-topic/variables.tf[/URL]
Mã:
Tệp: variables.tf
Mã:
biến "access_key" { description = "Khóa truy cập của người dùng AWS IAM"}biến "secret_key" { description = "Khóa bí mật của người dùng AWS IAM"}biến "sns_name" { description = "Tên của chủ đề SNS sẽ được tạo" default = "[B]my_first_sns[/b]"}biến "account_id" { description = "Số tài khoản của tôi" default = "[B][/b]"}

Tạo chủ đề SNS bằng các tệp cấu hình Terraform.​

Sau khi bạn có main.tf, terraform.tfvarsvariables.tf, bạn đã sẵn sàng tạo chủ đề SNS sử dụng Terraform.

Sau đây là lệnh đầu tiên để khởi tạo thư mục làm việc chứa các tệp cấu hình Terraform.
Mã:
terraform init


Lệnh tiếp theo như sau để tạo một kế hoạch thực thi. Tại đây, bạn có thể biết tất cả những thay đổi nào sẽ diễn ra.
Mã:
terraform plan


Bây giờ bạn đã sẵn sàng áp dụng các thay đổi cần thiết để đạt được trạng thái mong muốn của cấu hình bằng lệnh sau. Thao tác này sẽ tạo một chủ đề SNS trong tài khoản AWS của bạn theo vùng đã chỉ định.
Mã:
terraform apply


Bây giờ bạn có thể vào AWS SNS Console để xác nhận rằng chủ đề đã được tạo.


Xóa chủ đề SNS đã tạo bằng Terraform​

Khi bạn không còn cần chủ đề SNS đã tạo và muốn xóa chủ đề đó, bạn không cần phải vào AWS console và xóa chủ đề đó khỏi đó. Thay vào đó, bạn có thể xóa chủ đề đó bằng lệnh sau rất dễ dàng. Lệnh sau sẽ xóa chủ đề SNS sau khi bạn xác nhận xóa. Không thể đảo ngược thao tác này, vì vậy hãy cẩn thận khi thực hiện thao tác hủy trên máy chủ Sản xuất.
Mã:
terraform destroy

Kết luận​

Trong bài viết này, chúng tôi đã tạo một chủ đề SNS có chính sách truy cập được đính kèm trong "region = eu-west-3". Chúng tôi đã thực hiện hoạt động này bằng Terraform, đồng thời chúng tôi cũng thấy chủ đề SNS mà chúng tôi tạo có thể dễ dàng bị xóa bằng Terraform chỉ bằng một lệnh.
 
Back
Bên trên